Merge branch 'no-pods'

This commit is contained in:
John Lyon-Smith
2018-03-27 13:37:54 -07:00
179 changed files with 4288 additions and 4789 deletions

View File

@@ -20,9 +20,14 @@
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
52672F4E206ADBC1008EB6EA /* libReactNativeNavigation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52672F4D206ADB92008EB6EA /* libReactNativeNavigation.a */; };
52672F5C206ADE32008EB6EA /* libAirMaps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52672F5B206ADE27008EB6EA /* libAirMaps.a */; };
52672F5E206ADF2F008EB6EA /* GoogleMapsBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52672F5D206ADF2F008EB6EA /* GoogleMapsBase.framework */; };
52672F61206ADF52008EB6EA /* GoogleMapsCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52672F5F206ADF51008EB6EA /* GoogleMapsCore.framework */; };
52672F62206ADF52008EB6EA /* GoogleMaps.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52672F60206ADF52008EB6EA /* GoogleMaps.framework */; };
52672F64206ADFAF008EB6EA /* GoogleMaps.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 52672F63206ADFAF008EB6EA /* GoogleMaps.bundle */; };
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
88F540F40BBC4FBFA998D0C5 /* libPods-DeightonAR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88D92A34F12356D40E6650A /* libPods-DeightonAR.a */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
/* End PBXBuildFile section */
@@ -195,55 +200,62 @@
remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
remoteInfo = "jschelpers-tvOS";
};
52222220204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D44A206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 139D7ECE1E25DB7D00323FB7;
remoteInfo = "third-party";
};
52222222204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D44C206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3D383D3C1EBD27B6005632C8;
remoteInfo = "third-party-tvOS";
};
52222224204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D44E206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 139D7E881E25C6D100323FB7;
remoteInfo = "double-conversion";
};
52222226204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D450206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 3D383D621EBD27B9005632C8;
remoteInfo = "double-conversion-tvOS";
};
52222228204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D452206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F3131F5F2E4B0010BF04;
remoteInfo = privatedata;
};
5222222A204EF0C6001F223F /* PBXContainerItemProxy */ = {
5247D454206A913500F792F6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04;
remoteInfo = "privatedata-tvOS";
};
5222222D204EF0C6001F223F /* PBXContainerItemProxy */ = {
52672F4C206ADB92008EB6EA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 522221F4204EF0C6001F223F /* ReactNativeNavigation.xcodeproj */;
containerPortal = 52672F25206ADB92008EB6EA /* ReactNativeNavigation.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = D8AFADBD1BEE6F3F00A4592D;
remoteInfo = ReactNativeNavigation;
};
52672F5A206ADE27008EB6EA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 52672F56206ADE27008EB6EA /* AirMaps.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 11FA5C511C4A1296003AC2EE;
remoteInfo = AirMaps;
};
5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
@@ -288,7 +300,6 @@
00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = "<group>"; };
00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = "<group>"; };
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = "<group>"; };
0E041CC8598E28FECB495366 /* Pods-DeightonARTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeightonARTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-DeightonARTests/Pods-DeightonARTests.release.xcconfig"; sourceTree = "<group>"; };
139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = "<group>"; };
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* DeightonAR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DeightonAR.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -299,17 +310,17 @@
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = DeightonAR/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = DeightonAR/main.m; sourceTree = "<group>"; };
146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
26500836C6629653F8E3F616 /* Pods-DeightonAR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeightonAR.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR.debug.xcconfig"; sourceTree = "<group>"; };
2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
342FE56F63101E1A79A0BE57 /* Pods-DeightonARTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeightonARTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-DeightonARTests/Pods-DeightonARTests.debug.xcconfig"; sourceTree = "<group>"; };
522221F4204EF0C6001F223F /* ReactNativeNavigation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeNavigation.xcodeproj; path = "../node_modules/react-native-navigation/ios/ReactNativeNavigation.xcodeproj"; sourceTree = "<group>"; };
52672F25206ADB92008EB6EA /* ReactNativeNavigation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeNavigation.xcodeproj; path = "../node_modules/react-native-navigation/ios/ReactNativeNavigation.xcodeproj"; sourceTree = "<group>"; };
52672F56206ADE27008EB6EA /* AirMaps.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AirMaps.xcodeproj; path = "../node_modules/react-native-maps/lib/ios/AirMaps.xcodeproj"; sourceTree = "<group>"; };
52672F5D206ADF2F008EB6EA /* GoogleMapsBase.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleMapsBase.framework; sourceTree = "<group>"; };
52672F5F206ADF51008EB6EA /* GoogleMapsCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleMapsCore.framework; sourceTree = "<group>"; };
52672F60206ADF52008EB6EA /* GoogleMaps.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = GoogleMaps.framework; sourceTree = "<group>"; };
52672F63206ADFAF008EB6EA /* GoogleMaps.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = GoogleMaps.bundle; path = GoogleMaps.framework/Resources/GoogleMaps.bundle; sourceTree = "<group>"; };
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
9EDEA397396D8A4D28303D85 /* Pods-DeightonAR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-DeightonAR.release.xcconfig"; path = "Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR.release.xcconfig"; sourceTree = "<group>"; };
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
B88D92A34F12356D40E6650A /* libPods-DeightonAR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeightonAR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
C0E17195E045A442F1ACA3DF /* libPods-DeightonARTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-DeightonARTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -317,9 +328,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
52672F5C206ADE32008EB6EA /* libAirMaps.a in Frameworks */,
52672F4E206ADBC1008EB6EA /* libReactNativeNavigation.a in Frameworks */,
52672F61206ADF52008EB6EA /* GoogleMapsCore.framework in Frameworks */,
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
52672F62206ADF52008EB6EA /* GoogleMaps.framework in Frameworks */,
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
@@ -328,9 +343,9 @@
00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */,
139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */,
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
52672F5E206ADF2F008EB6EA /* GoogleMapsBase.framework in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
88F540F40BBC4FBFA998D0C5 /* libPods-DeightonAR.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -424,41 +439,39 @@
3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
52222221204EF0C6001F223F /* libthird-party.a */,
52222223204EF0C6001F223F /* libthird-party.a */,
52222225204EF0C6001F223F /* libdouble-conversion.a */,
52222227204EF0C6001F223F /* libdouble-conversion.a */,
52222229204EF0C6001F223F /* libprivatedata.a */,
5222222B204EF0C6001F223F /* libprivatedata-tvOS.a */,
5247D44B206A913500F792F6 /* libthird-party.a */,
5247D44D206A913500F792F6 /* libthird-party.a */,
5247D44F206A913500F792F6 /* libdouble-conversion.a */,
5247D451206A913500F792F6 /* libdouble-conversion.a */,
5247D453206A913500F792F6 /* libprivatedata.a */,
5247D455206A913500F792F6 /* libprivatedata-tvOS.a */,
);
name = Products;
sourceTree = "<group>";
};
259BCB60615F1831976ED6A6 /* Pods */ = {
isa = PBXGroup;
children = (
26500836C6629653F8E3F616 /* Pods-DeightonAR.debug.xcconfig */,
9EDEA397396D8A4D28303D85 /* Pods-DeightonAR.release.xcconfig */,
342FE56F63101E1A79A0BE57 /* Pods-DeightonARTests.debug.xcconfig */,
0E041CC8598E28FECB495366 /* Pods-DeightonARTests.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
isa = PBXGroup;
children = (
52672F60206ADF52008EB6EA /* GoogleMaps.framework */,
52672F5F206ADF51008EB6EA /* GoogleMapsCore.framework */,
52672F5D206ADF2F008EB6EA /* GoogleMapsBase.framework */,
2D16E6891FA4F8E400B85C8A /* libReact.a */,
B88D92A34F12356D40E6650A /* libPods-DeightonAR.a */,
C0E17195E045A442F1ACA3DF /* libPods-DeightonARTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
522221F5204EF0C6001F223F /* Products */ = {
52672F26206ADB92008EB6EA /* Products */ = {
isa = PBXGroup;
children = (
5222222E204EF0C6001F223F /* libReactNativeNavigation.a */,
52672F4D206ADB92008EB6EA /* libReactNativeNavigation.a */,
);
name = Products;
sourceTree = "<group>";
};
52672F57206ADE27008EB6EA /* Products */ = {
isa = PBXGroup;
children = (
52672F5B206ADE27008EB6EA /* libAirMaps.a */,
);
name = Products;
sourceTree = "<group>";
@@ -484,7 +497,8 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
522221F4204EF0C6001F223F /* ReactNativeNavigation.xcodeproj */,
52672F56206ADE27008EB6EA /* AirMaps.xcodeproj */,
52672F25206ADB92008EB6EA /* ReactNativeNavigation.xcodeproj */,
5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
@@ -516,8 +530,8 @@
13B07FAE1A68108700A75B9A /* DeightonAR */,
832341AE1AAA6A7D00B99B32 /* Libraries */,
83CBBA001A601CBA00E9B192 /* Products */,
52672F63206ADFAF008EB6EA /* GoogleMaps.bundle */,
2D16E6871FA4F8E400B85C8A /* Frameworks */,
259BCB60615F1831976ED6A6 /* Pods */,
);
indentWidth = 2;
sourceTree = "<group>";
@@ -548,13 +562,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "DeightonAR" */;
buildPhases = (
7338DA75E702CF17485D1AA9 /* [CP] Check Pods Manifest.lock */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
4F814743B7EC827F89C63E39 /* [CP] Embed Pods Frameworks */,
C4F94014FA5DFDCBA6DE4978 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -573,11 +584,6 @@
attributes = {
LastUpgradeCheck = 0610;
ORGANIZATIONNAME = Facebook;
TargetAttributes = {
13B07F861A680F5B00A75B9A = {
DevelopmentTeam = 5PFR8VT5ZW;
};
};
};
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "DeightonAR" */;
compatibilityVersion = "Xcode 3.2";
@@ -591,6 +597,10 @@
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = 52672F57206ADE27008EB6EA /* Products */;
ProjectRef = 52672F56206ADE27008EB6EA /* AirMaps.xcodeproj */;
},
{
ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */;
ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
@@ -640,8 +650,8 @@
ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */;
},
{
ProductGroup = 522221F5204EF0C6001F223F /* Products */;
ProjectRef = 522221F4204EF0C6001F223F /* ReactNativeNavigation.xcodeproj */;
ProductGroup = 52672F26206ADB92008EB6EA /* Products */;
ProjectRef = 52672F25206ADB92008EB6EA /* ReactNativeNavigation.xcodeproj */;
},
);
projectRoot = "";
@@ -820,53 +830,60 @@
remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52222221204EF0C6001F223F /* libthird-party.a */ = {
5247D44B206A913500F792F6 /* libthird-party.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libthird-party.a";
remoteRef = 52222220204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D44A206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52222223204EF0C6001F223F /* libthird-party.a */ = {
5247D44D206A913500F792F6 /* libthird-party.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libthird-party.a";
remoteRef = 52222222204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D44C206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52222225204EF0C6001F223F /* libdouble-conversion.a */ = {
5247D44F206A913500F792F6 /* libdouble-conversion.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libdouble-conversion.a";
remoteRef = 52222224204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D44E206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52222227204EF0C6001F223F /* libdouble-conversion.a */ = {
5247D451206A913500F792F6 /* libdouble-conversion.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libdouble-conversion.a";
remoteRef = 52222226204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D450206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52222229204EF0C6001F223F /* libprivatedata.a */ = {
5247D453206A913500F792F6 /* libprivatedata.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libprivatedata.a;
remoteRef = 52222228204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D452206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
5222222B204EF0C6001F223F /* libprivatedata-tvOS.a */ = {
5247D455206A913500F792F6 /* libprivatedata-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libprivatedata-tvOS.a";
remoteRef = 5222222A204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 5247D454206A913500F792F6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
5222222E204EF0C6001F223F /* libReactNativeNavigation.a */ = {
52672F4D206ADB92008EB6EA /* libReactNativeNavigation.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libReactNativeNavigation.a;
remoteRef = 5222222D204EF0C6001F223F /* PBXContainerItemProxy */;
remoteRef = 52672F4C206ADB92008EB6EA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
52672F5B206ADE27008EB6EA /* libAirMaps.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libAirMaps.a;
remoteRef = 52672F5A206ADE27008EB6EA /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
@@ -911,6 +928,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
52672F64206ADFAF008EB6EA /* GoogleMaps.bundle in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
);
@@ -933,60 +951,6 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
};
4F814743B7EC827F89C63E39 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR-frameworks.sh",
"${PODS_ROOT}/../../node_modules/react-viro/ios/dist/ViroRenderer/ViroKit.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ViroKit.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
7338DA75E702CF17485D1AA9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-DeightonAR-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
C4F94014FA5DFDCBA6DE4978 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR-resources.sh",
"${PODS_ROOT}/GoogleMaps/Maps/Frameworks/GoogleMaps.framework/Resources/GoogleMaps.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleMaps.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-DeightonAR/Pods-DeightonAR-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -1016,15 +980,19 @@
/* Begin XCBuildConfiguration section */
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 26500836C6629653F8E3F616 /* Pods-DeightonAR.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = 5PFR8VT5ZW;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../node_modules/react-native-navigation/ios/**",
"$(SRCROOT)/../node_modules/react-native-maps/lib/ios/AirMaps/**",
);
INFOPLIST_FILE = DeightonAR/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
@@ -1038,14 +1006,18 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9EDEA397396D8A4D28303D85 /* Pods-DeightonAR.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 5PFR8VT5ZW;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/../node_modules/react-native-navigation/ios/**",
"$(SRCROOT)/../node_modules/react-native-maps/lib/ios/AirMaps/**",
);
INFOPLIST_FILE = DeightonAR/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
@@ -1095,6 +1067,7 @@
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = iphoneos;
};
name = Debug;
@@ -1130,6 +1103,7 @@
HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-navigation/ios";
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};

View File

@@ -54,7 +54,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
@@ -84,7 +83,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@@ -10,18 +10,5 @@
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>2D02E47A1E0B4A5D006451C7</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>2D02E48F1E0B4A5D006451C7</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:DeightonAR.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

View File

@@ -9,49 +9,48 @@
#import "AppDelegate.h"
//#import <ViroReact/VRTBundleURLProvider.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
// RNN: react-native-navigation
#import "RCCManager.h"
// RNM: react-native-maps
// See https://developers.google.com/maps/documentation/ios-sdk/start
// and https://gist.github.com/dmachat/412658416dc7dcf3f7a829b7a10c2583
@import GoogleMaps;
/*
#import <ViroReact/VRTBundleURLProvider.h>
*/
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;
#ifdef DEBUG
// VRTBundleURLProvider *bundleProvider = [[VRTBundleURLProvider alloc] init];
// jsCodeLocation = [bundleProvider jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
//
// if (jsCodeLocation == nil) {
/*
VRTBundleURLProvider *bundleProvider = [[VRTBundleURLProvider alloc] init];
jsCodeLocation = [bundleProvider jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
if (jsCodeLocation == nil) {
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
// }
}
*/
[GMSServices provideAPIKey:@"AIzaSyDN4E_vzO4cKjKHkMg_49hX1GBnU34kx4U"];
NSURL *jsCodeLocation;
#ifdef DEBUG
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
// Bootstrap RNN. See https://github.com/wix/react-native-navigation/blob/master/example/ios/example/AppDelegate.m
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[[RCCManager sharedInstance] initBridgeWithBundleURL:jsCodeLocation launchOptions:launchOptions];
[GMSServices provideAPIKey:@"AIzaSyDN4E_vzO4cKjKHkMg_49hX1GBnU34kx4U"];
/*
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"DeightonAR"
initialProperties:nil
launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
*/
return YES;
}

View File

@@ -3,4 +3,4 @@
"version" : 1,
"author" : "xcode"
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,75 @@
//
// GMSAddress.h
// Google Maps SDK for iOS
//
// Copyright 2014 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#if __has_feature(modules)
@import GoogleMapsBase;
#else
#import <GoogleMapsBase/GoogleMapsBase.h>
#endif
NS_ASSUME_NONNULL_BEGIN;
/**
* A result from a reverse geocode request, containing a human-readable address. This class is
* immutable and should be obtained via GMSGeocoder.
*
* Some of the fields may be nil, indicating they are not present.
*/
@interface GMSAddress : NSObject<NSCopying>
/** Location, or kLocationCoordinate2DInvalid if unknown. */
@property(nonatomic, readonly) CLLocationCoordinate2D coordinate;
/** Street number and name. */
@property(nonatomic, copy, readonly, nullable) NSString *thoroughfare;
/** Locality or city. */
@property(nonatomic, copy, readonly, nullable) NSString *locality;
/** Subdivision of locality, district or park. */
@property(nonatomic, copy, readonly, nullable) NSString *subLocality;
/** Region/State/Administrative area. */
@property(nonatomic, copy, readonly, nullable) NSString *administrativeArea;
/** Postal/Zip code. */
@property(nonatomic, copy, readonly, nullable) NSString *postalCode;
/** The country name. */
@property(nonatomic, copy, readonly, nullable) NSString *country;
/** An array of NSString containing formatted lines of the address. May be nil. */
@property(nonatomic, copy, readonly, nullable) NSArray<NSString *> *lines;
/**
* Returns the first line of the address.
*/
- (nullable NSString *)addressLine1 __GMS_AVAILABLE_BUT_DEPRECATED_MSG(
"This method is obsolete and will be removed in a future release. Use the lines property "
"instead.");
/**
* Returns the second line of the address.
*/
- (nullable NSString *)addressLine2 __GMS_AVAILABLE_BUT_DEPRECATED_MSG(
"This method is obsolete and will be removed in a future release. Use the lines property "
"instead.");
@end
/**
* The former type of geocode results (pre-1.7). This remains here for migration and will be
* removed in future releases.
*/
@compatibility_alias GMSReverseGeocodeResult GMSAddress;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,20 @@
//
// GMSCALayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <QuartzCore/QuartzCore.h>
/**
* GMSCALayer is a superclass used by layers in the Google Maps SDK for iOS, such as GMSMapLayer and
* GMSPanoramaLayer.
*
* This is an implementation detail and it should not be instantiated directly.
*/
@interface GMSCALayer : CALayer
@end

View File

@@ -0,0 +1,126 @@
//
// GMSCameraPosition.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreGraphics/CoreGraphics.h>
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* An immutable class that aggregates all camera position parameters.
*/
@interface GMSCameraPosition : NSObject<NSCopying, NSMutableCopying>
/**
* Location on the Earth towards which the camera points.
*/
@property(nonatomic, readonly) CLLocationCoordinate2D target;
/**
* Zoom level. Zoom uses an exponentional scale, where zoom 0 represents the entire world as a
* 256 x 256 square. Each successive zoom level increases magnification by a factor of 2. So at
* zoom level 1, the world is 512x512, and at zoom level 2, the entire world is 1024x1024.
*/
@property(nonatomic, readonly) float zoom;
/**
* Bearing of the camera, in degrees clockwise from true north.
*/
@property(nonatomic, readonly) CLLocationDirection bearing;
/**
* The angle, in degrees, of the camera from the nadir (directly facing the Earth). 0 is
* straight down, 90 is parallel to the ground. Note that the maximum angle allowed is dependent
* on the zoom. You can think of it as a series of line segments as a function of zoom, rather
* than a step function. For zoom 16 and above, the maximum angle is 65 degrees. For zoom 10 and
* below, the maximum angle is 30 degrees.
*/
@property(nonatomic, readonly) double viewingAngle;
/**
* Designated initializer. Configures this GMSCameraPosition with all available camera properties.
* Building a GMSCameraPosition via this initializer (or by the following convenience constructors)
* will implicitly clamp camera values.
*
* @param target Location on the earth towards which the camera points.
* @param zoom The zoom level near the center of the screen.
* @param bearing Bearing of the camera in degrees clockwise from true north.
* @param viewingAngle The angle, in degrees, of the camera angle from the nadir (directly facing
* the Earth)
*/
- (id)initWithTarget:(CLLocationCoordinate2D)target
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Convenience constructor for GMSCameraPosition for a particular target and zoom level. This will
* set the bearing and viewingAngle properties of this camera to zero defaults (i.e., directly
* facing the Earth's surface, with the top of the screen pointing north).
*/
+ (instancetype)cameraWithTarget:(CLLocationCoordinate2D)target zoom:(float)zoom;
/**
* Convenience constructor for GMSCameraPosition, as per cameraWithTarget:zoom:.
*/
+ (instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude
zoom:(float)zoom;
/**
* Convenience constructor for GMSCameraPosition, with all camera properties as per
* initWithTarget:zoom:bearing:viewingAngle:.
*/
+ (instancetype)cameraWithTarget:(CLLocationCoordinate2D)target
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Convenience constructor for GMSCameraPosition, with latitude/longitude and all other camera
* properties as per initWithTarget:zoom:bearing:viewingAngle:.
*/
+ (instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Get the zoom level at which |meters| distance, at given |coord| on Earth, correspond to the
* specified number of screen |points|.
*
* For extremely large or small distances the returned zoom level may be smaller or larger than the
* minimum or maximum zoom level allowed on the camera.
*
* This helper method is useful for building camera positions that contain specific physical areas
* on Earth.
*/
+ (float)zoomAtCoordinate:(CLLocationCoordinate2D)coordinate
forMeters:(CLLocationDistance)meters
perPoints:(CGFloat)points;
@end
/** Mutable version of GMSCameraPosition. */
@interface GMSMutableCameraPosition : GMSCameraPosition
@property(nonatomic, assign) CLLocationCoordinate2D target;
@property(nonatomic, assign) float zoom;
@property(nonatomic, assign) CLLocationDirection bearing;
@property(nonatomic, assign) double viewingAngle;
@end
/** The maximum zoom (closest to the Earth's surface) permitted by the map camera. */
FOUNDATION_EXTERN const float kGMSMaxZoomLevel;
/** The minimum zoom (farthest from the Earth's surface) permitted by the map camera. */
FOUNDATION_EXTERN const float kGMSMinZoomLevel;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,109 @@
//
// GMSCameraUpdate.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <UIKit/UIKit.h>
@class GMSCameraPosition;
@class GMSCoordinateBounds;
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSCameraUpdate represents an update that may be applied to a GMSMapView.
*
* It encapsulates some logic for modifying the current camera.
*
* It should only be constructed using the factory helper methods below.
*/
@interface GMSCameraUpdate : NSObject
/**
* Returns a GMSCameraUpdate that zooms in on the map.
*
* The zoom increment is 1.0.
*/
+ (GMSCameraUpdate *)zoomIn;
/**
* Returns a GMSCameraUpdate that zooms out on the map.
*
* The zoom increment is -1.0.
*/
+ (GMSCameraUpdate *)zoomOut;
/**
* Returns a GMSCameraUpdate that changes the zoom by the specified amount.
*/
+ (GMSCameraUpdate *)zoomBy:(float)delta;
/**
* Returns a GMSCameraUpdate that sets the zoom to the specified amount.
*/
+ (GMSCameraUpdate *)zoomTo:(float)zoom;
/**
* Returns a GMSCameraUpdate that sets the camera target to the specified coordinate.
*/
+ (GMSCameraUpdate *)setTarget:(CLLocationCoordinate2D)target;
/**
* Returns a GMSCameraUpdate that sets the camera target and zoom to the specified values.
*/
+ (GMSCameraUpdate *)setTarget:(CLLocationCoordinate2D)target zoom:(float)zoom;
/**
* Returns a GMSCameraUpdate that sets the camera to the specified GMSCameraPosition.
*/
+ (GMSCameraUpdate *)setCamera:(GMSCameraPosition *)camera;
/**
* Returns a GMSCameraUpdate that transforms the camera such that the specified bounds are centered
* on screen at the greatest possible zoom level. The bounds will have a default padding of 64
* points.
*
* The returned camera update will set the camera's bearing and tilt to their default zero values
* (i.e., facing north and looking directly at the Earth).
*/
+ (GMSCameraUpdate *)fitBounds:(GMSCoordinateBounds *)bounds;
/**
* This is similar to fitBounds: but allows specifying the padding (in points) in order to inset the
* bounding box from the view's edges.
*
* If the requested |padding| is larger than the view size in either the vertical or horizontal
* direction the map will be maximally zoomed out.
*/
+ (GMSCameraUpdate *)fitBounds:(GMSCoordinateBounds *)bounds withPadding:(CGFloat)padding;
/**
* This is similar to fitBounds: but allows specifying edge insets in order to inset the bounding
* box from the view's edges.
*
* If the requested |edgeInsets| are larger than the view size in either the vertical or horizontal
* direction the map will be maximally zoomed out.
*/
+ (GMSCameraUpdate *)fitBounds:(GMSCoordinateBounds *)bounds
withEdgeInsets:(UIEdgeInsets)edgeInsets;
/**
* Returns a GMSCameraUpdate that shifts the center of the view by the specified number of points in
* the x and y directions. X grows to the right, Y grows down.
*/
+ (GMSCameraUpdate *)scrollByX:(CGFloat)dX Y:(CGFloat)dY;
/**
* Returns a GMSCameraUpdate that zooms with a focus point; the focus point stays fixed on screen.
*/
+ (GMSCameraUpdate *)zoomBy:(float)zoom atPoint:(CGPoint)point;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,54 @@
//
// GMSCircle.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import "GMSOverlay.h"
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* A circle on the Earth's surface (spherical cap).
*/
@interface GMSCircle : GMSOverlay
/** Position on Earth of circle center. */
@property(nonatomic, assign) CLLocationCoordinate2D position;
/** Radius of the circle in meters; must be positive. */
@property(nonatomic, assign) CLLocationDistance radius;
/**
* The width of the circle's outline in screen points. Defaults to 1. As per GMSPolygon, the width
* does not scale when the map is zoomed.
*
* Setting strokeWidth to 0 results in no stroke.
*/
@property(nonatomic, assign) CGFloat strokeWidth;
/** The color of this circle's outline. The default value is black. */
@property(nonatomic, strong, nullable) UIColor *strokeColor;
/**
* The interior of the circle is painted with fillColor. The default value is nil, resulting in no
* fill.
*/
@property(nonatomic, strong, nullable) UIColor *fillColor;
/**
* Convenience constructor for GMSCircle for a particular position and radius. Other properties will
* have default values.
*/
+ (instancetype)circleWithPosition:(CLLocationCoordinate2D)position
radius:(CLLocationDistance)radius;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,43 @@
//
// GMSCoordinateBounds+GoogleMaps.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#if __has_feature(modules)
@import GoogleMapsBase;
#else
#import <GoogleMapsBase/GoogleMapsBase.h>
#endif
#import "GMSProjection.h"
@class GMSPath;
NS_ASSUME_NONNULL_BEGIN;
@interface GMSCoordinateBounds (GoogleMaps)
/**
* Inits with bounds that encompass |region|.
*/
- (id)initWithRegion:(GMSVisibleRegion)region;
/**
* Inits with bounds that encompass |path|.
*/
- (id)initWithPath:(GMSPath *)path;
/**
* Returns a GMSCoordinateBounds representing the current bounds extended to include |path|.
*/
- (GMSCoordinateBounds *)includingPath:(GMSPath *)path;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,74 @@
//
// GMSGeocoder.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import "GMSAddress.h"
NS_ASSUME_NONNULL_BEGIN;
@class GMSReverseGeocodeResponse;
/**
* \defgroup GeocoderErrorCode GMSGeocoderErrorCode
* @{
*/
/**
* GMSGeocoder error codes, embedded in NSError.
*/
typedef NS_ENUM(NSInteger, GMSGeocoderErrorCode) {
kGMSGeocoderErrorInvalidCoordinate = 1,
kGMSGeocoderErrorInternal,
};
/**@}*/
/**
* Handler that reports a reverse geocoding response, or error.
*
* @related GMSGeocoder
*/
typedef void (^GMSReverseGeocodeCallback)(GMSReverseGeocodeResponse *_Nullable,
NSError *_Nullable);
/**
* Exposes a service for reverse geocoding. This maps Earth coordinates (latitude and longitude) to
* a collection of addresses near that coordinate.
*/
@interface GMSGeocoder : NSObject
/* Convenience constructor for GMSGeocoder. */
+ (GMSGeocoder *)geocoder;
/**
* Reverse geocodes a coordinate on the Earth's surface.
*
* @param coordinate The coordinate to reverse geocode.
* @param handler The callback to invoke with the reverse geocode results.
* The callback will be invoked asynchronously from the main thread.
*/
- (void)reverseGeocodeCoordinate:(CLLocationCoordinate2D)coordinate
completionHandler:(GMSReverseGeocodeCallback)handler;
@end
/** A collection of results from a reverse geocode request. */
@interface GMSReverseGeocodeResponse : NSObject<NSCopying>
/** Returns the first result, or nil if no results were available. */
- (nullable GMSAddress *)firstResult;
/** Returns an array of all the results (contains GMSAddress), including the first result. */
- (nullable NSArray<GMSAddress *> *)results;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,243 @@
//
// GMSGeometryUtils.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
/**
* \defgroup GeometryUtils GMSGeometryUtils
* @{
*/
#import <CoreLocation/CoreLocation.h>
#import "GMSPath.h"
@class GMSPath;
@class GMSStrokeStyle;
@class GMSStyleSpan;
NS_ASSUME_NONNULL_BEGIN;
/** Average Earth radius in meters. */
static const CLLocationDistance kGMSEarthRadius = 6371009.0;
/**
* A point on the map. May represent a projected coordinate.
*
* x is in [-1, 1]. The axis direction is normal: y grows towards North, x grows towards East. (0,
* 0) is the center of the map.
*
* See GMSProject() and GMSUnproject().
*/
typedef struct GMSMapPoint {
double x;
double y;
} GMSMapPoint;
/** Projects |coordinate| to the map. |coordinate| must be valid. */
FOUNDATION_EXPORT
GMSMapPoint GMSProject(CLLocationCoordinate2D coordinate);
/** Unprojects |point| from the map. point.x must be in [-1, 1]. */
FOUNDATION_EXPORT
CLLocationCoordinate2D GMSUnproject(GMSMapPoint point);
/**
* Returns a linearly interpolated point on the segment [a, b], at the fraction |t| from |a|. |t|==0
* corresponds to |a|, |t|==1 corresponds to |b|.
*
* The interpolation takes place along the short path between the points potentially crossing the
* date line. E.g. interpolating from San Francisco to Tokyo will pass north of Hawaii and cross the
* date line.
*/
FOUNDATION_EXPORT
GMSMapPoint GMSMapPointInterpolate(GMSMapPoint a, GMSMapPoint b, double t);
/**
* Returns the length of the segment [a, b] in projected space.
*
* The length is computed along the short path between the points potentially crossing the date
* line. E.g. the distance between the points corresponding to San Francisco and Tokyo measures the
* segment that passes north of Hawaii crossing the date line.
*/
FOUNDATION_EXPORT
double GMSMapPointDistance(GMSMapPoint a, GMSMapPoint b);
/**
* Returns whether |point| lies inside of path. The path is always considered closed, regardless of
* whether the last point equals the first or not.
*
* Inside is defined as not containing the South Pole -- the South Pole is always outside.
*
* |path| describes great circle segments if |geodesic| is YES, and rhumb (loxodromic) segments
* otherwise.
*
* If |point| is exactly equal to one of the vertices, the result is YES. A point that is not equal
* to a vertex is on one side or the other of any path segment -- it can never be "exactly on the
* border".
*
* See GMSGeometryIsLocationOnPath() for a border test with tolerance.
*/
FOUNDATION_EXPORT
BOOL GMSGeometryContainsLocation(CLLocationCoordinate2D point, GMSPath *path, BOOL geodesic);
/**
* Returns whether |point| lies on or near |path|, within the specified |tolerance| in meters.
* |path| is composed of great circle segments if |geodesic| is YES, and of rhumb (loxodromic)
* segments if |geodesic| is NO.
*
* See also GMSGeometryIsLocationOnPath(point, path, geodesic).
*
* The tolerance, in meters, is relative to the spherical radius of the Earth. If you need to work
* on a sphere of different radius, you may compute the equivalent tolerance from the desired
* tolerance on the sphere of radius R: tolerance = toleranceR * (RadiusEarth / R), with
* RadiusEarth==6371009.
*/
FOUNDATION_EXPORT
BOOL GMSGeometryIsLocationOnPathTolerance(CLLocationCoordinate2D point,
GMSPath *path,
BOOL geodesic,
CLLocationDistance tolerance);
/**
* Same as GMSGeometryIsLocationOnPath(point, path, geodesic, tolerance), with a default tolerance
* of 0.1 meters.
*/
FOUNDATION_EXPORT
BOOL GMSGeometryIsLocationOnPath(CLLocationCoordinate2D point, GMSPath *path, BOOL geodesic);
/**
* Returns the great circle distance between two coordinates, in meters, on Earth.
*
* This is the shortest distance between the two coordinates on the sphere.
*
* Both coordinates must be valid.
*/
FOUNDATION_EXPORT
CLLocationDistance GMSGeometryDistance(CLLocationCoordinate2D from, CLLocationCoordinate2D to);
/**
* Returns the great circle length of |path|, in meters, on Earth.
*
* This is the sum of GMSGeometryDistance() over the path segments.
*
* All the coordinates of the path must be valid.
*/
FOUNDATION_EXPORT
CLLocationDistance GMSGeometryLength(GMSPath *path);
/**
* Returns the area of a geodesic polygon defined by |path| on Earth.
*
* The "inside" of the polygon is defined as not containing the South pole.
*
* If |path| is not closed, it is implicitly treated as a closed path nevertheless and the result is
* the same.
*
* All coordinates of the path must be valid.
*
* The polygon must be simple (not self-overlapping) and may be concave.
*
* If any segment of the path is a pair of antipodal points, the result is undefined -- because two
* antipodal points do not form a unique great circle segment on the sphere.
*/
FOUNDATION_EXPORT
double GMSGeometryArea(GMSPath *path);
/**
* Returns the signed area of a geodesic polygon defined by |path| on Earth.
*
* The result has the same absolute value as GMSGeometryArea(); it is positive if the points of path
* are in counter-clockwise order, and negative otherwise.
*
* The same restrictions as on GMSGeometryArea() apply.
*/
FOUNDATION_EXPORT
double GMSGeometrySignedArea(GMSPath *path);
/**
* Returns the initial heading (degrees clockwise of North) at |from| of the shortest path to |to|.
*
* The returned value is in the range [0, 360).
*
* Returns 0 if the two coordinates are the same.
*
* Both coordinates must be valid.
*
* To get the final heading at |to| one may use (GMSGeometryHeading(|to|, |from|) + 180) modulo 360.
*/
FOUNDATION_EXPORT
CLLocationDirection GMSGeometryHeading(CLLocationCoordinate2D from, CLLocationCoordinate2D to);
/**
* Returns the destination coordinate, when starting at |from| with initial |heading|, travelling
* |distance| meters along a great circle arc, on Earth.
*
* The resulting longitude is in the range [-180, 180).
*
* Both coordinates must be valid.
*/
FOUNDATION_EXPORT
CLLocationCoordinate2D GMSGeometryOffset(CLLocationCoordinate2D from,
CLLocationDistance distance,
CLLocationDirection heading);
/**
* Returns the coordinate that lies the given |fraction| of the way between the |from| and |to|
* coordinates on the shortest path between the two.
*
* The resulting longitude is in the range [-180, 180).
*/
FOUNDATION_EXPORT
CLLocationCoordinate2D GMSGeometryInterpolate(CLLocationCoordinate2D from,
CLLocationCoordinate2D to,
double fraction);
/**
* Returns an NSArray of GMSStyleSpan constructed by repeated application of style and length
* information from |styles| and |lengths| along |path|.
*
* |path| the path along which the output spans are computed.
* |styles| an NSArray of GMSStrokeStyle. Wraps if consumed. Can't be empty.
* |lengths| an NSArray of NSNumber; each entry gives the length of the corresponding
* style from |styles|. Wraps if consumed. Can't be empty.
* |lengthKind| the interpretation of values from |lengths| (geodesic, rhumb or projected).
*
* Example: a polyline with alternating black and white spans:
*
* <pre>
* GMSMutablePath *path;
* NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]],
* [GMSStrokeStyle solidColor:[UIColor blackColor]]];
* NSArray *lengths = @[@100000, @50000];
* polyline.path = path;
* polyline.spans = GMSStyleSpans(path, styles, lengths, kGMSLengthRhumb);
* </pre>
*/
FOUNDATION_EXPORT
NSArray<GMSStyleSpan *> *GMSStyleSpans(GMSPath *path,
NSArray<GMSStrokeStyle *> *styles,
NSArray<NSNumber *> *lengths,
GMSLengthKind lengthKind);
/**
* Similar to GMSStyleSpans(path, styles, lengths, lengthKind) but additionally takes an initial
* length offset that will be skipped over relative to the |lengths| array.
*
* |lengthOffset| the length (e.g. in meters) that should be skipped initially from |lengths|.
*/
FOUNDATION_EXPORT
NSArray<GMSStyleSpan *> *GMSStyleSpansOffset(GMSPath *path,
NSArray<GMSStrokeStyle *> *styles,
NSArray<NSNumber *> *lengths,
GMSLengthKind lengthKind,
double lengthOffset);
/**@}*/
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,85 @@
//
// GMSGroundOverlay.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <UIKit/UIKit.h>
#import "GMSOverlay.h"
@class GMSCoordinateBounds;
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSGroundOverlay specifies the available options for a ground overlay that exists on the Earth's
* surface. Unlike a marker, the position of a ground overlay is specified explicitly and it does
* not face the camera.
*/
@interface GMSGroundOverlay : GMSOverlay
/**
* The position of this GMSGroundOverlay, or more specifically, the physical position of its anchor.
* If this is changed, |bounds| will be moved around the new position.
*/
@property(nonatomic, assign) CLLocationCoordinate2D position;
/**
* The anchor specifies where this GMSGroundOverlay is anchored to the Earth in relation to
* |bounds|. If this is modified, |position| will be set to the corresponding new position within
* |bounds|.
*/
@property(nonatomic, assign) CGPoint anchor;
/**
* Icon to render within |bounds| on the Earth. If this is nil, the overlay will not be visible
* (unlike GMSMarker which has a default image).
*/
@property(nonatomic, strong, nullable) UIImage *icon;
/**
* Sets the opacity of the ground overlay, between 0 (completely transparent) and 1 (default)
* inclusive.
*/
@property(nonatomic, assign) float opacity;
/**
* Bearing of this ground overlay, in degrees. The default value, zero, points this ground overlay
* up/down along the normal Y axis of the earth.
*/
@property(nonatomic, assign) CLLocationDirection bearing;
/**
* The 2D bounds on the Earth in which |icon| is drawn. Changing this value will adjust |position|
* accordingly.
*/
@property(nonatomic, strong, nullable) GMSCoordinateBounds *bounds;
/**
* Convenience constructor for GMSGroundOverlay for a particular |bounds| and |icon|. Will set
* |position| accordingly.
*/
+ (instancetype)groundOverlayWithBounds:(nullable GMSCoordinateBounds *)bounds
icon:(nullable UIImage *)icon;
/**
* Constructs a GMSGroundOverlay that renders the given |icon| at |position|, as if the image's
* actual size matches camera pixels at |zoomLevel|.
*/
+ (instancetype)groundOverlayWithPosition:(CLLocationCoordinate2D)position
icon:(nullable UIImage *)icon
zoomLevel:(CGFloat)zoomLevel;
@end
/**
* The default position of the ground anchor of a GMSGroundOverlay: the center point of the icon.
*/
FOUNDATION_EXTERN const CGPoint kGMSGroundOverlayDefaultAnchor;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,41 @@
//
// GMSIndoorBuilding.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
@class GMSIndoorLevel;
/**
* Describes a building which contains levels.
*/
@interface GMSIndoorBuilding : NSObject
/**
* Array of GMSIndoorLevel describing the levels which make up the building.
* The levels are in 'display order' from top to bottom.
*/
@property(nonatomic, strong, readonly) NSArray<GMSIndoorLevel *> *levels;
/**
* Index in the levels array of the default level.
*/
@property(nonatomic, assign, readonly) NSUInteger defaultLevelIndex;
/**
* If YES, the building is entirely underground and supports being hidden.
*/
@property(nonatomic, assign, readonly, getter=isUnderground) BOOL underground;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,66 @@
//
// GMSIndoorDisplay.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
@class GMSIndoorBuilding;
@class GMSIndoorLevel;
NS_ASSUME_NONNULL_BEGIN;
/** Delegate for events on GMSIndoorDisplay. */
@protocol GMSIndoorDisplayDelegate<NSObject>
@optional
/**
* Raised when the activeBuilding has changed. The activeLevel will also have already been updated
* for the new building, but didChangeActiveLevel: will be raised after this method.
*/
- (void)didChangeActiveBuilding:(nullable GMSIndoorBuilding *)building;
/**
* Raised when the activeLevel has changed. This event is raised for all changes, including
* explicit setting of the property.
*/
- (void)didChangeActiveLevel:(nullable GMSIndoorLevel *)level;
@end
/**
* Provides ability to observe or control the display of indoor level data.
*
* Like GMSMapView, GMSIndoorDisplay may only be used from the main thread.
*/
@interface GMSIndoorDisplay : NSObject
/** GMSIndoorDisplay delegate */
@property(nonatomic, weak, nullable) id<GMSIndoorDisplayDelegate> delegate;
/**
* Provides the currently focused building, will be nil if there is no building with indoor data
* currently under focus.
*/
@property(nonatomic, strong, readonly, nullable) GMSIndoorBuilding *activeBuilding;
/**
* Provides and controls the active level for activeBuilding. Will be updated whenever
* activeBuilding changes, and may be set to any member of activeBuilding's levels property. May
* also be set to nil if the building is underground, to stop showing the building (the building
* will remain active).
*
* Will always be nil if activeBuilding is nil.
*
* Any attempt to set it to an invalid value will be ignored.
*/
@property(nonatomic, strong, nullable) GMSIndoorLevel *activeLevel;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,32 @@
//
// GMSIndoorLevel.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* Describes a single level in a building.
*
* Multiple buildings can share a level - in this case the level instances will compare as equal,
* even though the level numbers/names may be different.
*/
@interface GMSIndoorLevel : NSObject
/** Localized display name for the level, e.g. "Ground floor". */
@property(nonatomic, copy, readonly, nullable) NSString *name;
/** Localized short display name for the level, e.g. "1". */
@property(nonatomic, copy, readonly, nullable) NSString *shortName;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,110 @@
//
// GMSMapLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <QuartzCore/QuartzCore.h>
#import "GMSCALayer.h"
NS_ASSUME_NONNULL_BEGIN;
/*
* The following layer properties and constants describe the camera properties that may be animated
* on the custom model layer of a GMSMapView with Core Animation. For simple camera control and
* animation, please see the helper methods in GMSMapView+Animation.h, and the camera object
* definition within GMSCameraPosition.h.
*
* Changing layer properties triggers an implicit animation, e.g.:-
* mapView_.layer.cameraBearing = 20;
*
* An explicit animation, replacing the implicit animation, may be added after changing the
* property, for example:
* <pre>
* CAMediaTimingFunction *curve = [CAMediaTimingFunction functionWithName:
* kCAMediaTimingFunctionEaseInEaseOut];
* CABasicAnimation *animation =
* [CABasicAnimation animationWithKeyPath:kGMSLayerCameraBearingKey];
* animation.duration = 2.0f;
* animation.timingFunction = curve;
* animation.toValue = @20;
* [mapView_.layer addAnimation:animation forKey:kGMSLayerCameraBearingKey];
* </pre>
*
* To control several implicit animations, Core Animation's transaction support may be used, for
* example:
* <pre>
* [CATransaction begin];
* [CATransaction setAnimationDuration:2.0f];
* mapView_.layer.cameraBearing = 20;
* mapView_.layer.cameraViewingAngle = 30;
* [CATransaction commit];
* </pre>
*
* Note that these properties are not view-based. Please see "Animating View and Layer Changes
* Together" in the <a href="http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/AnimatingViews/AnimatingViews.html">
* View Programming Guide for iOS</a>.
*/
/**
* kGMSLayerCameraLatitudeKey ranges from [-85, 85], and values outside this range will be clamped.
*
* @related GMSMapLayer
*/
extern NSString *const kGMSLayerCameraLatitudeKey;
/**
* kGMSLayerCameraLongitudeKey ranges from [-180, 180), and values outside this range will be
* wrapped to within this range.
*
* @related GMSMapLayer
*/
extern NSString *const kGMSLayerCameraLongitudeKey;
/**
* kGMSLayerCameraBearingKey ranges from [0, 360), and values are wrapped.
*
* @related GMSMapLayer
*/
extern NSString *const kGMSLayerCameraBearingKey;
/**
* kGMSLayerCameraZoomLevelKey ranges from [kGMSMinZoomLevel, kGMSMaxZoomLevel], and values are
* clamped.
*
* @related GMSMapLayer
*/
extern NSString *const kGMSLayerCameraZoomLevelKey;
/**
* kGMSLayerCameraViewingAngleKey ranges from zero (i.e., facing straight down) and to between 30
* and 45 degrees towards the horizon, depending on the model zoom level.
*
* @related GMSMapLayer
*/
extern NSString *const kGMSLayerCameraViewingAngleKey;
/**
* GMSMapLayer is a custom subclass of CALayer, provided as the layer class on GMSMapView. This
* layer should not be instantiated directly. It provides model access to the camera normally
* defined on GMSMapView.
*
* Modifying or animating these properties will typically interrupt any current gesture on
* GMSMapView, e.g., a user's pan or rotation. Similarly, if a user performs an enabled gesture
* during an animation, the animation will stop 'in-place' (at the current presentation value).
*/
@interface GMSMapLayer : GMSCALayer
@property(nonatomic, assign) CLLocationDegrees cameraLatitude;
@property(nonatomic, assign) CLLocationDegrees cameraLongitude;
@property(nonatomic, assign) CLLocationDirection cameraBearing;
@property(nonatomic, assign) float cameraZoomLevel;
@property(nonatomic, assign) double cameraViewingAngle;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,47 @@
//
// GMSMapStyle.h
// Google Maps SDK for iOS
//
// Copyright 2016 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSMapStyle holds details about a style which can be applied to a map.
*
* With style options you can customize the presentation of the standard Google map styles, changing
* the visual display of features like roads, parks, and other points of interest. As well as
* changing the style of these features, you can also hide features entirely. This means that you
* can emphasize particular components of the map or make the map complement the content of your
* app.
*
* For more information see: https://developers.google.com/maps/documentation/ios-sdk/styling
*/
@interface GMSMapStyle : NSObject
/**
* Creates a style using a string containing JSON.
*
* Returns nil and populates |error| (if provided) if |style| is invalid.
*/
+ (nullable instancetype)styleWithJSONString:(NSString *)style
error:(NSError *__autoreleasing _Nullable *)error;
/**
* Creates a style using a file containing JSON.
*
* Returns nil and populates |error| (if provided) if |style| is invalid, the file cannot be read,
* or the URL is not a file URL.
*/
+ (nullable instancetype)styleWithContentsOfFileURL:(NSURL *)fileURL
error:(NSError *__autoreleasing _Nullable *)error;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,61 @@
//
// GMSMapView+Animation.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import "GMSMapView.h"
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSMapView (Animation) offers several animation helper methods.
*
* During any animation, retrieving the camera position through the camera property on GMSMapView
* returns an intermediate immutable GMSCameraPosition. This camera position will typically
* represent the most recently drawn frame.
*/
@interface GMSMapView (Animation)
/** Animates the camera of this map to |cameraPosition|. */
- (void)animateToCameraPosition:(GMSCameraPosition *)cameraPosition;
/**
* As animateToCameraPosition:, but changes only the location of the camera (i.e., from the current
* location to |location|).
*/
- (void)animateToLocation:(CLLocationCoordinate2D)location;
/**
* As animateToCameraPosition:, but changes only the zoom level of the camera.
*
* This value is clamped by [kGMSMinZoomLevel, kGMSMaxZoomLevel].
*/
- (void)animateToZoom:(float)zoom;
/**
* As animateToCameraPosition:, but changes only the bearing of the camera (in degrees). Zero
* indicates true north.
*/
- (void)animateToBearing:(CLLocationDirection)bearing;
/**
* As animateToCameraPosition:, but changes only the viewing angle of the camera (in degrees). This
* value will be clamped to a minimum of zero (i.e., facing straight down) and between 30 and 45
* degrees towards the horizon, depending on the relative closeness to the earth.
*/
- (void)animateToViewingAngle:(double)viewingAngle;
/**
* Applies |cameraUpdate| to the current camera, and then uses the result as per
* animateToCameraPosition:.
*/
- (void)animateWithCameraUpdate:(GMSCameraUpdate *)cameraUpdate;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,513 @@
//
// GMSMapView.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <UIKit/UIKit.h>
#if __has_feature(modules)
@import GoogleMapsBase;
#else
#import <GoogleMapsBase/GoogleMapsBase.h>
#endif
#if __has_feature(modules)
@import GoogleMapsBase;
#else
#import <GoogleMapsBase/GoogleMapsBase.h>
#endif
#import "GMSMapLayer.h"
#import "GMSUISettings.h"
@class GMSCameraPosition;
@class GMSCameraUpdate;
@class GMSCoordinateBounds;
@class GMSIndoorDisplay;
@class GMSMapLayer;
@class GMSMapStyle;
@class GMSMapView;
@class GMSMarker;
@class GMSOverlay;
@class GMSProjection;
NS_ASSUME_NONNULL_BEGIN;
/** Delegate for events on GMSMapView. */
@protocol GMSMapViewDelegate<NSObject>
@optional
/**
* Called before the camera on the map changes, either due to a gesture, animation (e.g., by a user
* tapping on the "My Location" button) or by being updated explicitly via the camera or a
* zero-length animation on layer.
*
* @param gesture If YES, this is occuring due to a user gesture.
*/
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture;
/**
* Called repeatedly during any animations or gestures on the map (or once, if the camera is
* explicitly set). This may not be called for all intermediate camera positions. It is always
* called for the final position of an animation or gesture.
*/
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position;
/**
* Called when the map becomes idle, after any outstanding gestures or animations have completed (or
* after the camera has been explicitly set).
*/
- (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)position;
/**
* Called after a tap gesture at a particular coordinate, but only if a marker was not tapped. This
* is called before deselecting any currently selected marker (the implicit action for tapping on
* the map).
*/
- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Called after a long-press gesture at a particular coordinate.
*
* @param mapView The map view that was tapped.
* @param coordinate The location that was tapped.
*/
- (void)mapView:(GMSMapView *)mapView didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Called after a marker has been tapped.
*
* @param mapView The map view that was tapped.
* @param marker The marker that was tapped.
* @return YES if this delegate handled the tap event, which prevents the map from performing its
* default selection behavior, and NO if the map should continue with its default selection
* behavior.
*/
- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker;
/**
* Called after a marker's info window has been tapped.
*/
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker;
/**
* Called after a marker's info window has been long pressed.
*/
- (void)mapView:(GMSMapView *)mapView didLongPressInfoWindowOfMarker:(GMSMarker *)marker;
/**
* Called after an overlay has been tapped.
*
* This method is not called for taps on markers.
*
* @param mapView The map view that was tapped.
* @param overlay The overlay that was tapped.
*/
- (void)mapView:(GMSMapView *)mapView didTapOverlay:(GMSOverlay *)overlay;
/**
* Called after a POI has been tapped.
*
* @param mapView The map view that was tapped.
* @param placeID The placeID of the POI that was tapped.
* @param name The name of the POI that was tapped.
* @param location The location of the POI that was tapped.
*/
- (void)mapView:(GMSMapView *)mapView
didTapPOIWithPlaceID:(NSString *)placeID
name:(NSString *)name
location:(CLLocationCoordinate2D)location;
/**
* Called when a marker is about to become selected, and provides an optional custom info window to
* use for that marker if this method returns a UIView.
*
* If you change this view after this method is called, those changes will not necessarily be
* reflected in the rendered version.
*
* The returned UIView must not have bounds greater than 500 points on either dimension. As there
* is only one info window shown at any time, the returned view may be reused between other info
* windows.
*
* Removing the marker from the map or changing the map's selected marker during this call results
* in undefined behavior.
*
* @return The custom info window for the specified marker, or nil for default
*/
- (nullable UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker;
/**
* Called when mapView:markerInfoWindow: returns nil. If this method returns a view, it will be
* placed within the default info window frame. If this method returns nil, then the default
* rendering will be used instead.
*
* @param mapView The map view that was pressed.
* @param marker The marker that was pressed.
* @return The custom view to display as contents in the info window, or nil to use the default
* content rendering instead
*/
- (nullable UIView *)mapView:(GMSMapView *)mapView markerInfoContents:(GMSMarker *)marker;
/**
* Called when the marker's info window is closed.
*/
- (void)mapView:(GMSMapView *)mapView didCloseInfoWindowOfMarker:(GMSMarker *)marker;
/**
* Called when dragging has been initiated on a marker.
*/
- (void)mapView:(GMSMapView *)mapView didBeginDraggingMarker:(GMSMarker *)marker;
/**
* Called after dragging of a marker ended.
*/
- (void)mapView:(GMSMapView *)mapView didEndDraggingMarker:(GMSMarker *)marker;
/**
* Called while a marker is dragged.
*/
- (void)mapView:(GMSMapView *)mapView didDragMarker:(GMSMarker *)marker;
/**
* Called when the My Location button is tapped.
*
* @return YES if the listener has consumed the event (i.e., the default behavior should not occur),
* NO otherwise (i.e., the default behavior should occur). The default behavior is for the
* camera to move such that it is centered on the user location.
*/
- (BOOL)didTapMyLocationButtonForMapView:(GMSMapView *)mapView;
/**
* Called when the My Location Dot is tapped.
*
* @param location The location of the user when the location dot was tapped.
*/
- (void)mapView:(GMSMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location;
/**
* Called when tiles have just been requested or labels have just started rendering.
*/
- (void)mapViewDidStartTileRendering:(GMSMapView *)mapView;
/**
* Called when all tiles have been loaded (or failed permanently) and labels have been rendered.
*/
- (void)mapViewDidFinishTileRendering:(GMSMapView *)mapView;
/**
* Called when map is stable (tiles loaded, labels rendered, camera idle) and overlay objects have
* been rendered.
*/
- (void)mapViewSnapshotReady:(GMSMapView *)mapView;
@end
/**
* \defgroup MapViewType GMSMapViewType
* @{
*/
/**
* Display types for GMSMapView.
*/
typedef NS_ENUM(NSUInteger, GMSMapViewType) {
/** Basic maps. The default. */
kGMSTypeNormal GMS_SWIFT_NAME_2_0_3_0(Normal, normal) = 1,
/** Satellite maps with no labels. */
kGMSTypeSatellite GMS_SWIFT_NAME_2_0_3_0(Satellite, satellite),
/** Terrain maps. */
kGMSTypeTerrain GMS_SWIFT_NAME_2_0_3_0(Terrain, terrain),
/** Satellite maps with a transparent label overview. */
kGMSTypeHybrid GMS_SWIFT_NAME_2_0_3_0(Hybrid, hybrid),
/** No maps, no labels. Display of traffic data is not supported. */
kGMSTypeNone GMS_SWIFT_NAME_2_0_3_0(None, none),
};
/**@}*/
/**
* \defgroup FrameRate GMSFrameRate
* @{
*/
/**
* Rendering frame rates for GMSMapView.
*/
typedef NS_ENUM(NSUInteger, GMSFrameRate) {
/** Use the minimum frame rate to conserve battery usage. */
kGMSFrameRatePowerSave,
/**
* Use a median frame rate to provide smoother rendering and conserve processing cycles.
*/
kGMSFrameRateConservative,
/**
* Use the maximum frame rate for a device. For low end devices this will be 30 FPS,
* for high end devices 60 FPS.
*/
kGMSFrameRateMaximum,
};
/**@}*/
/**
* \defgroup MapViewPaddingAdjustmentBehavior GMSMapViewPaddingAdjustmentBehavior
* @{
*/
/**
* Constants indicating how safe area insets are added to padding.
*/
typedef NS_ENUM(NSUInteger, GMSMapViewPaddingAdjustmentBehavior) {
/** Always include the safe area insets in the padding. */
kGMSMapViewPaddingAdjustmentBehaviorAlways,
/**
* When the padding value is smaller than the safe area inset for a particular edge, use the safe
* area value for layout, else use padding.
*/
kGMSMapViewPaddingAdjustmentBehaviorAutomatic,
/**
* Never include the safe area insets in the padding. This was the behavior prior to version 2.5.
*/
kGMSMapViewPaddingAdjustmentBehaviorNever,
};
/**@}*/
/**
* This is the main class of the Google Maps SDK for iOS and is the entry point for all methods
* related to the map.
*
* The map should be instantiated via the convenience constructor [GMSMapView mapWithFrame:camera:].
* It may also be created with the default [[GMSMapView alloc] initWithFrame:] method (wherein its
* camera will be set to a default location).
*
* GMSMapView can only be read and modified from the main thread, similar to all UIKit objects.
* Calling these methods from another thread will result in an exception or undefined behavior.
*/
@interface GMSMapView : UIView
/** GMSMapView delegate. */
@property(nonatomic, weak, nullable) IBOutlet id<GMSMapViewDelegate> delegate;
/**
* Controls the camera, which defines how the map is oriented. Modification of this property is
* instantaneous.
*/
@property(nonatomic, copy) GMSCameraPosition *camera;
/**
* Returns a GMSProjection object that you can use to convert between screen coordinates and
* latitude/longitude coordinates.
*
* This is a snapshot of the current projection, and will not automatically update when the camera
* moves. It represents either the projection of the last drawn GMSMapView frame, or; where the
* camera has been explicitly set or the map just created, the upcoming frame. It will never be nil.
*/
@property(nonatomic, readonly) GMSProjection *projection;
/**
* Controls whether the My Location dot and accuracy circle is enabled. Defaults to NO.
*/
@property(nonatomic, assign, getter=isMyLocationEnabled) BOOL myLocationEnabled;
/**
* If My Location is enabled, reveals where the user location dot is being drawn. If it is disabled,
* or it is enabled but no location data is available, this will be nil. This property is
* observable using KVO.
*/
@property(nonatomic, strong, readonly, nullable) CLLocation *myLocation;
/**
* The marker that is selected. Setting this property selects a particular marker, showing an info
* window on it. If this property is non-nil, setting it to nil deselects the marker, hiding the
* info window. This property is observable using KVO.
*/
@property(nonatomic, strong, nullable) GMSMarker *selectedMarker;
/**
* Controls whether the map is drawing traffic data, if available. This is subject to the
* availability of traffic data. Defaults to NO.
*/
@property(nonatomic, assign, getter=isTrafficEnabled) BOOL trafficEnabled;
/**
* Controls the type of map tiles that should be displayed. Defaults to kGMSTypeNormal.
*/
@property(nonatomic, assign) GMSMapViewType mapType;
/**
* Controls the style of the map.
*
* A non-nil mapStyle will only apply if mapType is Normal.
*/
@property(nonatomic, strong, nullable) GMSMapStyle *mapStyle;
/**
* Minimum zoom (the farthest the camera may be zoomed out). Defaults to kGMSMinZoomLevel. Modified
* with -setMinZoom:maxZoom:.
*/
@property(nonatomic, assign, readonly) float minZoom;
/**
* Maximum zoom (the closest the camera may be to the Earth). Defaults to kGMSMaxZoomLevel. Modified
* with -setMinZoom:maxZoom:.
*/
@property(nonatomic, assign, readonly) float maxZoom;
/**
* If set, 3D buildings will be shown where available. Defaults to YES.
*
* This may be useful when adding a custom tile layer to the map, in order to make it clearer at
* high zoom levels. Changing this value will cause all tiles to be briefly invalidated.
*/
@property(nonatomic, assign, getter=isBuildingsEnabled) BOOL buildingsEnabled;
/**
* Sets whether indoor maps are shown, where available. Defaults to YES.
*
* If this is set to NO, caches for indoor data may be purged and any floor currently selected by
* the end-user may be reset.
*/
@property(nonatomic, assign, getter=isIndoorEnabled) BOOL indoorEnabled;
/**
* Gets the GMSIndoorDisplay instance which allows to observe or control aspects of indoor data
* display.
*/
@property(nonatomic, strong, readonly) GMSIndoorDisplay *indoorDisplay;
/**
* Gets the GMSUISettings object, which controls user interface settings for the map.
*/
@property(nonatomic, strong, readonly) GMSUISettings *settings;
/**
* Controls the 'visible' region of the view. By applying padding an area around the edge of the
* view can be created which will contain map data but will not contain UI controls.
*
* If the padding is not balanced, the visual center of the view will move as appropriate. Padding
* will also affect the |projection| property so the visible region will not include the padding
* area. GMSCameraUpdate fitToBounds will ensure that both this padding and any padding requested
* will be taken into account.
*
* This property may be animated within a UIView-based animation block.
*/
@property(nonatomic, assign) UIEdgeInsets padding;
/**
* Controls how safe area insets are added to the padding values. Like padding, safe area insets
* position map controls such as the compass, my location button and floor picker within the device
* safe area.
*
* Defaults to kGMSMapViewPaddingAdjustmentBehaviorAlways.
*/
@property(nonatomic, assign) GMSMapViewPaddingAdjustmentBehavior paddingAdjustmentBehavior;
/**
* Defaults to YES. If set to NO, GMSMapView will generate accessibility elements for overlay
* objects, such as GMSMarker and GMSPolyline.
*
* This property is as per the informal UIAcessibility protocol, except for the default value of
* YES.
*/
@property(nonatomic) BOOL accessibilityElementsHidden;
/**
* Accessor for the custom CALayer type used for the layer.
*/
@property(nonatomic, readonly, retain) GMSMapLayer *layer;
/**
* Controls the rendering frame rate. Default value is kGMSFrameRateMaximum.
*/
@property(nonatomic, assign) GMSFrameRate preferredFrameRate;
/**
* If not nil, constrains the camera target so that gestures cannot cause it to leave the specified
* bounds.
*/
@property(nonatomic, strong, nullable) GMSCoordinateBounds *cameraTargetBounds;
/**
* Builds and returns a GMSMapView, with a frame and camera target.
*/
+ (instancetype)mapWithFrame:(CGRect)frame camera:(GMSCameraPosition *)camera;
/**
* Tells this map to power up its renderer. This is optional and idempotent.
*/
- (void)startRendering __GMS_AVAILABLE_BUT_DEPRECATED_MSG(
"This method is obsolete and will be removed in a future release.");
/**
* Tells this map to power down its renderer. This is optional and idempotent.
*/
- (void)stopRendering __GMS_AVAILABLE_BUT_DEPRECATED_MSG(
"This method is obsolete and will be removed in a future release.");
/**
* Clears all markup that has been added to the map, including markers, polylines and ground
* overlays. This will not clear the visible location dot or reset the current mapType.
*/
- (void)clear;
/**
* Sets |minZoom| and |maxZoom|. This method expects the minimum to be less than or equal to the
* maximum, and will throw an exception with name NSRangeException otherwise.
*/
- (void)setMinZoom:(float)minZoom maxZoom:(float)maxZoom;
/**
* Build a GMSCameraPosition that presents |bounds| with |padding|. The camera will have a zero
* bearing and tilt (i.e., facing north and looking directly at the Earth). This takes the frame and
* padding of this GMSMapView into account.
*
* If the bounds is invalid this method will return a nil camera.
*/
- (nullable GMSCameraPosition *)cameraForBounds:(GMSCoordinateBounds *)bounds
insets:(UIEdgeInsets)insets;
/**
* Changes the camera according to |update|. The camera change is instantaneous (with no animation).
*/
- (void)moveCamera:(GMSCameraUpdate *)update;
/**
* Check whether the given camera positions would practically cause the camera to be rendered the
* same, taking into account the level of precision and transformations used internally.
*/
- (BOOL)areEqualForRenderingPosition:(GMSCameraPosition *)position
position:(GMSCameraPosition *)otherPosition;
@end
/**
* Accessibility identifier for the compass button.
*
* @related GMSMapView
*/
extern NSString *const kGMSAccessibilityCompass;
/**
* Accessibility identifier for the "my location" button.
*
* @related GMSMapView
*/
extern NSString *const kGMSAccessibilityMyLocation;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,179 @@
//
// GMSMarker.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <UIKit/UIKit.h>
#import "GMSOverlay.h"
@class GMSMarkerLayer;
@class GMSPanoramaView;
@class UIImage;
NS_ASSUME_NONNULL_BEGIN;
/**
* \defgroup MarkerAnimation GMSMarkerAnimation
* @{
*/
/**
* Animation types for GMSMarker.
*/
typedef NS_ENUM(NSUInteger, GMSMarkerAnimation) {
/** No animation (default). */
kGMSMarkerAnimationNone = 0,
/** The marker will pop from its groundAnchor when added. */
kGMSMarkerAnimationPop,
};
/**@}*/
/**
* A marker is an icon placed at a particular point on the map's surface. A marker's icon is drawn
* oriented against the device's screen rather than the map's surface; i.e., it will not necessarily
* change orientation due to map rotations, tilting, or zooming.
*/
@interface GMSMarker : GMSOverlay
/** Marker position. Animated. */
@property(nonatomic, assign) CLLocationCoordinate2D position;
/** Snippet text, shown beneath the title in the info window when selected. */
@property(nonatomic, copy, nullable) NSString *snippet;
/**
* Marker icon to render. If left nil, uses a default SDK place marker.
*
* Supports animated images, but each frame must be the same size or the behavior is undefined.
*
* Supports the use of alignmentRectInsets to specify a reduced tap area. This also redefines how
* anchors are specified. For an animated image the value for the animation is used, not the
* individual frames.
*/
@property(nonatomic, strong, nullable) UIImage *icon;
/**
* Marker view to render. If left nil, falls back to the |icon| property instead.
*
* Supports animation of all animatable properties of UIView, except |frame| and |center|. Changing
* these properties or their corresponding CALayer version, including |position|, is not supported.
*
* Note that the view behaves as if |clipsToBounds| is set to YES, regardless of its actual value.
*/
@property(nonatomic, strong, nullable) UIView *iconView;
/**
* Controls whether the icon for this marker should be redrawn every frame.
*
* Note that when this changes from NO to YES, the icon is guaranteed to be redrawn next frame.
*
* Defaults to YES.
* Has no effect if |iconView| is nil.
*/
@property(nonatomic, assign) BOOL tracksViewChanges;
/**
* Controls whether the info window for this marker should be redrawn every frame.
*
* Note that when this changes from NO to YES, the info window is guaranteed to be redrawn next
* frame.
*
* Defaults to NO.
*/
@property(nonatomic, assign) BOOL tracksInfoWindowChanges;
/**
* The ground anchor specifies the point in the icon image that is anchored to the marker's position
* on the Earth's surface. This point is specified within the continuous space [0.0, 1.0] x [0.0,
* 1.0], where (0,0) is the top-left corner of the image, and (1,1) is the bottom-right corner.
*
* If the image has non-zero alignmentRectInsets, the top-left and bottom-right mentioned above
* refer to the inset section of the image.
*/
@property(nonatomic, assign) CGPoint groundAnchor;
/**
* The info window anchor specifies the point in the icon image at which to anchor the info window,
* which will be displayed directly above this point. This point is specified within the same space
* as groundAnchor.
*/
@property(nonatomic, assign) CGPoint infoWindowAnchor;
/**
* Controls the animation used when this marker is placed on a GMSMapView (default
* kGMSMarkerAnimationNone, no animation).
*/
@property(nonatomic, assign) GMSMarkerAnimation appearAnimation;
/**
* Controls whether this marker can be dragged interactively (default NO).
*/
@property(nonatomic, assign, getter=isDraggable) BOOL draggable;
/**
* Controls whether this marker should be flat against the Earth's surface (YES) or a billboard
* facing the camera (NO, default).
*/
@property(nonatomic, assign, getter=isFlat) BOOL flat;
/**
* Sets the rotation of the marker in degrees clockwise about the marker's anchor point. The axis of
* rotation is perpendicular to the marker. A rotation of 0 corresponds to the default position of
* the marker. Animated.
*
* When the marker is flat on the map, the default position is north aligned and the rotation is
* such that the marker always remains flat on the map. When the marker is a billboard, the default
* position is pointing up and the rotation is such that the marker is always facing the camera.
*/
@property(nonatomic, assign) CLLocationDegrees rotation;
/**
* Sets the opacity of the marker, between 0 (completely transparent) and 1 (default) inclusive.
*/
@property(nonatomic, assign) float opacity;
/**
* Provides the Core Animation layer for this GMSMarker.
*/
@property(nonatomic, strong, readonly) GMSMarkerLayer *layer;
/**
* The |panoramaView| specifies which panorama view will attempt to show this marker. Note that if
* the marker's |position| is too far away from the |panoramaView|'s current panorama location, it
* will not be displayed as it will be too small.
*
* Can be set to nil to remove the marker from any current panorama view it is attached to.
*
* A marker can be shown on both a panorama and a map at the same time.
*/
@property(nonatomic, weak, nullable) GMSPanoramaView *panoramaView;
/** Convenience constructor for a default marker. */
+ (instancetype)markerWithPosition:(CLLocationCoordinate2D)position;
/** Creates a tinted version of the default marker image for use as an icon. */
+ (UIImage *)markerImageWithColor:(nullable UIColor *)color;
@end
/**
* The default position of the ground anchor of a GMSMarker: the center bottom point of the marker
* icon.
*/
FOUNDATION_EXTERN const CGPoint kGMSMarkerDefaultGroundAnchor;
/**
* The default position of the info window anchor of a GMSMarker: the center top point of the marker
* icon.
*/
FOUNDATION_EXTERN const CGPoint kGMSMarkerDefaultInfoWindowAnchor;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,45 @@
//
// GMSMarkerLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <QuartzCore/QuartzCore.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSMarkerLayer is a custom subclass of CALayer, available on a per-marker basis, that allows
* animation of several properties of its associated GMSMarker.
*
* Note that this CALayer is never actually rendered directly, as GMSMapView is provided entirely
* via an OpenGL layer. As such, adjustments or animations to 'default' properties of CALayer will
* not have any effect.
*/
@interface GMSMarkerLayer : CALayer
/** Latitude, part of |position| on GMSMarker. */
@property(nonatomic, assign) CLLocationDegrees latitude;
/** Longitude, part of |position| on GMSMarker. */
@property(nonatomic, assign) CLLocationDegrees longitude;
/** Rotation, as per GMSMarker. */
@property(nonatomic, assign) CLLocationDegrees rotation;
/** Opacity, as per GMSMarker. */
@property(atomic, assign) float opacity;
@end
extern NSString *const kGMSMarkerLayerLatitude;
extern NSString *const kGMSMarkerLayerLongitude;
extern NSString *const kGMSMarkerLayerRotation;
extern NSString *const kGMSMarkerLayerOpacity;
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,60 @@
//
// GMSMutablePath.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import "GMSPath.h"
#import <CoreLocation/CoreLocation.h>
#import <Foundation/Foundation.h>
/**
* GMSMutablePath is a dynamic (resizable) array of CLLocationCoordinate2D. All coordinates must be
* valid. GMSMutablePath is the mutable counterpart to the immutable GMSPath.
*/
@interface GMSMutablePath : GMSPath
/** Adds |coord| at the end of the path. */
- (void)addCoordinate:(CLLocationCoordinate2D)coord;
/** Adds a new CLLocationCoordinate2D instance with the given lat/lng. */
- (void)addLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude;
/**
* Inserts |coord| at |index|.
*
* If this is smaller than the size of the path, shifts all coordinates forward by one. Otherwise,
* behaves as replaceCoordinateAtIndex:withCoordinate:.
*/
- (void)insertCoordinate:(CLLocationCoordinate2D)coord atIndex:(NSUInteger)index;
/**
* Replace the coordinate at |index| with |coord|. If |index| is after the end, grows the array with
* an undefined coordinate.
*/
- (void)replaceCoordinateAtIndex:(NSUInteger)index
withCoordinate:(CLLocationCoordinate2D)coord;
/**
* Remove entry at |index|.
*
* If |index| < count decrements size. If |index| >= count this is a silent no-op.
*/
- (void)removeCoordinateAtIndex:(NSUInteger)index;
/**
* Removes the last coordinate of the path.
*
* If the array is non-empty decrements size. If the array is empty, this is a silent no-op.
*/
- (void)removeLastCoordinate;
/** Removes all coordinates in this path. */
- (void)removeAllCoordinates;
@end

View File

@@ -0,0 +1,44 @@
//
// GMSOrientation.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
/**
* GMSOrientation is a tuple of heading and pitch used to control the viewing direction of a
* GMSPanoramaCamera.
*/
typedef struct {
/** The camera heading (horizontal angle) in degrees. */
const CLLocationDirection heading;
/**
* The camera pitch (vertical angle), in degrees from the horizon. The |pitch| range is [-90,90],
* although it is possible that not the full range is supported.
*/
const double pitch;
} GMSOrientation;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Returns a GMSOrientation with the given |heading| and |pitch|.
*
* @related GMSOrientation
*/
inline static GMSOrientation GMSOrientationMake(CLLocationDirection heading, double pitch) {
GMSOrientation orientation = {heading, pitch};
return orientation;
}
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,66 @@
//
// GMSOverlay.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN;
@class GMSMapView;
/**
* GMSOverlay is an abstract class that represents some overlay that may be attached to a specific
* GMSMapView. It may not be instantiated directly; instead, instances of concrete overlay types
* should be created directly (such as GMSMarker, GMSPolyline, and GMSPolygon).
*
* This supports the NSCopying protocol; [overlay_ copy] will return a copy of the overlay type, but
* with |map| set to nil.
*/
@interface GMSOverlay : NSObject<NSCopying>
/**
* Title, a short description of the overlay. Some overlays, such as markers, will display the title
* on the map. The title is also the default accessibility text.
*/
@property(nonatomic, copy, nullable) NSString *title;
/**
* The map this overlay is on. Setting this property will add the overlay to the map. Setting it to
* nil removes this overlay from the map. An overlay may be active on at most one map at any given
* time.
*/
@property(nonatomic, weak, nullable) GMSMapView *map;
/**
* If this overlay should cause tap notifications. Some overlays, such as markers, will default to
* being tappable.
*/
@property(nonatomic, assign, getter=isTappable) BOOL tappable;
/**
* Higher |zIndex| value overlays will be drawn on top of lower |zIndex| value tile layers and
* overlays. Equal values result in undefined draw ordering. Markers are an exception that
* regardless of |zIndex|, they will always be drawn above tile layers and other non-marker
* overlays; they are effectively considered to be in a separate z-index group compared to other
* overlays.
*/
@property(nonatomic, assign) int zIndex;
/**
* Overlay data. You can use this property to associate an arbitrary object with this overlay.
* Google Maps SDK for iOS neither reads nor writes this property.
*
* Note that userData should not hold any strong references to any Maps objects, otherwise a retain
* cycle may be created (preventing objects from being released).
*/
@property(nonatomic, strong, nullable) id userData;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,34 @@
//
// GMSPanorama.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN;
@class GMSPanoramaLink;
/**
* GMSPanorama represents metadata for a specific panorama on the Earth. This class is not
* instantiable directly and is obtained via GMSPanoramaService or GMSPanoramaView.
*/
@interface GMSPanorama : NSObject
/** The precise location of this panorama. */
@property(nonatomic, readonly) CLLocationCoordinate2D coordinate;
/** The ID of this panorama. Panoramas may change ID over time, so this should not be persisted */
@property(nonatomic, copy, readonly) NSString *panoramaID;
/** An array of GMSPanoramaLink describing the neighboring panoramas. */
@property(nonatomic, copy, readonly) NSArray<GMSPanoramaLink *> *links;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,81 @@
//
// GMSPanoramaCamera.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import "GMSOrientation.h"
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSPanoramaCamera is used to control the viewing direction of a GMSPanoramaView. It does not
* contain information about which particular panorama should be displayed.
*/
@interface GMSPanoramaCamera : NSObject
/**
* Designated initializer. Configures this GMSPanoramaCamera with |orientation|, |zoom| and |FOV|.
* These values will be clamped to acceptable ranges.
*/
- (id)initWithOrientation:(GMSOrientation)orientation zoom:(float)zoom FOV:(double)FOV;
/**
* Convenience constructor specifying heading and pitch as part of |orientation|, plus |zoom| and
* default field of view (90 degrees).
*/
+ (instancetype)cameraWithOrientation:(GMSOrientation)orientation zoom:(float)zoom;
/**
* Convenience constructor specifying |heading|, |pitch|, |zoom| with default field of view (90
* degrees).
*/
+ (instancetype)cameraWithHeading:(CLLocationDirection)heading pitch:(double)pitch zoom:(float)zoom;
/**
* Convenience constructor for GMSPanoramaCamera, specifying all camera properties with heading and
* pitch as part of |orientation|.
*/
+ (instancetype)cameraWithOrientation:(GMSOrientation)orientation zoom:(float)zoom FOV:(double)FOV;
/**
* Convenience constructor for GMSPanoramaCamera, specifying all camera properties.
*/
+ (instancetype)cameraWithHeading:(CLLocationDirection)heading
pitch:(double)pitch
zoom:(float)zoom
FOV:(double)FOV;
/**
* The field of view (FOV) encompassed by the larger dimension (width or height) of the view in
* degrees at zoom 1. This is clamped to the range [1, 160] degrees, and has a default value of 90.
*
* Lower FOV values produce a zooming in effect; larger FOV values produce an fisheye effect.
*
* Note: This is not the displayed FOV if zoom is anything other than 1. User zoom gestures
* control the zoom property, not this property.
*/
@property(nonatomic, assign, readonly) double FOV;
/**
* Adjusts the visible region of the screen. A zoom of N will show the same area as the central
* width/N height/N area of what is shown at zoom 1.
*
* Zoom is clamped to the implementation defined range [1, 5].
*/
@property(nonatomic, assign, readonly) float zoom;
/**
* The camera orientation, which groups together heading and pitch.
*/
@property(nonatomic, assign, readonly) GMSOrientation orientation;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,37 @@
//
// GMSPanoramaCameraUpdate.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreGraphics/CoreGraphics.h>
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSPanoramaCameraUpdate represents an update that may be applied to a GMSPanoramaView.
* It encapsulates some logic for modifying the current camera.
* It should only be constructed using the factory helper methods below.
*/
@interface GMSPanoramaCameraUpdate : NSObject
/** Returns an update that increments the camera heading with |deltaHeading|. */
+ (GMSPanoramaCameraUpdate *)rotateBy:(CGFloat)deltaHeading;
/** Returns an update that sets the camera heading to the given value. */
+ (GMSPanoramaCameraUpdate *)setHeading:(CGFloat)heading;
/** Returns an update that sets the camera pitch to the given value. */
+ (GMSPanoramaCameraUpdate *)setPitch:(CGFloat)pitch;
/** Returns an update that sets the camera zoom to the given value. */
+ (GMSPanoramaCameraUpdate *)setZoom:(CGFloat)zoom;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,57 @@
//
// GMSPanoramaLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <QuartzCore/QuartzCore.h>
#import "GMSCALayer.h"
NS_ASSUME_NONNULL_BEGIN;
/**
* kGMSLayerPanoramaHeadingKey ranges from [0, 360).
*
* @related GMSPanoramaLayer
*/
extern NSString *const kGMSLayerPanoramaHeadingKey;
/**
* kGMSLayerPanoramaPitchKey ranges from [-90, 90].
*
* @related GMSPanoramaLayer
*/
extern NSString *const kGMSLayerPanoramaPitchKey;
/**
* kGMSLayerCameraZoomLevelKey ranges from [1, 5], default 1.
*
* @related GMSPanoramaLayer
*/
extern NSString *const kGMSLayerPanoramaZoomKey;
/**
* kGMSLayerPanoramaFOVKey ranges from [1, 160] (in degrees), default 90.
*
* @related GMSPanoramaLayer
*/
extern NSString *const kGMSLayerPanoramaFOVKey;
/**
* GMSPanoramaLayer is a custom subclass of CALayer, provided as the layer class on GMSPanoramaView.
* This layer should not be instantiated directly.
*/
@interface GMSPanoramaLayer : GMSCALayer
@property(nonatomic, assign) CLLocationDirection cameraHeading;
@property(nonatomic, assign) double cameraPitch;
@property(nonatomic, assign) float cameraZoom;
@property(nonatomic, assign) double cameraFOV;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,30 @@
//
// GMSPanoramaLink.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreGraphics/CoreGraphics.h>
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
/** Links from a GMSPanorama to neighboring panoramas. */
@interface GMSPanoramaLink : NSObject
/** Angle of the neighboring panorama, clockwise from north in degrees. */
@property(nonatomic, assign) CGFloat heading;
/**
* Panorama ID for the neighboring panorama.
* Do not store this persistenly, it changes in time.
*/
@property(nonatomic, copy) NSString *panoramaID;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,83 @@
//
// GMSPanoramaService.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import "GMSPanoramaSource.h"
@class GMSPanorama;
NS_ASSUME_NONNULL_BEGIN;
/**
* Callback for when a panorama metadata becomes available.
* If an error occurred, |panorama| is nil and |error| is not nil.
* Otherwise, |panorama| is not nil and |error| is nil.
*
* @related GMSPanoramaService
*/
typedef void (^GMSPanoramaCallback)(GMSPanorama *_Nullable panorama, NSError *_Nullable error);
/**
* GMSPanoramaService can be used to request panorama metadata even when a GMSPanoramaView is not
* active.
*
* Get an instance like this: [[GMSPanoramaService alloc] init].
*/
@interface GMSPanoramaService : NSObject
/**
* Retrieves information about a panorama near the given |coordinate|.
*
* This is an asynchronous request, |callback| will be called with the result.
*/
- (void)requestPanoramaNearCoordinate:(CLLocationCoordinate2D)coordinate
callback:(GMSPanoramaCallback)callback;
/**
* Similar to requestPanoramaNearCoordinate:callback: but allows specifying a search radius (meters)
* around |coordinate|.
*/
- (void)requestPanoramaNearCoordinate:(CLLocationCoordinate2D)coordinate
radius:(NSUInteger)radius
callback:(GMSPanoramaCallback)callback;
/**
* Similar to requestPanoramaNearCoordinate:callback: but allows specifying the panorama source type
* near the given |coordinate|.
*
* This API is experimental and may not always filter by source.
*/
- (void)requestPanoramaNearCoordinate:(CLLocationCoordinate2D)coordinate
source:(GMSPanoramaSource)source
callback:(GMSPanoramaCallback)callback;
/**
* Similar to requestPanoramaNearCoordinate:callback: but allows specifying a search radius (meters)
* and the panorama source type near the given |coordinate|.
*
* This API is experimental and may not always filter by source.
*/
- (void)requestPanoramaNearCoordinate:(CLLocationCoordinate2D)coordinate
radius:(NSUInteger)radius
source:(GMSPanoramaSource)source
callback:(GMSPanoramaCallback)callback;
/**
* Retrieves information about a panorama with the given |panoramaID|.
*
* |callback| will be called with the result. Only panoramaIDs obtained from the Google Maps SDK for
* iOS are supported.
*/
- (void)requestPanoramaWithID:(NSString *)panoramaID callback:(GMSPanoramaCallback)callback;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,30 @@
//
// GMSPanoramaSource.h
// Google Maps SDK for iOS
//
// Copyright 2017 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
/**
* \defgroup PanoramaSource GMSPanoramaSource
* {@
*/
/**
* Source types for Panoramas. Used to specify the source of a StreetView Panorama.
*
* This API is experimental. Results may not always match expectations.
*/
typedef NS_ENUM(NSUInteger, GMSPanoramaSource) {
/** Panoramas of locations either inside or outside. */
kGMSPanoramaSourceDefault = 0,
/** Panoramas of locations outside. */
kGMSPanoramaSourceOutside,
};
/**@}*/

View File

@@ -0,0 +1,300 @@
//
// GMSPanoramaView.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
#import <UIKit/UIKit.h>
#import "GMSOrientation.h"
#import "GMSPanoramaLayer.h"
#import "GMSPanoramaSource.h"
@class GMSMarker;
@class GMSPanorama;
@class GMSPanoramaCamera;
@class GMSPanoramaCameraUpdate;
@class GMSPanoramaView;
NS_ASSUME_NONNULL_BEGIN;
/** Delegate for events on GMSPanoramaView. */
@protocol GMSPanoramaViewDelegate<NSObject>
@optional
/**
* Called when starting a move to another panorama.
*
* This can be the result of interactive navigation to a neighbouring panorama.
*
* At the moment this method is called, the |view|.panorama is still pointing to the old panorama,
* as the new panorama identified by |panoID| is not yet resolved. panoramaView:didMoveToPanorama:
* will be called when the new panorama is ready.
*/
- (void)panoramaView:(GMSPanoramaView *)view willMoveToPanoramaID:(NSString *)panoramaID;
/**
* This is invoked every time the |view|.panorama property changes.
*/
- (void)panoramaView:(GMSPanoramaView *)view
didMoveToPanorama:(nullable GMSPanorama *)panorama;
/**
* Called when the panorama change was caused by invoking moveToPanoramaNearCoordinate:. The
* coordinate passed to that method will also be passed here.
*/
- (void)panoramaView:(GMSPanoramaView *)view
didMoveToPanorama:(GMSPanorama *)panorama
nearCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Called when moveNearCoordinate: produces an error.
*/
- (void)panoramaView:(GMSPanoramaView *)view
error:(NSError *)error
onMoveNearCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Called when moveToPanoramaID: produces an error.
*/
- (void)panoramaView:(GMSPanoramaView *)view
error:(NSError *)error
onMoveToPanoramaID:(NSString *)panoramaID;
/**
* Called repeatedly during changes to the camera on GMSPanoramaView. This may not be called for all
* intermediate camera values, but is always called for the final position of the camera after an
* animation or gesture.
*/
- (void)panoramaView:(GMSPanoramaView *)panoramaView didMoveCamera:(GMSPanoramaCamera *)camera;
/**
* Called when a user has tapped on the GMSPanoramaView, but this tap was not consumed (taps may be
* consumed by e.g., tapping on a navigation arrow).
*/
- (void)panoramaView:(GMSPanoramaView *)panoramaView didTap:(CGPoint)point;
/**
* Called after a marker has been tapped. May return YES to indicate the event has been fully
* handled and suppress any default behavior.
*/
- (BOOL)panoramaView:(GMSPanoramaView *)panoramaView didTapMarker:(GMSMarker *)marker;
/**
* Called when the panorama tiles for the current view have just been requested and are beginning to
* load.
*/
- (void)panoramaViewDidStartRendering:(GMSPanoramaView *)panoramaView;
/**
* Called when the panorama tiles have been loaded (or permanently failed to load) and rendered on
* screen.
*/
- (void)panoramaViewDidFinishRendering:(GMSPanoramaView *)panoramaView;
@end
/**
* A panorama is used to display Street View imagery. It should be constructed via [[GMSPanoramaView
* alloc] initWithFrame:], and configured post-initialization.
*
* All properties and methods should be accessed on the main thread, similar to all UIKit objects.
* The GMSPanoramaViewDelegate methods will also be called back only on the main thread.
*
* The backgroundColor of this view is shown while no panorama is visible, such as while it is
* loading or if the panorama is later set to nil. The alpha color of backgroundColor is not
* supported.
*/
@interface GMSPanoramaView : UIView
/**
* The panorama to display; setting it will transition to a new panorama. This is animated, except
* for the initial panorama.
*
* Can be set to nil to clear the view.
*/
@property(nonatomic, strong, nullable) GMSPanorama *panorama;
/** GMSPanoramaView delegate. */
@property(nonatomic, weak, nullable) IBOutlet id<GMSPanoramaViewDelegate> delegate;
/**
* Sets the preference for whether all gestures should be enabled (default) or disabled.
*
* This does not limit programmatic movement of the camera or control of the panorama.
*/
- (void)setAllGesturesEnabled:(BOOL)enabled;
/**
* Controls whether orientation gestures are enabled (default) or disabled. If enabled, users may
* use gestures to change the orientation of the camera.
*
* This does not limit programmatic movement of the camera.
*/
@property(nonatomic, assign) BOOL orientationGestures;
/**
* Controls whether zoom gestures are enabled (default) or disabled. If enabled, users may pinch to
* zoom the camera.
*
* This does not limit programmatic movement of the camera.
*/
@property(nonatomic, assign) BOOL zoomGestures;
/**
* Controls whether navigation gestures are enabled (default) or disabled. If enabled, users may use
* a single tap on navigation links or double tap the view to change panoramas.
*
* This does not limit programmatic control of the panorama.
*/
@property(nonatomic, assign) BOOL navigationGestures;
/**
* Controls whether the tappable navigation links are hidden or visible (default). Hidden navigation
* links cannot be tapped.
*/
@property(nonatomic, assign) BOOL navigationLinksHidden;
/**
* Controls whether the street name overlays are hidden or visible (default).
*/
@property(nonatomic, assign) BOOL streetNamesHidden;
/**
* Controls the panorama's camera. Setting a new camera here jumps to the new camera value, with no
* animation.
*/
@property(nonatomic, strong) GMSPanoramaCamera *camera;
/**
* Accessor for the custom CALayer type used for the layer.
*/
@property(nonatomic, readonly, retain) GMSPanoramaLayer *layer;
/**
* Animates the camera of this GMSPanoramaView to |camera|, over |duration| (specified in seconds).
*/
- (void)animateToCamera:(GMSPanoramaCamera *)camera animationDuration:(NSTimeInterval)duration;
/**
* Modifies the camera according to |cameraUpdate|, over |duration| (specified in seconds).
*/
- (void)updateCamera:(GMSPanoramaCameraUpdate *)cameraUpdate
animationDuration:(NSTimeInterval)duration;
/**
* Requests a panorama near |coordinate|.
*
* Upon successful completion panoramaView:didMoveToPanorama: and
* panoramaView:didMoveToPanorama:nearCoordinate: will be sent to GMSPanoramaViewDelegate.
*
* On error panoramaView:error:onMoveNearCoordinate: will be sent.
*
* Repeated calls to moveNearCoordinate: result in the previous pending (incomplete) transitions
* being cancelled -- only the most recent of moveNearCoordinate: and moveToPanoramaId: will proceed
* and generate events.
*/
- (void)moveNearCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Similar to moveNearCoordinate: but allows specifying a search radius (meters) around
* |coordinate|.
*/
- (void)moveNearCoordinate:(CLLocationCoordinate2D)coordinate radius:(NSUInteger)radius;
/**
* Similar to moveNearCoordinate: but allows specifying a source near |coordinate|.
*
* This API is experimental and may not always filter by source.
*/
- (void)moveNearCoordinate:(CLLocationCoordinate2D)coordinate source:(GMSPanoramaSource)source;
/**
* Similar to moveNearCoordinate: but allows specifying a search radius (meters) around
* |coordinate| and a source.
*
* This API is experimental and may not always filter by source.
*/
- (void)moveNearCoordinate:(CLLocationCoordinate2D)coordinate
radius:(NSUInteger)radius
source:(GMSPanoramaSource)source;
/**
* Requests a panorama with |panoramaID|.
*
* Upon successful completion panoramaView:didMoveToPanorama: will be sent to
* GMSPanoramaViewDelegate.
*
* On error panoramaView:error:onMoveToPanoramaID: will be sent.
*
* Repeated calls to moveToPanoramaID: result in the previous pending (incomplete) transitions being
* cancelled -- only the most recent of moveNearCoordinate: and moveToPanoramaId: will proceed and
* generate events.
*
* Only panoramaIDs obtained from the Google Maps SDK for iOS are supported.
*/
- (void)moveToPanoramaID:(NSString *)panoramaID;
/**
* For the current view, returns the screen point the |orientation| points through. This value may
* be outside the view for forward facing orientations which are far enough away from straight
* ahead.
*
* The result will contain NaNs for camera orientations which point away from the view, where the
* implied screen point would have had a negative distance from the camera in the direction of
* orientation.
*/
- (CGPoint)pointForOrientation:(GMSOrientation)orientation;
/**
* Given a point for this view, returns the current camera orientation pointing through that screen
* location. At the center of this view, the returned GMSOrientation will be approximately equal to
* that of the current GMSPanoramaCamera.
*/
- (GMSOrientation)orientationForPoint:(CGPoint)point;
/**
* Convenience constructor for GMSPanoramaView, which searches for and displays a GMSPanorama near
* |coordinate|. This performs a similar action to that of moveNearCoordinate:, and will call the
* same delegate methods.
*/
+ (instancetype)panoramaWithFrame:(CGRect)frame nearCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Similar to panoramaWithFrame:nearCoordinate: but allows specifying a search radius (meters)
* around |coordinate|.
*/
+ (instancetype)panoramaWithFrame:(CGRect)frame
nearCoordinate:(CLLocationCoordinate2D)coordinate
radius:(NSUInteger)radius;
/**
* Convenience constructor for GMSPanoramaView, which searches for and displays a GMSPanorama near
* |coordinate|. This performs a similar action to that of moveNearCoordinate:source, and will call
* the same delegate methods.
*
* This API is experimental and may not always filter by source.
*/
+ (instancetype)panoramaWithFrame:(CGRect)frame
nearCoordinate:(CLLocationCoordinate2D)coordinate
source:(GMSPanoramaSource)source;
/**
* Convenience constructor for GMSPanoramaView, which searches for and displays a GMSPanorama near
* |coordinate|. This performs a similar action to that of moveNearCoordinate:radius:source, and
* will call the same delegate methods.
*
* This API is experimental and may not always filter by source.
*/
+ (instancetype)panoramaWithFrame:(CGRect)frame
nearCoordinate:(CLLocationCoordinate2D)coordinate
radius:(NSUInteger)radius
source:(GMSPanoramaSource)source;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,112 @@
//
// GMSPath.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSPath encapsulates an immutable array of CLLocationCooordinate2D. All the coordinates of a
* GMSPath must be valid. The mutable counterpart is GMSMutablePath.
*/
@interface GMSPath : NSObject<NSCopying, NSMutableCopying>
/** Convenience constructor for an empty path. */
+ (instancetype)path;
/** Initializes a newly allocated path with the contents of another GMSPath. */
- (id)initWithPath:(GMSPath *)path;
/** Get size of path. */
- (NSUInteger)count;
/** Returns kCLLocationCoordinate2DInvalid if |index| >= count. */
- (CLLocationCoordinate2D)coordinateAtIndex:(NSUInteger)index;
/**
* Initializes a newly allocated path from |encodedPath|. This format is described at:
* https://developers.google.com/maps/documentation/utilities/polylinealgorithm
*/
+ (nullable instancetype)pathFromEncodedPath:(NSString *)encodedPath;
/** Returns an encoded string of the path in the format described above. */
- (NSString *)encodedPath;
/**
* Returns a new path obtained by adding |deltaLatitude| and |deltaLongitude| to each coordinate
* of the current path. Does not modify the current path.
*/
- (instancetype)pathOffsetByLatitude:(CLLocationDegrees)deltaLatitude
longitude:(CLLocationDegrees)deltaLongitude;
@end
/**
* kGMSEquatorProjectedMeter may be useful when specifying lengths for segment in "projected" units.
* The value of kGMSEquatorProjectedMeter, 1/(pi * EarthRadius), represents the length of one meter
* at the equator in projected units. For example to specify a projected length that corresponds
* to 100km at the equator use 100000 * kGMSEquatorProjectedMeter.
* See [GMSPath segmentsForLength:kind:], [GMSPath lengthOfKind:] and kGMSLengthProjected.
*/
extern const double kGMSEquatorProjectedMeter;
/**
* \defgroup LengthKind GMSLengthKind
* @{
*/
/**
* GMSLengthKind indicates the type of a length value, which can be geodesic (in meters), rhumb
* length (in meters) and projected length (in GMSMapPoint units).
*/
typedef NS_ENUM(NSUInteger, GMSLengthKind) {
/*
* Geodesic length, in meters, along geodesic segments. May be useful, for example, to specify
* lengths along the the trajectory of airplanes or ships.
*/
kGMSLengthGeodesic,
/*
* Rhumb length, in meters, along rhumb (straight line) segments. May be useful, for example, to
* draw a scale bar on a map. The visual size of a segment of a given length depens on the
* latitude.
*/
kGMSLengthRhumb,
/*
* Length in projected space, along rhumb segments. Projected length uses the same units as
* GMSMapPoint - the Earth equator circumference has length 2. It is possible to specify projected
* length in units corresponding to 1 meter at the equator by multiplying with
* kGMSEquatorProjectedMeter, equal to 1/(pi * EarthRadius).
*
* Projected length may be useful, for example, to specify segments with the same visual length
* regardless of latitude.
*/
kGMSLengthProjected
};
/**@}*/
@interface GMSPath (GMSPathLength)
/**
* Returns the fractional number of segments along the path that correspond to |length|,
* interpreted according to |kind|. See GMSLengthKind.
*/
- (double)segmentsForLength:(CLLocationDistance)length kind:(GMSLengthKind)kind;
/**
* Returns the length of the path, according to |kind|. See GMSLengthKind.
*/
- (CLLocationDistance)lengthOfKind:(GMSLengthKind)kind;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,55 @@
//
// GMSPolygon.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <UIKit/UIKit.h>
#import "GMSOverlay.h"
NS_ASSUME_NONNULL_BEGIN;
@class GMSPath;
/**
* GMSPolygon defines a polygon that appears on the map. A polygon (like a polyline) defines a
* series of connected coordinates in an ordered sequence; additionally, polygons form a closed loop
* and define a filled region.
*/
@interface GMSPolygon : GMSOverlay
/** The path that describes this polygon. The coordinates composing the path must be valid. */
@property(nonatomic, copy, nullable) GMSPath *path;
/**
* The array of GMSPath instances that describes any holes in this polygon. The coordinates
* composing each path must be valid.
*/
@property(nonatomic, copy, nullable) NSArray<GMSPath *> *holes;
/** The width of the polygon outline in screen points. Defaults to 1. */
@property(nonatomic, assign) CGFloat strokeWidth;
/** The color of the polygon outline. Defaults to nil. */
@property(nonatomic, strong, nullable) UIColor *strokeColor;
/** The fill color. Defaults to blueColor. */
@property(nonatomic, strong, nullable) UIColor *fillColor;
/** Whether this polygon should be rendered with geodesic correction. */
@property(nonatomic, assign) BOOL geodesic;
/**
* Convenience constructor for GMSPolygon for a particular path. Other properties will have default
* values.
*/
+ (instancetype)polygonWithPath:(nullable GMSPath *)path;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,106 @@
//
// GMSPolyline.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <UIKit/UIKit.h>
#import "GMSOverlay.h"
@class GMSPath;
NS_ASSUME_NONNULL_BEGIN;
/** Describes the drawing style for one-dimensional entities such as polylines. */
@interface GMSStrokeStyle : NSObject
/** Creates a solid color stroke style. */
+ (instancetype)solidColor:(UIColor *)color;
/** Creates a gradient stroke style interpolating from |fromColor| to |toColor|. */
+ (instancetype)gradientFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor;
@end
/** Describes the style for some region of a polyline. */
@interface GMSStyleSpan : NSObject
/**
* Factory returning a solid color span of length one segment. Equivalent to
* [GMSStyleSpan spanWithStyle:[GMSStrokeStyle solidColor:|color|] segments:1].
*/
+ (instancetype)spanWithColor:(UIColor *)color;
/**
* Factory returning a solid color span with a given number of segments. Equivalent to
* [GMSStyleSpan spanWithStyle:[GMSStrokeStyle solidColor:|color|] segments:|segments|].
*/
+ (instancetype)spanWithColor:(UIColor *)color segments:(double)segments;
/**
* Factory returning a span with the given |style| of length one segment. Equivalent to
* [GMSStyleSpan spanWithStyle:|style| segments:1].
*/
+ (instancetype)spanWithStyle:(GMSStrokeStyle *)style;
/**
* Factory returning a span with the given |style| and length in number of segments.
* |segments| must be greater than 0 (i.e. can't be 0).
*/
+ (instancetype)spanWithStyle:(GMSStrokeStyle *)style segments:(double)segments;
/** The style of this span. */
@property(nonatomic, readonly) GMSStrokeStyle *style;
/** The length of this span in number of segments. */
@property(nonatomic, readonly) double segments;
@end
/**
* GMSPolyline specifies the available options for a polyline that exists on the Earth's surface.
* It is drawn as a physical line between the points specified in |path|.
*/
@interface GMSPolyline : GMSOverlay
/**
* The path that describes this polyline.
*/
@property(nonatomic, copy, nullable) GMSPath *path;
/**
* The width of the line in screen points. Defaults to 1.
*/
@property(nonatomic, assign) CGFloat strokeWidth;
/**
* The UIColor used to render the polyline. Defaults to [UIColor blueColor].
*/
@property(nonatomic, strong) UIColor *strokeColor;
/** Whether this line should be rendered with geodesic correction. */
@property(nonatomic, assign) BOOL geodesic;
/**
* Convenience constructor for GMSPolyline for a particular path. Other properties will have
* default values.
*/
+ (instancetype)polylineWithPath:(nullable GMSPath *)path;
/**
* An array containing GMSStyleSpan, the spans used to render this polyline.
*
* If this array contains fewer segments than the polyline itself, the final segment will be applied
* over the remaining length. If this array is unset or empty, then |strokeColor| is used for the
* entire line instead.
*/
@property(nonatomic, copy, nullable) NSArray<GMSStyleSpan *> *spans;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,76 @@
//
// GMSProjection.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreGraphics/CoreGraphics.h>
#import <CoreLocation/CoreLocation.h>
/**
* GMSVisibleRegion contains the four points defining the polygon that is visible in a map's camera.
*
* This polygon can be a trapezoid instead of a rectangle, because a camera can have tilt. If the
* camera is directly over the center of the camera, the shape is rectangular, but if the camera is
* tilted, the shape will appear to be a trapezoid whose smallest side is closest to the point of
* view.
*/
typedef struct {
/** Bottom left corner of the camera. */
CLLocationCoordinate2D nearLeft;
/** Bottom right corner of the camera. */
CLLocationCoordinate2D nearRight;
/** Far left corner of the camera. */
CLLocationCoordinate2D farLeft;
/** Far right corner of the camera. */
CLLocationCoordinate2D farRight;
} GMSVisibleRegion;
/**
* Defines a mapping between Earth coordinates (CLLocationCoordinate2D) and coordinates in the map's
* view (CGPoint). A projection is constant and immutable, in that the mapping it embodies never
* changes. The mapping is not necessarily linear.
*
* Passing invalid Earth coordinates (i.e., per CLLocationCoordinate2DIsValid) to this object may
* result in undefined behavior.
*
* This class should not be instantiated directly, instead, obtained via projection on GMSMapView.
*/
@interface GMSProjection : NSObject
/** Maps an Earth coordinate to a point coordinate in the map's view. */
- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;
/** Maps a point coordinate in the map's view to an Earth coordinate. */
- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point;
/**
* Converts a distance in meters to content size. This is only accurate for small Earth distances,
* as it uses CGFloat for screen distances.
*/
- (CGFloat)pointsForMeters:(CLLocationDistance)meters
atCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Returns whether a given coordinate (lat/lng) is contained within the projection.
*/
- (BOOL)containsCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* Returns the region (four location coordinates) that is visible according to the projection. If
* padding was set on GMSMapView, this region takes the padding into account.
*
* The visible region can be non-rectangular. The result is undefined if the projection includes
* points that do not map to anywhere on the map (e.g., camera sees outer space).
*/
- (GMSVisibleRegion)visibleRegion;
@end

View File

@@ -0,0 +1,67 @@
//
// GMSServices.h
// Google Maps SDK for iOS
//
// Copyright 2012 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN;
/** Service class for the Google Maps SDK for iOS. */
@interface GMSServices : NSObject
/**
* Provides the shared instance of GMSServices for the Google Maps SDK for iOS, creating it if
* necessary. Classes such as GMSMapView and GMSPanoramaView will hold this instance to provide
* their connection to Google.
*
* This is an opaque object. If your application often creates and destroys view or service classes
* provided by the Google Maps SDK for iOS, it may be useful to hold onto this object directly, as
* otherwise your connection to Google may be restarted on a regular basis. It also may be useful to
* take this object in advance of the first map creation, to reduce initial map creation performance
* cost.
*
* This method will throw an exception if provideAPIKey: has not been called.
*/
+ (id<NSObject>)sharedServices;
/**
* Provides your API key to the Google Maps SDK for iOS. This key is generated for your application
* via the Google APIs Console, and is paired with your application's bundle ID to identify it.
* This must be called exactly once by your application before any iOS Maps SDK object is
* initialized.
*
* @return YES if the APIKey was successfully provided.
*/
+ (BOOL)provideAPIKey:(NSString *)APIKey;
/**
* Provides your API options to the Google Maps SDK for iOS. Pass an array containing an NSString
* for each option. The options apply to all maps.
*
* This may be called exactly once by your application. It must be called before any iOS Maps SDK
* object is initialized.
*
* @return YES if all the APIOptions were successfully provided.
*/
+ (BOOL)provideAPIOptions:(NSArray<NSString *> *)APIOptions;
/**
* Returns the open source software license information for Google Maps SDK for iOS. This
* information must be made available within your application.
*/
+ (NSString *)openSourceLicenseInfo;
/**
* Returns the version for this release of the Google Maps SDK for iOS.
*/
+ (NSString *)SDKVersion;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,35 @@
//
// GMSSyncTileLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
#import "GMSTileLayer.h"
NS_ASSUME_NONNULL_BEGIN;
/**
* GMSSyncTileLayer is an abstract subclass of GMSTileLayer that provides a sync interface to
* generate image tile data.
*/
@interface GMSSyncTileLayer : GMSTileLayer
/**
* As per requestTileForX:y:zoom:receiver: on GMSTileLayer, but provides a synchronous interface to
* return tiles. This method may block or otherwise perform work, and is not called on the main
* thread.
*
* Calls to this method may also be made from multiple threads so implementations must be
* threadsafe.
*/
- (nullable UIImage *)tileForX:(NSUInteger)x y:(NSUInteger)y zoom:(NSUInteger)zoom;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,105 @@
//
// GMSTileLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <UIKit/UIKit.h>
@class GMSMapView;
NS_ASSUME_NONNULL_BEGIN;
/**
* Stub tile that is used to indicate that no tile exists for a specific tile coordinate. May be
* returned by tileForX:y:zoom: on GMSTileProvider.
*/
FOUNDATION_EXTERN UIImage *const kGMSTileLayerNoTile;
/**
* GMSTileReceiver is provided to GMSTileLayer when a tile request is made, allowing the callback to
* be later (or immediately) invoked.
*/
@protocol GMSTileReceiver<NSObject>
- (void)receiveTileWithX:(NSUInteger)x
y:(NSUInteger)y
zoom:(NSUInteger)zoom
image:(nullable UIImage *)image;
@end
/**
* GMSTileLayer is an abstract class that allows overlaying of custom image tiles on a specified
* GMSMapView. It may not be initialized directly, and subclasses must implement the
* tileForX:y:zoom: method to return tiles.
*
* At zoom level 0 the whole world is a square covered by a single tile, and the coordinates |x| and
* |y| are both 0 for that tile. At zoom level 1, the world is covered by 4 tiles with |x| and |y|
* being 0 or 1, and so on.
*/
@interface GMSTileLayer : NSObject
/**
* requestTileForX:y:zoom:receiver: generates image tiles for GMSTileOverlay. It must be overridden
* by subclasses. The tile for the given |x|, |y| and |zoom| _must_ be later passed to |receiver|.
*
* Specify kGMSTileLayerNoTile if no tile is available for this location; or nil if a transient
* error occured and a tile may be available later.
*
* Calls to this method will be made on the main thread. See GMSSyncTileLayer for a base class that
* implements a blocking tile layer that does not run on your application's main thread.
*/
- (void)requestTileForX:(NSUInteger)x
y:(NSUInteger)y
zoom:(NSUInteger)zoom
receiver:(id<GMSTileReceiver>)receiver;
/**
* Clears the cache so that all tiles will be requested again.
*/
- (void)clearTileCache;
/**
* The map this GMSTileOverlay is displayed on. Setting this property will add the layer to the map.
* Setting it to nil removes this layer from the map. A layer may be active on at most one map at
* any given time.
*/
@property(nonatomic, weak, nullable) GMSMapView *map;
/**
* Higher |zIndex| value tile layers will be drawn on top of lower |zIndex| value tile layers and
* overlays. Equal values result in undefined draw ordering.
*/
@property(nonatomic, assign) int zIndex;
/**
* Specifies the number of pixels (not points) that the returned tile images will prefer to display
* as. For best results, this should be the edge length of your custom tiles. Defaults to 256, which
* is the traditional size of Google Maps tiles.
*
* Values less than the equivalent of 128 points (e.g. 256 pixels on retina devices) may not perform
* well and are not recommended.
*
* As an example, an application developer may wish to provide retina tiles (512 pixel edge length)
* on retina devices, to keep the same number of tiles
* per view as the default value of 256 would give on a non-retina device.
*/
@property(nonatomic, assign) NSInteger tileSize;
/**
* Specifies the opacity of the tile layer. This provides a multiplier for the alpha channel of tile
* images.
*/
@property(nonatomic, assign) float opacity;
/**
* Specifies whether the tiles should fade in. Default YES.
*/
@property(nonatomic, assign) BOOL fadeIn;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,91 @@
//
// GMSUISettings.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <Foundation/Foundation.h>
/** Settings for the user interface of a GMSMapView. */
@interface GMSUISettings : NSObject
/**
* Sets the preference for whether all gestures should be enabled (default) or disabled. This
* doesn't restrict users from tapping any on screen buttons to move the camera (e.g., compass or
* zoom controls), nor does it restrict programmatic movements and animation.
*/
- (void)setAllGesturesEnabled:(BOOL)enabled;
/**
* Controls whether scroll gestures are enabled (default) or disabled. If enabled, users may drag to
* pan the camera. This does not limit programmatic movement of the camera.
*/
@property(nonatomic, assign) BOOL scrollGestures;
/**
* Controls whether zoom gestures are enabled (default) or disabled. If enabled, users may double
* tap/two-finger tap or pinch to zoom the camera. This does not limit programmatic movement of the
* camera.
*/
@property(nonatomic, assign) BOOL zoomGestures;
/**
* Controls whether tilt gestures are enabled (default) or disabled. If enabled, users may use a
* two-finger vertical down or up swipe to tilt the camera. This does not limit programmatic control
* of the camera's viewingAngle.
*/
@property(nonatomic, assign) BOOL tiltGestures;
/**
* Controls whether rotate gestures are enabled (default) or disabled. If enabled, users may use a
* two-finger rotate gesture to rotate the camera. This does not limit programmatic control of the
* camera's bearing.
*/
@property(nonatomic, assign) BOOL rotateGestures;
/**
* Controls whether gestures by users are completely consumed by the GMSMapView when gestures are
* enabled (default YES). This prevents these gestures from being received by parent views.
*
* When the GMSMapView is contained by a UIScrollView (or other scrollable area), this means that
* gestures on the map will not be additional consumed as scroll gestures. However, disabling this
* (set to NO) may be useful to support complex view hierarchies or requirements.
*/
@property(nonatomic, assign) BOOL consumesGesturesInView;
/**
* Enables or disables the compass. The compass is an icon on the map that indicates the direction
* of north on the map.
*
* If enabled, it is only shown when the camera is rotated away from its default orientation
* (bearing of 0). When a user taps the compass, the camera orients itself to its default
* orientation and fades away shortly after. If disabled, the compass will never be displayed.
*/
@property(nonatomic, assign) BOOL compassButton;
/**
* Enables or disables the My Location button. This is a button visible on the map that, when tapped
* by users, will center the map on the current user location.
*/
@property(nonatomic, assign) BOOL myLocationButton;
/**
* Enables (default) or disables the indoor floor picker.
*
* If enabled, it is only visible when the view is focused on a building with indoor floor data. If
* disabled, the selected floor can still be controlled programmatically via the indoorDisplay
* mapView property.
*/
@property(nonatomic, assign) BOOL indoorPicker;
/**
* Controls whether rotate and zoom gestures can be performed off-center and scrolled around
* (default YES).
*/
@property(nonatomic, assign) BOOL allowScrollGesturesDuringRotateOrZoom;
@end

View File

@@ -0,0 +1,56 @@
//
// GMSURLTileLayer.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import "GMSTileLayer.h"
@class NSURL;
NS_ASSUME_NONNULL_BEGIN;
/**
* |GMSTileURLConstructor| is a block taking |x|, |y| and |zoom| and returning an NSURL, or nil to
* indicate no tile for that location.
*
* @related GMSURLTileLayer
*/
typedef NSURL *_Nullable (^GMSTileURLConstructor)(NSUInteger x, NSUInteger y, NSUInteger zoom);
/**
* GMSURLTileProvider fetches tiles based on the URLs returned from a GMSTileURLConstructor. For
* example:
* <pre>
* GMSTileURLConstructor constructor = ^(NSUInteger x, NSUInteger y, NSUInteger zoom) {
* NSString *URLStr =
* [NSString stringWithFormat:@"https://example.com/%d/%d/%d.png", x, y, zoom];
* return [NSURL URLWithString:URLStr];
* };
* GMSTileLayer *layer =
* [GMSURLTileLayer tileLayerWithURLConstructor:constructor];
* layer.userAgent = @"SDK user agent";
* layer.map = map;
* </pre>
*
* GMSURLTileProvider may not be subclassed and should only be created via its convenience
* constructor.
*/
@interface GMSURLTileLayer : GMSTileLayer
/** Convenience constructor. |constructor| must be non-nil. */
+ (instancetype)tileLayerWithURLConstructor:(GMSTileURLConstructor)constructor;
/**
* Specify the user agent to describe your application. If this is nil (the default), the default
* iOS user agent is used for HTTP requests.
*/
@property(nonatomic, copy, nullable) NSString *userAgent;
@end
NS_ASSUME_NONNULL_END;

View File

@@ -0,0 +1,38 @@
#import "GMSIndoorBuilding.h"
#import "GMSIndoorLevel.h"
#import "GMSAddress.h"
#import "GMSCALayer.h"
#import "GMSCameraPosition.h"
#import "GMSCameraUpdate.h"
#import "GMSCoordinateBounds+GoogleMaps.h"
#import "GMSGeocoder.h"
#import "GMSGeometryUtils.h"
#import "GMSIndoorDisplay.h"
#import "GMSMapLayer.h"
#import "GMSMapStyle.h"
#import "GMSMapView+Animation.h"
#import "GMSMapView.h"
#import "GMSMutablePath.h"
#import "GMSPath.h"
#import "GMSProjection.h"
#import "GMSServices.h"
#import "GMSUISettings.h"
#import "GMSCircle.h"
#import "GMSGroundOverlay.h"
#import "GMSMarker.h"
#import "GMSMarkerLayer.h"
#import "GMSOverlay.h"
#import "GMSPolygon.h"
#import "GMSPolyline.h"
#import "GMSSyncTileLayer.h"
#import "GMSTileLayer.h"
#import "GMSURLTileLayer.h"
#import "GMSOrientation.h"
#import "GMSPanorama.h"
#import "GMSPanoramaCamera.h"
#import "GMSPanoramaCameraUpdate.h"
#import "GMSPanoramaLayer.h"
#import "GMSPanoramaLink.h"
#import "GMSPanoramaService.h"
#import "GMSPanoramaSource.h"
#import "GMSPanoramaView.h"

View File

@@ -0,0 +1,21 @@
framework module GoogleMaps {
umbrella header "GoogleMaps.h"
export *
module * { export *}
link "z"
link framework "Accelerate"
link framework "CoreData"
link framework "CoreFoundation"
link framework "CoreGraphics"
link framework "CoreImage"
link framework "CoreLocation"
link framework "CoreTelephony"
link framework "CoreText"
link framework "Foundation"
link framework "GLKit"
link framework "ImageIO"
link framework "OpenGLES"
link framework "QuartzCore"
link framework "Security"
link framework "SystemConfiguration"
link framework "UIKit"}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Some files were not shown because too many files have changed in this diff Show More