├── .gitignore ├── AR Demo App ├── AR Demo App.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── AR Demo App.xcworkspace │ └── contents.xcworkspacedata ├── AR Demo App │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ └── classy_crab.imageset │ │ │ ├── Contents.json │ │ │ ├── classy_crab.png │ │ │ └── classy_crab@2x.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── ViewController.swift │ └── classy_crab.stl ├── Podfile ├── Podfile.lock └── Pods │ ├── Manifest.lock │ ├── Mapbox-iOS-SDK │ ├── LICENSE.md │ ├── README.md │ └── dynamic │ │ └── Mapbox.framework │ │ ├── Base.lproj │ │ ├── Foundation.strings │ │ └── Localizable.strings │ │ ├── Compass.png │ │ ├── Compass@2x.png │ │ ├── Compass@3x.png │ │ ├── Headers │ │ ├── MGLAccountManager.h │ │ ├── MGLAnnotation.h │ │ ├── MGLAnnotationImage.h │ │ ├── MGLAnnotationView.h │ │ ├── MGLCalloutView.h │ │ ├── MGLClockDirectionFormatter.h │ │ ├── MGLCompassDirectionFormatter.h │ │ ├── MGLCoordinateFormatter.h │ │ ├── MGLFeature.h │ │ ├── MGLGeometry.h │ │ ├── MGLMapCamera.h │ │ ├── MGLMapView+IBAdditions.h │ │ ├── MGLMapView+MGLCustomStyleLayerAdditions.h │ │ ├── MGLMapView.h │ │ ├── MGLMapViewDelegate.h │ │ ├── MGLMultiPoint.h │ │ ├── MGLOfflinePack.h │ │ ├── MGLOfflineRegion.h │ │ ├── MGLOfflineStorage.h │ │ ├── MGLOverlay.h │ │ ├── MGLPointAnnotation.h │ │ ├── MGLPolygon.h │ │ ├── MGLPolyline.h │ │ ├── MGLShape.h │ │ ├── MGLShapeCollection.h │ │ ├── MGLStyle.h │ │ ├── MGLTilePyramidOfflineRegion.h │ │ ├── MGLTypes.h │ │ ├── MGLUserLocation.h │ │ ├── Mapbox.h │ │ └── NSValue+MGLAdditions.h │ │ ├── Info.plist │ │ ├── Mapbox │ │ ├── Modules │ │ └── module.modulemap │ │ ├── PrivateHeaders │ │ └── NSData+MGLAdditions.h │ │ ├── _CodeSignature │ │ └── CodeResources │ │ ├── api_mapbox_com-digicert.der │ │ ├── api_mapbox_com-geotrust.der │ │ ├── default_marker.png │ │ ├── default_marker@2x.png │ │ ├── default_marker@3x.png │ │ ├── en.lproj │ │ ├── Foundation.stringsdict │ │ └── Localizable.stringsdict │ │ ├── mapbox.png │ │ ├── mapbox@2x.png │ │ ├── mapbox@3x.png │ │ ├── star_tilestream_net.der │ │ └── strip-frameworks.sh │ ├── Pods.xcodeproj │ └── project.pbxproj │ └── Target Support Files │ └── Pods-AR Demo App │ ├── Info.plist │ ├── Pods-AR Demo App-acknowledgements.markdown │ ├── Pods-AR Demo App-acknowledgements.plist │ ├── Pods-AR Demo App-dummy.m │ ├── Pods-AR Demo App-frameworks.sh │ ├── Pods-AR Demo App-resources.sh │ ├── Pods-AR Demo App-umbrella.h │ ├── Pods-AR Demo App.debug.xcconfig │ ├── Pods-AR Demo App.modulemap │ └── Pods-AR Demo App.release.xcconfig ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xcuserstate 23 | 24 | ## Obj-C/Swift specific 25 | *.hmap 26 | *.ipa 27 | *.dSYM.zip 28 | *.dSYM 29 | 30 | ## Playgrounds 31 | timeline.xctimeline 32 | playground.xcworkspace 33 | 34 | # Swift Package Manager 35 | # 36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 37 | # Packages/ 38 | .build/ 39 | 40 | # CocoaPods 41 | # 42 | # We recommend against adding the Pods directory to your .gitignore. However 43 | # you should judge for yourself, the pros and cons are mentioned at: 44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 45 | # 46 | # Pods/ 47 | 48 | # Carthage 49 | # 50 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 51 | # Carthage/Checkouts 52 | 53 | Carthage/Build 54 | 55 | # fastlane 56 | # 57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 58 | # screenshots whenever they are needed. 59 | # For more information about the recommended setup visit: 60 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md 61 | 62 | fastlane/report.xml 63 | fastlane/Preview.html 64 | fastlane/screenshots 65 | fastlane/test_output 66 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 733484B4CA0CDF272EFB5B40 /* Pods_AR_Demo_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1652073B2A1222D9DCE78C9 /* Pods_AR_Demo_App.framework */; }; 11 | A85FCB571E7853A400185F92 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85FCB561E7853A400185F92 /* AppDelegate.swift */; }; 12 | A85FCB591E7853A400185F92 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85FCB581E7853A400185F92 /* ViewController.swift */; }; 13 | A85FCB5C1E7853A400185F92 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A85FCB5A1E7853A400185F92 /* Main.storyboard */; }; 14 | A85FCB5E1E7853A400185F92 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A85FCB5D1E7853A400185F92 /* Assets.xcassets */; }; 15 | A85FCB611E7853A400185F92 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A85FCB5F1E7853A400185F92 /* LaunchScreen.storyboard */; }; 16 | A8A231621EB86E3D003C8018 /* classy_crab.stl in Resources */ = {isa = PBXBuildFile; fileRef = A8A231611EB86E3D003C8018 /* classy_crab.stl */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 405974E97DDF0E53EA722EDC /* Pods-AR Demo App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AR Demo App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App.debug.xcconfig"; sourceTree = ""; }; 21 | A85FCB531E7853A400185F92 /* AR Demo App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AR Demo App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | A85FCB561E7853A400185F92 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 23 | A85FCB581E7853A400185F92 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 24 | A85FCB5B1E7853A400185F92 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 25 | A85FCB5D1E7853A400185F92 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 26 | A85FCB601E7853A400185F92 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 27 | A85FCB621E7853A400185F92 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 28 | A8A231611EB86E3D003C8018 /* classy_crab.stl */ = {isa = PBXFileReference; lastKnownFileType = file; path = classy_crab.stl; sourceTree = ""; }; 29 | B6A33A9F2A412DC81B7AAC26 /* Pods-AR Demo App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AR Demo App.release.xcconfig"; path = "Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App.release.xcconfig"; sourceTree = ""; }; 30 | D1652073B2A1222D9DCE78C9 /* Pods_AR_Demo_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AR_Demo_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 31 | /* End PBXFileReference section */ 32 | 33 | /* Begin PBXFrameworksBuildPhase section */ 34 | A85FCB501E7853A400185F92 /* Frameworks */ = { 35 | isa = PBXFrameworksBuildPhase; 36 | buildActionMask = 2147483647; 37 | files = ( 38 | 733484B4CA0CDF272EFB5B40 /* Pods_AR_Demo_App.framework in Frameworks */, 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 9DB829B936E553FC200487F7 /* Frameworks */ = { 46 | isa = PBXGroup; 47 | children = ( 48 | D1652073B2A1222D9DCE78C9 /* Pods_AR_Demo_App.framework */, 49 | ); 50 | name = Frameworks; 51 | sourceTree = ""; 52 | }; 53 | A85FCB4A1E7853A400185F92 = { 54 | isa = PBXGroup; 55 | children = ( 56 | A85FCB551E7853A400185F92 /* AR Demo App */, 57 | A85FCB541E7853A400185F92 /* Products */, 58 | EDC975ACF200E4C989E932FB /* Pods */, 59 | 9DB829B936E553FC200487F7 /* Frameworks */, 60 | ); 61 | sourceTree = ""; 62 | }; 63 | A85FCB541E7853A400185F92 /* Products */ = { 64 | isa = PBXGroup; 65 | children = ( 66 | A85FCB531E7853A400185F92 /* AR Demo App.app */, 67 | ); 68 | name = Products; 69 | sourceTree = ""; 70 | }; 71 | A85FCB551E7853A400185F92 /* AR Demo App */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | A8A231611EB86E3D003C8018 /* classy_crab.stl */, 75 | A85FCB561E7853A400185F92 /* AppDelegate.swift */, 76 | A85FCB581E7853A400185F92 /* ViewController.swift */, 77 | A85FCB5A1E7853A400185F92 /* Main.storyboard */, 78 | A85FCB5D1E7853A400185F92 /* Assets.xcassets */, 79 | A85FCB5F1E7853A400185F92 /* LaunchScreen.storyboard */, 80 | A85FCB621E7853A400185F92 /* Info.plist */, 81 | ); 82 | path = "AR Demo App"; 83 | sourceTree = ""; 84 | }; 85 | EDC975ACF200E4C989E932FB /* Pods */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 405974E97DDF0E53EA722EDC /* Pods-AR Demo App.debug.xcconfig */, 89 | B6A33A9F2A412DC81B7AAC26 /* Pods-AR Demo App.release.xcconfig */, 90 | ); 91 | name = Pods; 92 | sourceTree = ""; 93 | }; 94 | /* End PBXGroup section */ 95 | 96 | /* Begin PBXNativeTarget section */ 97 | A85FCB521E7853A400185F92 /* AR Demo App */ = { 98 | isa = PBXNativeTarget; 99 | buildConfigurationList = A85FCB651E7853A400185F92 /* Build configuration list for PBXNativeTarget "AR Demo App" */; 100 | buildPhases = ( 101 | 03E2E29994C280C2B9350CCB /* [CP] Check Pods Manifest.lock */, 102 | A85FCB4F1E7853A400185F92 /* Sources */, 103 | A85FCB501E7853A400185F92 /* Frameworks */, 104 | A85FCB511E7853A400185F92 /* Resources */, 105 | 2F2035A90FCA33133AD34635 /* [CP] Embed Pods Frameworks */, 106 | A2AD07C2D4064D40550A0129 /* [CP] Copy Pods Resources */, 107 | ); 108 | buildRules = ( 109 | ); 110 | dependencies = ( 111 | ); 112 | name = "AR Demo App"; 113 | productName = "AR Demo App"; 114 | productReference = A85FCB531E7853A400185F92 /* AR Demo App.app */; 115 | productType = "com.apple.product-type.application"; 116 | }; 117 | /* End PBXNativeTarget section */ 118 | 119 | /* Begin PBXProject section */ 120 | A85FCB4B1E7853A400185F92 /* Project object */ = { 121 | isa = PBXProject; 122 | attributes = { 123 | LastSwiftUpdateCheck = 0820; 124 | LastUpgradeCheck = 0820; 125 | ORGANIZATIONNAME = "Classy Code"; 126 | TargetAttributes = { 127 | A85FCB521E7853A400185F92 = { 128 | CreatedOnToolsVersion = 8.2.1; 129 | DevelopmentTeam = 7SRSGJYJU7; 130 | ProvisioningStyle = Manual; 131 | }; 132 | }; 133 | }; 134 | buildConfigurationList = A85FCB4E1E7853A400185F92 /* Build configuration list for PBXProject "AR Demo App" */; 135 | compatibilityVersion = "Xcode 3.2"; 136 | developmentRegion = English; 137 | hasScannedForEncodings = 0; 138 | knownRegions = ( 139 | en, 140 | Base, 141 | ); 142 | mainGroup = A85FCB4A1E7853A400185F92; 143 | productRefGroup = A85FCB541E7853A400185F92 /* Products */; 144 | projectDirPath = ""; 145 | projectRoot = ""; 146 | targets = ( 147 | A85FCB521E7853A400185F92 /* AR Demo App */, 148 | ); 149 | }; 150 | /* End PBXProject section */ 151 | 152 | /* Begin PBXResourcesBuildPhase section */ 153 | A85FCB511E7853A400185F92 /* Resources */ = { 154 | isa = PBXResourcesBuildPhase; 155 | buildActionMask = 2147483647; 156 | files = ( 157 | A85FCB611E7853A400185F92 /* LaunchScreen.storyboard in Resources */, 158 | A85FCB5E1E7853A400185F92 /* Assets.xcassets in Resources */, 159 | A8A231621EB86E3D003C8018 /* classy_crab.stl in Resources */, 160 | A85FCB5C1E7853A400185F92 /* Main.storyboard in Resources */, 161 | ); 162 | runOnlyForDeploymentPostprocessing = 0; 163 | }; 164 | /* End PBXResourcesBuildPhase section */ 165 | 166 | /* Begin PBXShellScriptBuildPhase section */ 167 | 03E2E29994C280C2B9350CCB /* [CP] Check Pods Manifest.lock */ = { 168 | isa = PBXShellScriptBuildPhase; 169 | buildActionMask = 2147483647; 170 | files = ( 171 | ); 172 | inputPaths = ( 173 | ); 174 | name = "[CP] Check Pods Manifest.lock"; 175 | outputPaths = ( 176 | ); 177 | runOnlyForDeploymentPostprocessing = 0; 178 | shellPath = /bin/sh; 179 | shellScript = "diff \"${PODS_ROOT}/../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"; 180 | showEnvVarsInLog = 0; 181 | }; 182 | 2F2035A90FCA33133AD34635 /* [CP] Embed Pods Frameworks */ = { 183 | isa = PBXShellScriptBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | ); 187 | inputPaths = ( 188 | ); 189 | name = "[CP] Embed Pods Frameworks"; 190 | outputPaths = ( 191 | ); 192 | runOnlyForDeploymentPostprocessing = 0; 193 | shellPath = /bin/sh; 194 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-frameworks.sh\"\n"; 195 | showEnvVarsInLog = 0; 196 | }; 197 | A2AD07C2D4064D40550A0129 /* [CP] Copy Pods Resources */ = { 198 | isa = PBXShellScriptBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | ); 202 | inputPaths = ( 203 | ); 204 | name = "[CP] Copy Pods Resources"; 205 | outputPaths = ( 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | shellPath = /bin/sh; 209 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-resources.sh\"\n"; 210 | showEnvVarsInLog = 0; 211 | }; 212 | /* End PBXShellScriptBuildPhase section */ 213 | 214 | /* Begin PBXSourcesBuildPhase section */ 215 | A85FCB4F1E7853A400185F92 /* Sources */ = { 216 | isa = PBXSourcesBuildPhase; 217 | buildActionMask = 2147483647; 218 | files = ( 219 | A85FCB591E7853A400185F92 /* ViewController.swift in Sources */, 220 | A85FCB571E7853A400185F92 /* AppDelegate.swift in Sources */, 221 | ); 222 | runOnlyForDeploymentPostprocessing = 0; 223 | }; 224 | /* End PBXSourcesBuildPhase section */ 225 | 226 | /* Begin PBXVariantGroup section */ 227 | A85FCB5A1E7853A400185F92 /* Main.storyboard */ = { 228 | isa = PBXVariantGroup; 229 | children = ( 230 | A85FCB5B1E7853A400185F92 /* Base */, 231 | ); 232 | name = Main.storyboard; 233 | sourceTree = ""; 234 | }; 235 | A85FCB5F1E7853A400185F92 /* LaunchScreen.storyboard */ = { 236 | isa = PBXVariantGroup; 237 | children = ( 238 | A85FCB601E7853A400185F92 /* Base */, 239 | ); 240 | name = LaunchScreen.storyboard; 241 | sourceTree = ""; 242 | }; 243 | /* End PBXVariantGroup section */ 244 | 245 | /* Begin XCBuildConfiguration section */ 246 | A85FCB631E7853A400185F92 /* Debug */ = { 247 | isa = XCBuildConfiguration; 248 | buildSettings = { 249 | ALWAYS_SEARCH_USER_PATHS = NO; 250 | CLANG_ANALYZER_NONNULL = YES; 251 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 252 | CLANG_CXX_LIBRARY = "libc++"; 253 | CLANG_ENABLE_MODULES = YES; 254 | CLANG_ENABLE_OBJC_ARC = YES; 255 | CLANG_WARN_BOOL_CONVERSION = YES; 256 | CLANG_WARN_CONSTANT_CONVERSION = YES; 257 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 258 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 259 | CLANG_WARN_EMPTY_BODY = YES; 260 | CLANG_WARN_ENUM_CONVERSION = YES; 261 | CLANG_WARN_INFINITE_RECURSION = YES; 262 | CLANG_WARN_INT_CONVERSION = YES; 263 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 264 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 265 | CLANG_WARN_UNREACHABLE_CODE = YES; 266 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 267 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 268 | COPY_PHASE_STRIP = NO; 269 | DEBUG_INFORMATION_FORMAT = dwarf; 270 | ENABLE_STRICT_OBJC_MSGSEND = YES; 271 | ENABLE_TESTABILITY = YES; 272 | GCC_C_LANGUAGE_STANDARD = gnu99; 273 | GCC_DYNAMIC_NO_PIC = NO; 274 | GCC_NO_COMMON_BLOCKS = YES; 275 | GCC_OPTIMIZATION_LEVEL = 0; 276 | GCC_PREPROCESSOR_DEFINITIONS = ( 277 | "DEBUG=1", 278 | "$(inherited)", 279 | ); 280 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 281 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 282 | GCC_WARN_UNDECLARED_SELECTOR = YES; 283 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 284 | GCC_WARN_UNUSED_FUNCTION = YES; 285 | GCC_WARN_UNUSED_VARIABLE = YES; 286 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 287 | MTL_ENABLE_DEBUG_INFO = YES; 288 | ONLY_ACTIVE_ARCH = YES; 289 | SDKROOT = iphoneos; 290 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 291 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 292 | }; 293 | name = Debug; 294 | }; 295 | A85FCB641E7853A400185F92 /* Release */ = { 296 | isa = XCBuildConfiguration; 297 | buildSettings = { 298 | ALWAYS_SEARCH_USER_PATHS = NO; 299 | CLANG_ANALYZER_NONNULL = YES; 300 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 301 | CLANG_CXX_LIBRARY = "libc++"; 302 | CLANG_ENABLE_MODULES = YES; 303 | CLANG_ENABLE_OBJC_ARC = YES; 304 | CLANG_WARN_BOOL_CONVERSION = YES; 305 | CLANG_WARN_CONSTANT_CONVERSION = YES; 306 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 307 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 308 | CLANG_WARN_EMPTY_BODY = YES; 309 | CLANG_WARN_ENUM_CONVERSION = YES; 310 | CLANG_WARN_INFINITE_RECURSION = YES; 311 | CLANG_WARN_INT_CONVERSION = YES; 312 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 313 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 314 | CLANG_WARN_UNREACHABLE_CODE = YES; 315 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 316 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 317 | COPY_PHASE_STRIP = NO; 318 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 319 | ENABLE_NS_ASSERTIONS = NO; 320 | ENABLE_STRICT_OBJC_MSGSEND = YES; 321 | GCC_C_LANGUAGE_STANDARD = gnu99; 322 | GCC_NO_COMMON_BLOCKS = YES; 323 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 324 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 325 | GCC_WARN_UNDECLARED_SELECTOR = YES; 326 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 327 | GCC_WARN_UNUSED_FUNCTION = YES; 328 | GCC_WARN_UNUSED_VARIABLE = YES; 329 | IPHONEOS_DEPLOYMENT_TARGET = 10.2; 330 | MTL_ENABLE_DEBUG_INFO = NO; 331 | SDKROOT = iphoneos; 332 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 333 | VALIDATE_PRODUCT = YES; 334 | }; 335 | name = Release; 336 | }; 337 | A85FCB661E7853A400185F92 /* Debug */ = { 338 | isa = XCBuildConfiguration; 339 | baseConfigurationReference = 405974E97DDF0E53EA722EDC /* Pods-AR Demo App.debug.xcconfig */; 340 | buildSettings = { 341 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 342 | DEVELOPMENT_TEAM = 7SRSGJYJU7; 343 | INFOPLIST_FILE = "AR Demo App/Info.plist"; 344 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 345 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 346 | PRODUCT_BUNDLE_IDENTIFIER = com.classycode.ardemo; 347 | PRODUCT_NAME = "$(TARGET_NAME)"; 348 | PROVISIONING_PROFILE = "4d1c47a0-cf5b-4263-b643-bb5ba12fd193"; 349 | PROVISIONING_PROFILE_SPECIFIER = "Classy Code Wildcard Profile"; 350 | SWIFT_VERSION = 3.0; 351 | }; 352 | name = Debug; 353 | }; 354 | A85FCB671E7853A400185F92 /* Release */ = { 355 | isa = XCBuildConfiguration; 356 | baseConfigurationReference = B6A33A9F2A412DC81B7AAC26 /* Pods-AR Demo App.release.xcconfig */; 357 | buildSettings = { 358 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 359 | DEVELOPMENT_TEAM = 7SRSGJYJU7; 360 | INFOPLIST_FILE = "AR Demo App/Info.plist"; 361 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 362 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 363 | PRODUCT_BUNDLE_IDENTIFIER = com.classycode.ardemo; 364 | PRODUCT_NAME = "$(TARGET_NAME)"; 365 | PROVISIONING_PROFILE = "4d1c47a0-cf5b-4263-b643-bb5ba12fd193"; 366 | PROVISIONING_PROFILE_SPECIFIER = "Classy Code Wildcard Profile"; 367 | SWIFT_VERSION = 3.0; 368 | }; 369 | name = Release; 370 | }; 371 | /* End XCBuildConfiguration section */ 372 | 373 | /* Begin XCConfigurationList section */ 374 | A85FCB4E1E7853A400185F92 /* Build configuration list for PBXProject "AR Demo App" */ = { 375 | isa = XCConfigurationList; 376 | buildConfigurations = ( 377 | A85FCB631E7853A400185F92 /* Debug */, 378 | A85FCB641E7853A400185F92 /* Release */, 379 | ); 380 | defaultConfigurationIsVisible = 0; 381 | defaultConfigurationName = Release; 382 | }; 383 | A85FCB651E7853A400185F92 /* Build configuration list for PBXNativeTarget "AR Demo App" */ = { 384 | isa = XCConfigurationList; 385 | buildConfigurations = ( 386 | A85FCB661E7853A400185F92 /* Debug */, 387 | A85FCB671E7853A400185F92 /* Release */, 388 | ); 389 | defaultConfigurationIsVisible = 0; 390 | defaultConfigurationName = Release; 391 | }; 392 | /* End XCConfigurationList section */ 393 | }; 394 | rootObject = A85FCB4B1E7853A400185F92 /* Project object */; 395 | } 396 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // AR Demo App 4 | // 5 | // Created by Alex Suzuki on 14.03.17. 6 | // Copyright © 2017 Classy Code. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Assets.xcassets/classy_crab.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "classy_crab.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "classy_crab@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Assets.xcassets/classy_crab.imageset/classy_crab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/AR Demo App/Assets.xcassets/classy_crab.imageset/classy_crab.png -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Assets.xcassets/classy_crab.imageset/classy_crab@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/AR Demo App/Assets.xcassets/classy_crab.imageset/classy_crab@2x.png -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleVersion 20 | 1.0.0.1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | NSLocationAlwaysUsageDescription 32 | AR Demo needs access to your location 33 | NSLocationUsageDescription 34 | AR Demo needs access to your location 35 | NSLocationWhenInUseUsageDescription 36 | AR Demo needs access to your location 37 | MGLMapboxMetricsEnabledSettingShownInApp 38 | 39 | MGLMapboxAccessToken 40 | YOUR TOKEN HERE 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AR Demo App 4 | // 5 | // Created by Alex Suzuki on 14.03.17. 6 | // Copyright © 2017 Classy Code. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CoreLocation 11 | import Mapbox 12 | import SceneKit 13 | 14 | class ViewController: UIViewController, CLLocationManagerDelegate, MGLMapViewDelegate, SCNSceneRendererDelegate { 15 | 16 | @IBOutlet var mapView: MGLMapView! 17 | @IBOutlet var sceneView: SCNView! 18 | var tapGestureRecognizer: UITapGestureRecognizer! 19 | 20 | // the pitch to use for the map view 21 | static let kMapPitchDegrees: Float = 45.0 22 | 23 | // player and map location 24 | var centerCoordinate: CLLocationCoordinate2D? 25 | var locationManager: CLLocationManager! 26 | var lastLocation: CLLocation? 27 | var lastHeading: CLHeading? 28 | 29 | // SceneKit scene 30 | var scene: SCNScene! 31 | var cameraNode: SCNNode! 32 | var camera: SCNCamera! 33 | var playerNode: SCNNode! 34 | var officeNode: SCNNode! 35 | var ambientLightNode: SCNNode! 36 | var ambientLight: SCNLight! 37 | var omniLightNode: SCNNode! 38 | var omniLight: SCNLight! 39 | var sceneRect: CGRect! 40 | 41 | // Rendering state 42 | var renderStartTime: TimeInterval? 43 | 44 | override func viewDidLoad() { 45 | super.viewDidLoad() 46 | 47 | locationManager = CLLocationManager() 48 | locationManager.delegate = self 49 | locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation 50 | 51 | setupMapView() 52 | setupSceneView() 53 | } 54 | 55 | func setupMapView() { 56 | let camera = MGLMapCamera() 57 | mapView.setCamera(camera, animated: false) 58 | 59 | // MapBox configuration 60 | mapView.styleURL = URL(string: "YOUR STYLE URL HERE") 61 | 62 | // restrict the zoom level 63 | mapView.maximumZoomLevel = 19.0 64 | mapView.zoomLevel = 18.0 65 | mapView.minimumZoomLevel = 17.0 66 | 67 | // restrict user interaction on the map 68 | mapView.allowsScrolling = false 69 | mapView.allowsRotating = true 70 | mapView.allowsTilting = false 71 | mapView.allowsZooming = true 72 | 73 | // disable built-in controls and user location 74 | mapView.displayHeadingCalibration = false 75 | mapView.showsUserLocation = false 76 | mapView.compassView.isHidden = true 77 | mapView.logoView.isHidden = true 78 | mapView.attributionButton.isHidden = true 79 | 80 | mapView.delegate = self 81 | centerCoordinate = mapView.centerCoordinate 82 | 83 | // detect tap gestures on map 84 | tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(onMapViewTapped(recognizer:))) 85 | tapGestureRecognizer.numberOfTapsRequired = 1 86 | mapView.addGestureRecognizer(tapGestureRecognizer) 87 | } 88 | 89 | func setupSceneView() { 90 | // transparent background for use as overlay 91 | sceneView.backgroundColor = UIColor.clear 92 | scene = SCNScene() 93 | sceneView.autoenablesDefaultLighting = true 94 | sceneView.scene = scene 95 | sceneView.delegate = self 96 | sceneView.loops = true 97 | sceneView.isPlaying = true 98 | sceneRect = sceneView.bounds 99 | 100 | // camera 101 | cameraNode = SCNNode() 102 | camera = SCNCamera() 103 | cameraNode.camera = camera 104 | scene.rootNode.addChildNode(cameraNode) 105 | 106 | // lighting 107 | ambientLight = SCNLight() 108 | ambientLight.type = .ambient 109 | ambientLight.color = UIColor(colorLiteralRed: 0.8, green: 0.8, blue: 0.8, alpha: 1.0).cgColor 110 | ambientLightNode = SCNNode() 111 | ambientLightNode.light = ambientLight 112 | scene.rootNode.addChildNode(ambientLightNode) 113 | 114 | // lighting 115 | omniLight = SCNLight() 116 | omniLight.type = .omni 117 | omniLightNode = SCNNode() 118 | omniLightNode.light = omniLight 119 | 120 | scene.rootNode.addChildNode(omniLightNode) 121 | 122 | // player node 123 | playerNode = SCNNode() 124 | let playerScene = SCNScene(named: "classy_crab.stl")! 125 | let playerModelNode = playerScene.rootNode.childNodes.first! 126 | playerModelNode.geometry?.firstMaterial?.diffuse.contents = UIColor(red: 0.118, green: 0.196, blue: 0.471, alpha: 1.0) 127 | playerModelNode.geometry?.firstMaterial?.specular.contents = UIColor.white 128 | playerNode.addChildNode(playerModelNode) 129 | scene.rootNode.addChildNode(playerNode) 130 | 131 | // office node 132 | officeNode = SCNNode(geometry: SCNBox(width: 20.0, height: 20.0, length: 20.0, chamferRadius: 2.0)) 133 | officeNode.setValue(CLLocationCoordinate2DMake(47.363688, 8.513255), forKey: "coordinate") 134 | officeNode.geometry?.firstMaterial?.diffuse.contents = UIColor.white 135 | officeNode.geometry?.firstMaterial?.specular.contents = UIColor.white 136 | officeNode.setValue(false, forKey: "tapped") 137 | scene.rootNode.addChildNode(officeNode) 138 | } 139 | 140 | override func viewDidAppear(_ animated: Bool) { 141 | super.viewDidAppear(animated) 142 | 143 | // ask for permission / enable location updates 144 | let authorizationStatus = CLLocationManager.authorizationStatus() 145 | if !(authorizationStatus == .authorizedAlways || authorizationStatus == .authorizedWhenInUse) { 146 | locationManager.requestWhenInUseAuthorization() 147 | } 148 | else { 149 | locationManager.startUpdatingLocation() 150 | locationManager.startUpdatingHeading() 151 | } 152 | } 153 | 154 | 155 | override func viewWillDisappear(_ animated: Bool) { 156 | 157 | // disable location updates 158 | locationManager.stopUpdatingHeading() 159 | locationManager.stopUpdatingLocation() 160 | 161 | super.viewWillDisappear(animated) 162 | } 163 | 164 | 165 | 166 | // MARK: CLLocationManagerDelegate 167 | 168 | func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { 169 | if (status == .authorizedAlways || status == .authorizedWhenInUse) { 170 | locationManager.startUpdatingLocation() 171 | } 172 | } 173 | 174 | func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 175 | let (shouldUpdate, immediately) = shouldUpdateLocation(newLocation: locations[0]) 176 | if shouldUpdate { 177 | let heading = lastHeading?.magneticHeading ?? 0 178 | let previousAltitude = mapView.camera.altitude 179 | 180 | let camera = MGLMapCamera(lookingAtCenter: self.lastLocation!.coordinate, fromDistance: previousAltitude, 181 | pitch: CGFloat(ViewController.kMapPitchDegrees), heading: heading) 182 | mapView.setCamera(camera, withDuration: (immediately ? 0 : 0.5), animationTimingFunction: nil) 183 | } 184 | } 185 | 186 | func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) { 187 | lastHeading = newHeading 188 | 189 | if let lastLocation = self.lastLocation { 190 | let previousAltitude = mapView.camera.altitude 191 | let camera = MGLMapCamera(lookingAtCenter: lastLocation.coordinate, fromDistance: previousAltitude, 192 | pitch: CGFloat(ViewController.kMapPitchDegrees), heading: newHeading.magneticHeading) 193 | mapView.setCamera(camera, animated: true) 194 | } 195 | 196 | } 197 | 198 | func shouldUpdateLocation(newLocation: CLLocation) -> (Bool, Bool) { 199 | objc_sync_enter(self) 200 | defer { objc_sync_exit(self) } 201 | 202 | if let lastLocation = self.lastLocation { 203 | 204 | // accept an inaccurate location only if the last one received is older than 10 seconds 205 | if newLocation.horizontalAccuracy > 65.0 && abs(lastLocation.timestamp.timeIntervalSinceNow) <= 10.0 { 206 | return (false, false) 207 | } 208 | 209 | let newTimestamp = newLocation.timestamp.timeIntervalSince1970 210 | let oldTimestamp = lastLocation.timestamp.timeIntervalSince1970 211 | if newTimestamp > oldTimestamp + 5.0 { 212 | if newLocation.distance(from: lastLocation) > 18.0 { 213 | self.lastLocation = newLocation 214 | 215 | if newTimestamp - oldTimestamp > 60 { 216 | return (true, true) // significant distance, long time since last update 217 | } 218 | else { 219 | return (true, false) // significant distance 220 | } 221 | } 222 | else { 223 | return (false, false) // insignificant change 224 | } 225 | } 226 | else { 227 | return (false, false) // too soon 228 | } 229 | } 230 | else { 231 | self.lastLocation = newLocation // first location 232 | return (true, true) 233 | } 234 | } 235 | 236 | // MARK: MGLMapViewDelegate 237 | 238 | func mapViewRegionIsChanging(_ mapView: MGLMapView) { 239 | objc_sync_enter(self) 240 | defer { objc_sync_exit(self) } 241 | 242 | // update coordinate of map 243 | centerCoordinate = mapView.centerCoordinate 244 | } 245 | 246 | // MARK: SCNSceneRendererDelegate 247 | 248 | // convert geographic coordinates to screen coordinates in the map view 249 | func coordinateToOverlayPosition(coordinate: CLLocationCoordinate2D) -> SCNVector3 { 250 | let p: CGPoint = mapView.convert(coordinate, toPointTo: mapView) 251 | return SCNVector3Make(Float(p.x), Float(sceneRect.size.height - p.y), 0) 252 | } 253 | 254 | func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { 255 | objc_sync_enter(self) 256 | defer { objc_sync_exit(self) } 257 | 258 | // if we don't have a map yet, we have no idea what to do 259 | if centerCoordinate == nil || lastLocation == nil { 260 | return 261 | } 262 | 263 | // calculate elapsed time since rendering started 264 | if renderStartTime == nil { 265 | renderStartTime = time - (1.0/60.0) 266 | } 267 | 268 | // parameters for rotation (objects rotate every 2 seconds) 269 | let dt = Float(time - renderStartTime!) 270 | let rotationSpeed = Float.pi 271 | 272 | // get pitch of map 273 | let mapPitchRads = Float(mapView.camera.pitch) * (Float.pi / 180.0) 274 | 275 | // update player 276 | let playerPoint = coordinateToOverlayPosition(coordinate: lastLocation!.coordinate) 277 | let scaleMat = SCNMatrix4MakeScale(4.0, 4.0, 4.0) 278 | playerNode.transform = SCNMatrix4Mult(scaleMat, 279 | SCNMatrix4Mult(SCNMatrix4MakeRotation(-mapPitchRads, 1, 0, 0), 280 | SCNMatrix4MakeTranslation(playerPoint.x, playerPoint.y, 0))) 281 | 282 | // update office 283 | let officePoint = coordinateToOverlayPosition(coordinate: officeNode.value(forKey: "coordinate") as! CLLocationCoordinate2D) 284 | officeNode.transform = 285 | SCNMatrix4Mult(SCNMatrix4MakeRotation(dt*rotationSpeed, 0, 1, 0), 286 | SCNMatrix4Mult(SCNMatrix4MakeRotation(mapPitchRads, 1, 0, 0), 287 | SCNMatrix4MakeTranslation(officePoint.x, officePoint.y, 0))) 288 | let nodeTapped = officeNode.value(forKey: "tapped") as! Bool 289 | officeNode.geometry?.firstMaterial?.diffuse.contents = nodeTapped ? UIColor.red : UIColor.white 290 | 291 | // update light position 292 | omniLightNode.position = SCNVector3Make(playerPoint.x, playerPoint.y + 30, 20) // magic number alert! 293 | 294 | // update camera 295 | let metersPerPoint = mapView.metersPerPoint(atLatitude: centerCoordinate!.latitude) 296 | let altitudePoints = mapView.camera.altitude / metersPerPoint 297 | let projMat = GLKMatrix4MakeOrtho(0, Float(sceneRect.size.width), // left, right 298 | 0, Float(sceneRect.size.height), // bottom, top 299 | 1, Float(altitudePoints+100)) // zNear, zFar 300 | cameraNode.position = SCNVector3Make(0, 0, Float(altitudePoints)) 301 | cameraNode.camera!.projectionTransform = SCNMatrix4FromGLKMatrix4(projMat) 302 | } 303 | 304 | // MARK: User input handling 305 | 306 | func onMapViewTapped(recognizer: UITapGestureRecognizer) { 307 | let point = recognizer.location(in: sceneView) 308 | let hitTestResults = sceneView.hitTest(point, options: [SCNHitTestOption.firstFoundOnly : true]) 309 | if hitTestResults.count > 0 { 310 | let node = hitTestResults.first!.node 311 | if node == officeNode { 312 | officeNode.setValue(true, forKey: "tapped") 313 | DispatchQueue.main.asyncAfter(deadline: .now() + 0.2, execute: { 314 | self.officeNode.setValue(false, forKey: "tapped") 315 | }) 316 | } 317 | } 318 | } 319 | } 320 | 321 | -------------------------------------------------------------------------------- /AR Demo App/AR Demo App/classy_crab.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/AR Demo App/classy_crab.stl -------------------------------------------------------------------------------- /AR Demo App/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | platform :ios, '9.0' 3 | 4 | target 'AR Demo App' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for AR Demo App 9 | pod 'Mapbox-iOS-SDK', '3.3.5' 10 | end 11 | -------------------------------------------------------------------------------- /AR Demo App/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Mapbox-iOS-SDK (3.3.5) 3 | 4 | DEPENDENCIES: 5 | - Mapbox-iOS-SDK (= 3.3.5) 6 | 7 | SPEC CHECKSUMS: 8 | Mapbox-iOS-SDK: a3ceda9e2a38b11a18a3d09645d34826e0ea1757 9 | 10 | PODFILE CHECKSUM: 1af9006a1b40a6df44780e4deb0328fec279813a 11 | 12 | COCOAPODS: 1.2.0 13 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Mapbox-iOS-SDK (3.3.5) 3 | 4 | DEPENDENCIES: 5 | - Mapbox-iOS-SDK (= 3.3.5) 6 | 7 | SPEC CHECKSUMS: 8 | Mapbox-iOS-SDK: a3ceda9e2a38b11a18a3d09645d34826e0ea1757 9 | 10 | PODFILE CHECKSUM: 1af9006a1b40a6df44780e4deb0328fec279813a 11 | 12 | COCOAPODS: 1.2.0 13 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/README.md: -------------------------------------------------------------------------------- 1 | # [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/) 2 | 3 | The Mapbox iOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 7.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox GL Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. 4 | 5 | For more information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) online. 6 | 7 | [![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/screenshot.png)]() 8 | 9 | ## Installation 10 | 11 | The Mapbox iOS SDK may be installed as either a dynamic framework or a static framework. (To reduce the download size, the static framework is omitted from some distributions; you may need to download the full package from the [release page](https://github.com/mapbox/mapbox-gl-native/releases/).) 12 | 13 | 14 | ### Dynamic framework 15 | 16 | This is the recommended workflow for manually integrating the SDK into an application targeting iOS 8 and above: 17 | 18 | 1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `dynamic` folder into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. 19 | 20 | 1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field: 21 | 22 | ```bash 23 | bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-frameworks.sh" 24 | ``` 25 | 26 | (The last step, courtesy of [Realm](https://github.com/realm/realm-cocoa/), is required for working around an [iOS App Store bug](http://www.openradar.me/radar?id=6409498411401216) when archiving universal binaries.) 27 | 28 | 29 | ## Configuration 30 | 31 | 1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). 32 | 33 | 1. In order to show the user’s current location on the map, the SDK must ask for the user’s permission to access Location Services. Go to the Info tab of the project editor. If your application supports iOS 7, set the `NSLocationUsageDescription` key to a message that explains to the user what their location is used for. If your application supports iOS 8 and above, set the `NSLocationAlwaysUsageDescription` and/or `NSLocationWhenInUseUsageDescription` key to this message instead. 34 | 35 | 1. _(Optional)_ Mapbox Telemetry is a [powerful location analytics platform](https://www.mapbox.com/telemetry/) included in this SDK. By default, anonymized location and usage data is sent to Mapbox whenever the host application causes it to be gathered. This SDK provides users with a way to individually opt out of Mapbox Telemetry. You can also add this opt-out setting to your application’s Settings screen using a Settings bundle. An example Settings.bundle is provided with this SDK; drag it into the Project navigator, checking “Copy items if needed” when prompted. In the project editor, verify that the following change occurred automatically: 36 | 37 | - In the General tab, Settings.bundle is listed in the “Copy Bundle Resources” build phase. 38 | 39 | ## Usage 40 | 41 | In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MGLMapView`. If you need to manipulate the map view programmatically: 42 | 43 | 1. Switch to the Assistant Editor. 44 | 1. Import the `Mapbox` module. 45 | 1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this: 46 | 47 | ```objc 48 | // ViewController.m 49 | @import Mapbox; 50 | 51 | @interface ViewController : UIViewController 52 | 53 | @property (strong) IBOutlet MGLMapView *mapView; 54 | 55 | @end 56 | ``` 57 | 58 | ```swift 59 | // ViewController.swift 60 | import Mapbox 61 | 62 | class ViewController: UIViewController { 63 | @IBOutlet var mapView: MGLMapView! 64 | } 65 | ``` 66 | 67 | Full API documentation is included in this package, within the `documentation` folder. For more details, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). 68 | 69 | If you have any questions, please [contact our support team](https://www.mapbox.com/contact/). We welcome your [bug reports and feature requests](https://github.com/mapbox/mapbox-gl-native/issues/). 70 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Base.lproj/Foundation.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Base.lproj/Foundation.strings -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Base.lproj/Localizable.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Base.lproj/Localizable.strings -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass@2x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Compass@3x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLAccountManager.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | /** 8 | The MGLAccountManager object provides a global way to set a Mapbox API access 9 | token. 10 | */ 11 | @interface MGLAccountManager : NSObject 12 | 13 | #pragma mark Authorizing Access 14 | 15 | /** 16 | Set the 17 | Mapbox access token 18 | to be used by all instances of MGLMapView in the current application. 19 | 20 | Mapbox-hosted vector tiles and styles require an API access token, which you 21 | can obtain from the 22 | Mapbox account page. 23 | Access tokens associate requests to Mapbox’s vector tile and style APIs with 24 | your Mapbox account. They also deter other developers from using your styles 25 | without your permission. 26 | 27 | @param accessToken A Mapbox access token. Calling this method with a value of 28 | `nil` has no effect. 29 | 30 | @note You must set the access token before attempting to load any Mapbox-hosted 31 | style. Therefore, you should generally set it before creating an instance of 32 | MGLMapView. The recommended way to set an access token is to add an entry to 33 | your application’s Info.plist file with the key `MGLMapboxAccessToken` and 34 | the type String. Alternatively, you may call this method from your 35 | application delegate’s `-applicationDidFinishLaunching:` method. 36 | */ 37 | + (void)setAccessToken:(nullable NSString *)accessToken; 38 | 39 | /** 40 | Returns the 41 | Mapbox access token 42 | in use by instances of MGLMapView in the current application. 43 | */ 44 | + (nullable NSString *)accessToken; 45 | 46 | + (BOOL)mapboxMetricsEnabledSettingShownInApp __attribute__((deprecated("Telemetry settings are now always shown in the ℹ️ menu."))); 47 | 48 | @end 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLAnnotation.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | #import "MGLTypes.h" 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /** 10 | The `MGLAnnotation` protocol is used to provide annotation-related information 11 | to a map view. To use this protocol, you adopt it in any custom objects that 12 | store or represent annotation data. Each object then serves as the source of 13 | information about a single map annotation and provides critical information, 14 | such as the annotation’s location on the map. Annotation objects do not provide 15 | the visual representation of the annotation but typically coordinate (in 16 | conjunction with the map view’s delegate) the creation of an appropriate 17 | objects to handle the display. 18 | 19 | An object that adopts this protocol must implement the `coordinate` property. 20 | The other methods of this protocol are optional. 21 | */ 22 | @protocol MGLAnnotation 23 | 24 | #pragma mark Position Attributes 25 | 26 | /** 27 | The center point (specified as a map coordinate) of the annotation. (required) 28 | (read-only) 29 | */ 30 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 31 | 32 | @optional 33 | 34 | #pragma mark Title Attributes 35 | 36 | /** 37 | The string containing the annotation’s title. 38 | 39 | Although this property is optional, if you support the selection of annotations 40 | in your map view, you are expected to provide this property. This string is 41 | displayed in the callout for the associated annotation. 42 | */ 43 | @property (nonatomic, readonly, copy, nullable) NSString *title; 44 | 45 | /** 46 | The string containing the annotation’s subtitle. 47 | 48 | This string is displayed in the callout for the associated annotation. 49 | */ 50 | @property (nonatomic, readonly, copy, nullable) NSString *subtitle; 51 | 52 | #if !TARGET_OS_IPHONE 53 | 54 | /** The string containing the annotation’s tooltip. */ 55 | @property (nonatomic, readonly, copy, nullable) NSString *toolTip; 56 | 57 | #endif 58 | 59 | @end 60 | 61 | NS_ASSUME_NONNULL_END 62 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLAnnotationImage.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | /** The MGLAnnotationImage class is responsible for presenting point-based annotations visually on a map view. Annotation image objects wrap `UIImage` objects and may be recycled later and put into a reuse queue that is maintained by the map view. */ 8 | @interface MGLAnnotationImage : NSObject 9 | 10 | #pragma mark Initializing and Preparing the Image Object 11 | 12 | /** 13 | Initializes and returns a new annotation image object. 14 | 15 | @param image The image to be displayed for the annotation. 16 | @param reuseIdentifier The string that identifies that this annotation image is reusable. 17 | @return The initialized annotation image object or `nil` if there was a problem initializing the object. 18 | */ 19 | + (instancetype)annotationImageWithImage:(UIImage *)image reuseIdentifier:(NSString *)reuseIdentifier; 20 | 21 | #pragma mark Getting and Setting Attributes 22 | 23 | /** The image to be displayed for the annotation. */ 24 | @property (nonatomic, strong, nullable) UIImage *image; 25 | 26 | /** 27 | The string that identifies that this annotation image is reusable. (read-only) 28 | 29 | You specify the reuse identifier when you create the image object. You use this type later to retrieve an annotation image object that was created previously but which is currently unused because its annotation is not on screen. 30 | 31 | If you define distinctly different types of annotations (with distinctly different annotation images to go with them), you can differentiate between the annotation types by specifying different reuse identifiers for each one. 32 | */ 33 | @property (nonatomic, readonly) NSString *reuseIdentifier; 34 | 35 | /** 36 | A Boolean value indicating whether the annotation is enabled. 37 | 38 | The default value of this property is `YES`. If the value of this property is `NO`, the annotation image ignores touch events and cannot be selected. 39 | */ 40 | @property (nonatomic, getter=isEnabled) BOOL enabled; 41 | 42 | @end 43 | 44 | NS_ASSUME_NONNULL_END 45 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLAnnotationView.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | @protocol MGLAnnotation; 8 | 9 | /** These constants indicate the current drag state of an annotation view. */ 10 | typedef NS_ENUM(NSUInteger, MGLAnnotationViewDragState) { 11 | /** 12 | The view is not involved in a drag operation. 13 | */ 14 | MGLAnnotationViewDragStateNone = 0, 15 | /** 16 | An action occurred that indicated the view should begin dragging. 17 | 18 | The map view automatically moves draggable annotation views to this state 19 | in response to the dragging the view after pressing and holding on it. 20 | */ 21 | MGLAnnotationViewDragStateStarting, 22 | /** 23 | The view is in the midst of a drag operation and is actively tracking the 24 | user’s gesture. 25 | */ 26 | MGLAnnotationViewDragStateDragging, 27 | /** 28 | An action occurred that indicated the view should cancel the drag 29 | operation. 30 | */ 31 | MGLAnnotationViewDragStateCanceling, 32 | /** 33 | An action occurred that indicated the view was dropped by the user. 34 | 35 | The map view automatically moves annotation views to this state in response 36 | to the user lifting their finger at the end of a drag gesture. 37 | */ 38 | MGLAnnotationViewDragStateEnding, 39 | }; 40 | 41 | /** 42 | The `MGLAnnotationView` class is responsible for marking a point annotation 43 | with a view. Annotation views represent an annotation object, which is an 44 | object that corresponds to the `MGLAnnotation` protocol. When an annotation’s 45 | geographic coordinate is visible in the map view, the map view asks its 46 | delegate to a corresponding annotation view. If an annotation view is created 47 | with a reuse identifier, the map view may recycle the view when it goes 48 | offscreen. 49 | 50 | Annotation views are compatible with UIKit, Core Animation, and other Cocoa 51 | Touch frameworks. On the other hand, if you do not need animation or 52 | interactivity such as dragging, you can use an `MGLAnnotationImage` instead to 53 | conserve memory and optimize drawing performance. 54 | */ 55 | @interface MGLAnnotationView : UIView 56 | 57 | #pragma mark Initializing and Preparing the View 58 | 59 | /** 60 | Initializes and returns a new annotation view object. 61 | 62 | The reuse identifier provides a way for you to improve performance by recycling 63 | annotation views as they enter and leave the map’s viewport. As an annotation 64 | leaves the viewport, the map view moves its associated view to a reuse queue. 65 | When a new annotation becomes visible, you can request a view for that 66 | annotation by passing the appropriate reuse identifier string to the 67 | `-[MGLMapView dequeueReusableAnnotationViewWithIdentifier:]` method. 68 | 69 | @param reuseIdentifier A unique string identifier for this view that allows you 70 | to reuse this view with multiple similar annotations. You can set this 71 | parameter to `nil` if you don’t intend to reuse the view, but it is a good 72 | idea in general to specify a reuse identifier to avoid creating redundant 73 | views. 74 | @return The initialized annotation view object. 75 | */ 76 | - (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier; 77 | 78 | /** 79 | Called when the view is removed from the reuse queue. 80 | 81 | The default implementation of this method does nothing. You can override it in 82 | your custom annotation view implementation to put the view in a known state 83 | before it is returned to your map view delegate. 84 | */ 85 | - (void)prepareForReuse; 86 | 87 | /** 88 | The annotation object currently associated with the view. 89 | 90 | You should not change the value of this property directly. This property 91 | contains a non-`nil` value while the annotation view is visible on the map. If 92 | the view is queued, waiting to be reused, the value is `nil`. 93 | */ 94 | @property (nonatomic, readonly, nullable) id annotation; 95 | 96 | /** 97 | The string that identifies that this annotation view is reusable. 98 | 99 | You specify the reuse identifier when you create the view. You use the 100 | identifier later to retrieve an annotation view that was created previously but 101 | which is currently unused because its annotation is not on-screen. 102 | 103 | If you define distinctly different types of annotations (with distinctly 104 | different annotation views to go with them), you can differentiate between the 105 | annotation types by specifying different reuse identifiers for each one. 106 | */ 107 | @property (nonatomic, readonly, nullable) NSString *reuseIdentifier; 108 | 109 | #pragma mark Configuring the Appearance 110 | 111 | /** 112 | The offset, measured in points, at which to place the center of the view. 113 | 114 | By default, the center point of an annotation view is placed at the geographic 115 | coordinate point of the associated annotation. If you do not want the view to 116 | be centered, you can use this property to reposition the view. The offset’s 117 | `dx` and `dy` values are measured in points. Positive offset values move the 118 | annotation view down and to the right, while negative values move it up and to 119 | the left. 120 | 121 | Set the offset if the annotation view’s visual center point is somewhere other 122 | than the logical center of the view. For example, the view may contain an image 123 | that depicts a downward-pointing pushpin or thumbtack, with the tip positioned 124 | at the center-bottom of the view. In that case, you would set the offset’s `dx` 125 | to zero and its `dy` to half the height of the view. 126 | */ 127 | @property (nonatomic) CGVector centerOffset; 128 | 129 | /** 130 | A Boolean value that determines whether the annotation view grows and shrinks 131 | as the distance between the viewpoint and the annotation view changes on a 132 | tilted map. 133 | 134 | When the value of this property is `YES` and the map is tilted, the annotation 135 | view appears smaller if it is towards the top of the view (closer to the 136 | horizon) and larger if it is towards the bottom of the view (closer to the 137 | viewpoint). This is also the behavior of `MGLAnnotationImage` objects. When the 138 | value of this property is `NO` or the map’s pitch is zero, the annotation view 139 | remains the same size regardless of its position on-screen. 140 | 141 | The default value of this property is `YES`. Set this property to `NO` if the 142 | view’s legibility is important. 143 | */ 144 | @property (nonatomic, assign) BOOL scalesWithViewingDistance; 145 | 146 | #pragma mark Managing the Selection State 147 | 148 | /** 149 | A Boolean value indicating whether the annotation view is currently selected. 150 | 151 | You should not set the value of this property directly. If the property is set 152 | to `YES`, the annotation view is displaying a callout. 153 | 154 | By default, this property is set to `NO` and becomes `YES` when the user taps 155 | the view. Selecting another annotation, whether it is associated with an 156 | `MGLAnnotationView` or `MGLAnnotationImage` object, deselects any currently 157 | selected view. 158 | 159 | Setting this property changes the view’s appearance to reflect the new value 160 | immediately. If you want the change to be animated, use the 161 | `-setSelected:animated:` method instead. 162 | */ 163 | @property (nonatomic, assign, getter=isSelected) BOOL selected; 164 | 165 | /** 166 | Sets the selection state of the annotation view with an optional animation. 167 | 168 | You should not call this method directly. A map view calls this method in 169 | response to user interactions with the annotation. Subclasses may override this 170 | method in order to customize the appearance of the view depending on its 171 | selection state. 172 | 173 | @param selected `YES` if the view should display itself as selected; `NO` 174 | if it should display itself as unselected. 175 | @param animated `YES` if the change in selection state is animated; `NO` if the 176 | change is immediate. 177 | */ 178 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated; 179 | 180 | /* 181 | A Boolean value indicating whether the annotation is enabled. 182 | 183 | The default value of this property is `YES`. If the value of this property is 184 | `NO`, the annotation view ignores touch events and cannot be selected. 185 | Subclasses may also customize the appearance of the view depending on its 186 | enabled state. 187 | */ 188 | @property (nonatomic, assign, getter=isEnabled) BOOL enabled; 189 | 190 | #pragma mark Supporting Drag Operations 191 | 192 | /** 193 | A Boolean value indicating whether the annotation view is draggable. 194 | 195 | If this property is set to `YES`, the user can drag the annotation after 196 | pressing and holding the view, and the associated annotation object must also 197 | implement the `-setCoordinate:` method. The default value of this property is 198 | `NO`. 199 | 200 | Setting this property to `YES` lets the map view know that the annotation is 201 | always draggable. In other words, you cannot conditionalize drag operations by 202 | attempting to stop an operation that has already been initiated; doing so can 203 | lead to undefined behavior. Once begun, the drag operation should always 204 | continue to completion. 205 | */ 206 | @property (nonatomic, assign, getter=isDraggable) BOOL draggable; 207 | 208 | /** 209 | The current drag state of the annotation view. 210 | 211 | All states are handled automatically when the `draggable` property is set to 212 | `YES`. To perform a custom animation in response to a change to this property, 213 | override the `-setDragState:animated:` method. 214 | */ 215 | @property (nonatomic, readonly) MGLAnnotationViewDragState dragState; 216 | 217 | /** 218 | Sets the current drag state for the annotation view. 219 | 220 | You can override this method to animate a custom annotation view as the user 221 | drags it. As the system detects user actions that would indicate a drag, it 222 | calls this method to update the drag state. 223 | */ 224 | - (void)setDragState:(MGLAnnotationViewDragState)dragState animated:(BOOL)animated NS_REQUIRES_SUPER; 225 | 226 | @end 227 | 228 | NS_ASSUME_NONNULL_END 229 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLCalloutView.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | @protocol MGLCalloutViewDelegate; 8 | @protocol MGLAnnotation; 9 | 10 | /** 11 | A protocol for a `UIView` subclass that displays information about a selected annotation near that annotation. 12 | */ 13 | @protocol MGLCalloutView 14 | 15 | /** 16 | An object conforming to the `MGLAnnotation` protocol whose details this callout view displays. 17 | */ 18 | @property (nonatomic, strong) id representedObject; 19 | 20 | /** 21 | A view that the user may tap to perform an action. This view is conventionally positioned on the left side of the callout view. 22 | */ 23 | @property (nonatomic, strong) UIView *leftAccessoryView; 24 | 25 | /** 26 | A view that the user may tap to perform an action. This view is conventionally positioned on the right side of the callout view. 27 | */ 28 | @property (nonatomic, strong) UIView *rightAccessoryView; 29 | 30 | /** 31 | An object conforming to the `MGLCalloutViewDelegate` method that receives messages related to the callout view’s interactive subviews. 32 | */ 33 | @property (nonatomic, weak) id delegate; 34 | 35 | /** 36 | Presents a callout view by adding it to `inView` and pointing at the given rect of `inView`’s bounds. Constrains the callout to the bounds of the given view. 37 | */ 38 | - (void)presentCalloutFromRect:(CGRect)rect inView:(UIView *)view constrainedToView:(UIView *)constrainedView animated:(BOOL)animated; 39 | 40 | /** 41 | Dismisses the callout view. 42 | */ 43 | - (void)dismissCalloutAnimated:(BOOL)animated; 44 | 45 | @end 46 | 47 | /** 48 | The MGLCalloutViewDelegate protocol defines a set of optional methods that you can use to receive messages from an object that conforms to the MGLCalloutView protocol. The callout view uses these methods to inform the delegate that the user has interacted with the the callout view. 49 | */ 50 | @protocol MGLCalloutViewDelegate 51 | 52 | @optional 53 | /** 54 | Returns a Boolean value indicating whether the entire callout view “highlights” when tapped. The default value is `YES`, which means the callout view highlights when tapped. 55 | 56 | The return value of this method is ignored unless the delegate also responds to the `-calloutViewTapped` method. 57 | */ 58 | - (BOOL)calloutViewShouldHighlight:(UIView *)calloutView; 59 | 60 | /** 61 | Tells the delegate that the callout view has been tapped. 62 | */ 63 | - (void)calloutViewTapped:(UIView *)calloutView; 64 | 65 | /** 66 | Called before the callout view appears on screen, or before the appearance animation will start. 67 | */ 68 | - (void)calloutViewWillAppear:(UIView *)calloutView; 69 | 70 | /** 71 | Called after the callout view appears on screen, or after the appearance animation is complete. 72 | */ 73 | - (void)calloutViewDidAppear:(UIView *)calloutView; 74 | 75 | @end 76 | 77 | NS_ASSUME_NONNULL_END 78 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLClockDirectionFormatter.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLTypes.h" 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /** 9 | The `MGLClockDirectionFormatter` class provides properly formatted descriptions 10 | of headings relative to the user, known as clock positions. For 11 | example, a value of `90` may be formatted as “3 o’clock”, depending on the 12 | locale. 13 | 14 | Use this class to create localized heading strings when displaying directions 15 | relative to the user’s current location and heading. To format a direction 16 | irrespective of the user’s orientation, use `MGLCompassDirectionFormatter` 17 | instead. 18 | */ 19 | @interface MGLClockDirectionFormatter : NSFormatter 20 | 21 | /** 22 | The unit style used by this formatter. 23 | 24 | This property defaults to `NSFormattingUnitStyleMedium`. 25 | */ 26 | @property (nonatomic) NSFormattingUnitStyle unitStyle; 27 | 28 | /** 29 | Returns a clock position string for the provided value. 30 | 31 | @param direction The heading, measured in degrees, where 0° means “straight 32 | ahead” and 90° means “directly to your right”. 33 | @return The clock position string appropriately formatted for the receiver’s 34 | locale. 35 | */ 36 | - (NSString *)stringFromDirection:(CLLocationDirection)direction; 37 | 38 | /** 39 | This method is not supported for the `MGLDirectionFormatter` class. 40 | */ 41 | - (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error; 42 | 43 | @end 44 | 45 | NS_ASSUME_NONNULL_END 46 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLCompassDirectionFormatter.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLTypes.h" 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /** 9 | The `MGLCompassDirectionFormatter` class provides properly formatted 10 | descriptions of absolute headings. For example, a value of `90` may be 11 | formatted as “east”, depending on the locale. 12 | 13 | Use this class to create localized heading strings when displaying directions 14 | irrespective of the user’s current location. To format a direction relative to 15 | the user’s current location, use `MGLCompassDirectionFormatter` instead. 16 | */ 17 | @interface MGLCompassDirectionFormatter : NSFormatter 18 | 19 | /** 20 | The unit style used by this formatter. 21 | 22 | This property defaults to `NSFormattingUnitStyleMedium`. 23 | */ 24 | @property (nonatomic) NSFormattingUnitStyle unitStyle; 25 | 26 | /** 27 | Returns a heading string for the provided value. 28 | 29 | @param direction The heading, measured in degrees, where 0° means “due north” 30 | and 90° means “due east”. 31 | @return The heading string appropriately formatted for the formatter’s locale. 32 | */ 33 | - (NSString *)stringFromDirection:(CLLocationDirection)direction; 34 | 35 | /** 36 | This method is not supported for the `MGLDirectionFormatter` class. 37 | */ 38 | - (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error; 39 | 40 | @end 41 | 42 | NS_ASSUME_NONNULL_END 43 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLCoordinateFormatter.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLTypes.h" 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /** 9 | The `MGLCoordinateFormatter` class provides properly formatted descriptions of 10 | geographic coordinate pairs. Use this class to create localized coordinate 11 | strings when displaying location information to users. 12 | */ 13 | @interface MGLCoordinateFormatter : NSFormatter 14 | 15 | /** 16 | Determines whether the output may contain minutes of arc when nonzero. 17 | 18 | The default value of this property is `YES`, causing the receiver to include 19 | minutes of arc in its output. If `allowsSeconds` is `YES`, this property is 20 | ignored and the output always includes minutes of arc. 21 | */ 22 | @property (nonatomic) BOOL allowsMinutes; 23 | 24 | /** 25 | Determines whether the output may contain seconds of arc when nonzero. 26 | 27 | The default value of this property is `YES`, causing the receiver to include 28 | seconds of arc in its output. 29 | */ 30 | @property (nonatomic) BOOL allowsSeconds; 31 | 32 | /** 33 | The unit style used by this formatter. 34 | 35 | The default value of this property is `NSFormattingUnitStyleMedium`. 36 | */ 37 | @property (nonatomic) NSFormattingUnitStyle unitStyle; 38 | 39 | /** 40 | Returns a coordinate string for the provided value. 41 | 42 | @param coordinate The coordinate’s value. 43 | @return The coordinate string appropriately formatted for the formatter’s 44 | locale. 45 | */ 46 | - (NSString *)stringFromCoordinate:(CLLocationCoordinate2D)coordinate; 47 | 48 | /** 49 | This method is not supported for the `MGLCoordinateFormatter` class. 50 | */ 51 | - (BOOL)getObjectValue:(out id __nullable * __nullable)obj forString:(NSString *)string errorDescription:(out NSString * __nullable * __nullable)error; 52 | 53 | @end 54 | 55 | NS_ASSUME_NONNULL_END 56 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLFeature.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLPolyline.h" 4 | #import "MGLPolygon.h" 5 | #import "MGLPointAnnotation.h" 6 | #import "MGLShapeCollection.h" 7 | 8 | #import "MGLTypes.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | The `MGLFeature` protocol is used to provide details about geographic features 14 | contained in a map view’s 15 | tile sources. 16 | Each concrete subclass of `MGLShape` in turn has a subclass that conforms to 17 | this protocol. 18 | 19 | Typically, you do not create feature objects yourself but rather obtain them 20 | using `-[MGLMapView visibleFeaturesAtPoint:]` and related methods. Each feature 21 | object associates a shape with an identifier and attributes as specified by the 22 | source. Like ordinary `MGLAnnotation` objects, some kinds of `MGLFeature` 23 | objects can also be added to a map view using `-[MGLMapView addAnnotations:]` 24 | and related methods. 25 | */ 26 | @protocol MGLFeature 27 | 28 | /** 29 | An object that uniquely identifies the feature in its containing 30 | tile source. 31 | 32 | The value of this property is currently always an `NSNumber` object but may in 33 | the future be an instance of another class, such as `NSString`. 34 | 35 | The identifier corresponds to the 36 | feature identifier 37 | (`id`) in the tile source. If the source does not specify the feature’s 38 | identifier, the value of this property is `nil`. 39 | 40 | For details about the identifiers used in most Mapbox-provided styles, consult 41 | the 42 | Mapbox Streets 43 | layer reference. 44 | */ 45 | @property (nonatomic, copy, nullable, readonly) id identifier; 46 | 47 | /** 48 | A dictionary of attributes for this feature specified by the 49 | tile source. 50 | 51 | The keys and values of this dictionary are determined by the tile source. In 52 | the tile source, each attribute name is a string, while each attribute value 53 | may be a null value, Boolean value, integer, floating-point number, or string. 54 | These data types are mapped to instances of the following Foundation classes: 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |
In the tile sourceIn this dictionary
Null NSNull
Boolean NSNumber (use the boolValue property)
Integer NSNumber (use the unsignedLongLongValue or longLongValue property)
Floating-point number NSNumber (use the doubleValue property)
String NSString
68 | 69 | For details about the attribute names and values found in Mapbox-provided 70 | vector tile sources, consult the 71 | Mapbox Streets 72 | and 73 | Mapbox Terrain 74 | layer references. 75 | */ 76 | @property (nonatomic, copy, readonly) NS_DICTIONARY_OF(NSString *, id) *attributes; 77 | 78 | /** 79 | Returns the feature attribute for the given attribute name. 80 | 81 | See the `attributes` property’s documentation for details on keys and values 82 | associated with this method. 83 | */ 84 | - (nullable id)attributeForKey:(NSString *)key; 85 | 86 | @end 87 | 88 | /** 89 | The `MGLPointFeature` class represents a point in a 90 | tile source. 91 | */ 92 | @interface MGLPointFeature : MGLPointAnnotation 93 | @end 94 | 95 | /** 96 | The `MGLPolylineFeature` class represents a polyline in a 97 | tile source. 98 | */ 99 | @interface MGLPolylineFeature : MGLPolyline 100 | @end 101 | 102 | /** 103 | The `MGLPolygonFeature` class represents a polygon in a 104 | tile source. 105 | */ 106 | @interface MGLPolygonFeature : MGLPolygon 107 | @end 108 | 109 | /** 110 | The `MGLMultiPointFeature` class represents a multipoint in a 111 | tile source. 112 | */ 113 | @interface MGLMultiPointFeature : MGLMultiPoint 114 | @end 115 | 116 | /** 117 | The `MGLMultiPolylineFeature` class represents a multipolyline in a 118 | tile source. 119 | */ 120 | @interface MGLMultiPolylineFeature : MGLMultiPolyline 121 | @end 122 | 123 | /** 124 | The `MGLMultiPolygonFeature` class represents a multipolygon in a 125 | tile source. 126 | */ 127 | @interface MGLMultiPolygonFeature : MGLMultiPolygon 128 | @end 129 | 130 | /** 131 | The `MGLShapeCollectionFeature` class represents a shape collection in a 132 | tile source. 133 | */ 134 | @interface MGLShapeCollectionFeature : MGLShapeCollection 135 | @end 136 | 137 | NS_ASSUME_NONNULL_END 138 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLGeometry.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | #import "MGLTypes.h" 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /** Defines the area spanned by an `MGLCoordinateBounds`. */ 10 | typedef struct MGLCoordinateSpan { 11 | /** Latitudes spanned by an `MGLCoordinateBounds`. */ 12 | CLLocationDegrees latitudeDelta; 13 | /** Longitudes spanned by an `MGLCoordinateBounds`. */ 14 | CLLocationDegrees longitudeDelta; 15 | } MGLCoordinateSpan; 16 | 17 | /** 18 | Creates a new `MGLCoordinateSpan` from the given latitudinal and longitudinal 19 | deltas. 20 | */ 21 | NS_INLINE MGLCoordinateSpan MGLCoordinateSpanMake(CLLocationDegrees latitudeDelta, CLLocationDegrees longitudeDelta) { 22 | MGLCoordinateSpan span; 23 | span.latitudeDelta = latitudeDelta; 24 | span.longitudeDelta = longitudeDelta; 25 | return span; 26 | } 27 | 28 | /** 29 | Returns `YES` if the two coordinate spans represent the same latitudinal change 30 | and the same longitudinal change. 31 | */ 32 | NS_INLINE BOOL MGLCoordinateSpanEqualToCoordinateSpan(MGLCoordinateSpan span1, MGLCoordinateSpan span2) { 33 | return (span1.latitudeDelta == span2.latitudeDelta && 34 | span1.longitudeDelta == span2.longitudeDelta); 35 | } 36 | 37 | /** An area of zero width and zero height. */ 38 | extern const MGLCoordinateSpan MGLCoordinateSpanZero; 39 | 40 | /** A rectangular area as measured on a two-dimensional map projection. */ 41 | typedef struct MGLCoordinateBounds { 42 | /** Coordinate at the southwest corner. */ 43 | CLLocationCoordinate2D sw; 44 | /** Coordinate at the northeast corner. */ 45 | CLLocationCoordinate2D ne; 46 | } MGLCoordinateBounds; 47 | 48 | /** 49 | Creates a new `MGLCoordinateBounds` structure from the given southwest and 50 | northeast coordinates. 51 | */ 52 | NS_INLINE MGLCoordinateBounds MGLCoordinateBoundsMake(CLLocationCoordinate2D sw, CLLocationCoordinate2D ne) { 53 | MGLCoordinateBounds bounds; 54 | bounds.sw = sw; 55 | bounds.ne = ne; 56 | return bounds; 57 | } 58 | 59 | /** Returns `YES` if the two coordinate bounds are equal to each other. */ 60 | NS_INLINE BOOL MGLCoordinateBoundsEqualToCoordinateBounds(MGLCoordinateBounds bounds1, MGLCoordinateBounds bounds2) { 61 | return (bounds1.sw.latitude == bounds2.sw.latitude && 62 | bounds1.sw.longitude == bounds2.sw.longitude && 63 | bounds1.ne.latitude == bounds2.ne.latitude && 64 | bounds1.ne.longitude == bounds2.ne.longitude); 65 | } 66 | 67 | /** Returns `YES` if the coordinate is within the coordinate bounds. */ 68 | NS_INLINE BOOL MGLCoordinateInCoordinateBounds(CLLocationCoordinate2D coordinate, MGLCoordinateBounds bounds) { 69 | return (coordinate.latitude >= bounds.sw.latitude && 70 | coordinate.latitude <= bounds.ne.latitude && 71 | coordinate.longitude >= bounds.sw.longitude && 72 | coordinate.longitude <= bounds.ne.longitude); 73 | } 74 | 75 | /** Returns the area spanned by the coordinate bounds. */ 76 | NS_INLINE MGLCoordinateSpan MGLCoordinateBoundsGetCoordinateSpan(MGLCoordinateBounds bounds) { 77 | return MGLCoordinateSpanMake(bounds.ne.latitude - bounds.sw.latitude, 78 | bounds.ne.longitude - bounds.sw.longitude); 79 | } 80 | 81 | /** 82 | Returns a coordinate bounds with southwest and northeast coordinates that are 83 | offset from those of the source bounds. 84 | */ 85 | NS_INLINE MGLCoordinateBounds MGLCoordinateBoundsOffset(MGLCoordinateBounds bounds, MGLCoordinateSpan offset) { 86 | MGLCoordinateBounds offsetBounds = bounds; 87 | offsetBounds.sw.latitude += offset.latitudeDelta; 88 | offsetBounds.sw.longitude += offset.longitudeDelta; 89 | offsetBounds.ne.latitude += offset.latitudeDelta; 90 | offsetBounds.ne.longitude += offset.longitudeDelta; 91 | return offsetBounds; 92 | } 93 | 94 | /** 95 | Returns `YES` if the coordinate bounds covers no area. 96 | 97 | @note A bounds may be empty but have a non-zero coordinate span (e.g., when its 98 | northeast point lies due north of its southwest point). 99 | */ 100 | NS_INLINE BOOL MGLCoordinateBoundsIsEmpty(MGLCoordinateBounds bounds) { 101 | MGLCoordinateSpan span = MGLCoordinateBoundsGetCoordinateSpan(bounds); 102 | return span.latitudeDelta == 0 || span.longitudeDelta == 0; 103 | } 104 | 105 | /** Returns a formatted string for the given coordinate bounds. */ 106 | NS_INLINE NSString *MGLStringFromCoordinateBounds(MGLCoordinateBounds bounds) { 107 | return [NSString stringWithFormat:@"{ sw = {%.1f, %.1f}, ne = {%.1f, %.1f}}", 108 | bounds.sw.latitude, bounds.sw.longitude, 109 | bounds.ne.latitude, bounds.ne.longitude]; 110 | } 111 | 112 | /** Returns radians, converted from degrees. */ 113 | NS_INLINE CGFloat MGLRadiansFromDegrees(CLLocationDegrees degrees) { 114 | return (CGFloat)(degrees * M_PI) / 180; 115 | } 116 | 117 | /** Returns degrees, converted from radians. */ 118 | NS_INLINE CLLocationDegrees MGLDegreesFromRadians(CGFloat radians) { 119 | return radians * 180 / M_PI; 120 | } 121 | 122 | /** 123 | Methods for round-tripping Mapbox geometry structure values. 124 | */ 125 | @interface NSValue (MGLGeometryAdditions) 126 | 127 | @end 128 | 129 | NS_ASSUME_NONNULL_END 130 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLMapCamera.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | #import "MGLTypes.h" 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /** 10 | An `MGLMapCamera` object represents a viewpoint from which the user observes 11 | some point on an `MGLMapView`. 12 | */ 13 | @interface MGLMapCamera : NSObject 14 | 15 | /** Coordinate at the center of the map view. */ 16 | @property (nonatomic) CLLocationCoordinate2D centerCoordinate; 17 | 18 | /** Heading measured in degrees clockwise from true north. */ 19 | @property (nonatomic) CLLocationDirection heading; 20 | 21 | /** 22 | Pitch toward the horizon measured in degrees, with 0 degrees resulting in a 23 | two-dimensional map. 24 | */ 25 | @property (nonatomic) CGFloat pitch; 26 | 27 | /** Meters above ground level. */ 28 | @property (nonatomic) CLLocationDistance altitude; 29 | 30 | /** Returns a new camera with all properties set to 0. */ 31 | + (instancetype)camera; 32 | 33 | /** 34 | Returns a new camera using based on information about the camera’s viewpoint 35 | and focus point. 36 | 37 | @param centerCoordinate The geographic coordinate on which the map should be 38 | centered. 39 | @param eyeCoordinate The geometric coordinate at which the camera should be 40 | situated. 41 | @param eyeAltitude The altitude (measured in meters) above the map at which the 42 | camera should be situated. The altitude may be less than the distance from 43 | the camera’s viewpoint to the camera’s focus point. 44 | */ 45 | + (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate 46 | fromEyeCoordinate:(CLLocationCoordinate2D)eyeCoordinate 47 | eyeAltitude:(CLLocationDistance)eyeAltitude; 48 | 49 | /** 50 | Returns a new camera with the given distance, pitch, and heading. 51 | 52 | @param centerCoordinate The geographic coordinate on which the map should be 53 | centered. 54 | @param distance The straight-line distance from the viewpoint to the 55 | `centerCoordinate`. 56 | @param pitch The viewing angle of the camera, measured in degrees. A value of 57 | `0` results in a camera pointed straight down at the map. Angles greater 58 | than `0` result in a camera angled toward the horizon. 59 | @param heading The camera’s heading, measured in degrees clockwise from true 60 | north. A value of `0` means that the top edge of the map view corresponds to 61 | true north. The value `90` means the top of the map is pointing due east. 62 | The value `180` means the top of the map points due south, and so on. 63 | */ 64 | + (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate 65 | fromDistance:(CLLocationDistance)distance 66 | pitch:(CGFloat)pitch 67 | heading:(CLLocationDirection)heading; 68 | 69 | @end 70 | 71 | NS_ASSUME_NONNULL_END 72 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLMapView+IBAdditions.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | @class MGLMapView; 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @interface MGLMapView (IBAdditions) 10 | 11 | // Core properties that can be manipulated in the Attributes inspector in 12 | // Interface Builder. These redeclarations merely add the IBInspectable keyword. 13 | // They appear here to ensure that they appear above the convenience properties; 14 | // inspectables declared in MGLMapView.h are always sorted before those in 15 | // MGLMapView+IBAdditions.h, due to ASCII sort order. 16 | 17 | #if TARGET_INTERFACE_BUILDER 18 | 19 | // HACK: We want this property to look like a URL bar in the Attributes 20 | // inspector, but just calling it styleURL would violate Cocoa naming 21 | // conventions and conflict with the existing NSURL property. Fortunately, IB 22 | // strips out the two underscores for display. 23 | @property (nonatomic, nullable) IBInspectable NSString *styleURL__; 24 | 25 | #endif // TARGET_INTERFACE_BUILDER 26 | 27 | // Convenience properties related to the initial viewport. These properties 28 | // are not meant to be used outside of Interface Builder. latitude and longitude 29 | // are backed by properties of type CLLocationDegrees, but these declarations 30 | // must use the type double because Interface Builder is unaware that 31 | // CLLocationDegrees is a typedef for double. 32 | 33 | @property (nonatomic) IBInspectable double latitude; 34 | @property (nonatomic) IBInspectable double longitude; 35 | @property (nonatomic) IBInspectable double zoomLevel; 36 | 37 | // Renamed properties. Interface Builder derives the display name of each 38 | // inspectable from the runtime name, but runtime names don’t always make sense 39 | // in UI. 40 | 41 | @property (nonatomic) IBInspectable BOOL allowsZooming; 42 | @property (nonatomic) IBInspectable BOOL allowsScrolling; 43 | @property (nonatomic) IBInspectable BOOL allowsRotating; 44 | @property (nonatomic) IBInspectable BOOL allowsTilting; 45 | @property (nonatomic) IBInspectable BOOL showsUserLocation; 46 | 47 | @end 48 | 49 | NS_ASSUME_NONNULL_END 50 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLMapView+MGLCustomStyleLayerAdditions.h: -------------------------------------------------------------------------------- 1 | #import "MGLMapView.h" 2 | 3 | NS_ASSUME_NONNULL_BEGIN 4 | 5 | typedef void (^MGLCustomStyleLayerPreparationHandler)(void); 6 | 7 | typedef void (^MGLCustomStyleLayerDrawingHandler)(CGSize size, 8 | CLLocationCoordinate2D centerCoordinate, 9 | double zoomLevel, 10 | CLLocationDirection direction, 11 | CGFloat pitch, 12 | CGFloat perspectiveSkew); 13 | 14 | typedef void (^MGLCustomStyleLayerCompletionHandler)(void); 15 | 16 | @interface MGLMapView (MGLCustomStyleLayerAdditions) 17 | 18 | - (void)insertCustomStyleLayerWithIdentifier:(NSString *)identifier preparationHandler:(MGLCustomStyleLayerPreparationHandler)preparation drawingHandler:(MGLCustomStyleLayerDrawingHandler)drawing completionHandler:(MGLCustomStyleLayerCompletionHandler)completion belowStyleLayerWithIdentifier:(nullable NSString *)otherIdentifier; 19 | 20 | - (void)removeCustomStyleLayerWithIdentifier:(NSString *)identifier; 21 | 22 | - (void)setCustomStyleLayersNeedDisplay; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLMultiPoint.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLShape.h" 5 | 6 | #import "MGLTypes.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | /** 11 | The `MGLMultiPoint` class is an abstract superclass used to define shapes 12 | composed of multiple points. You should not create instances of this class 13 | directly. Instead, you should create instances of the `MGLPolyline` or 14 | `MGLPolygon` classes. However, you can use the method and properties of this 15 | class to access information about the specific points associated with the line 16 | or polygon. 17 | */ 18 | @interface MGLMultiPoint : MGLShape 19 | 20 | /** The array of coordinates associated with the shape. */ 21 | @property (nonatomic, readonly) CLLocationCoordinate2D *coordinates NS_RETURNS_INNER_POINTER; 22 | 23 | /** The number of coordinates associated with the shape. (read-only) */ 24 | @property (nonatomic, readonly) NSUInteger pointCount; 25 | 26 | /** 27 | Retrieves one or more coordinates associated with the shape. 28 | 29 | @param coords On input, you must provide a C array of structures large enough 30 | to hold the desired number of coordinates. On output, this structure 31 | contains the requested coordinate data. 32 | @param range The range of points you want. The `location` field indicates the 33 | first point you are requesting, with `0` being the first point, `1` being 34 | the second point, and so on. The `length` field indicates the number of 35 | points you want. The array in _`coords`_ must be large enough to accommodate 36 | the number of requested coordinates. 37 | */ 38 | - (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range; 39 | 40 | @end 41 | 42 | NS_ASSUME_NONNULL_END 43 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLOfflinePack.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLOfflineRegion.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | /** 8 | The state an offline pack is currently in. 9 | */ 10 | typedef NS_ENUM (NSInteger, MGLOfflinePackState) { 11 | /** 12 | It is unknown whether the pack is inactive, active, or complete. 13 | 14 | This is the initial state of a pack. The state of a pack becomes known by 15 | the time the shared `MGLOfflineStorage` object sends the first 16 | `MGLOfflinePackProgressChangedNotification` about the pack. For inactive 17 | packs, you must explicitly request a progress update using the 18 | `-[MGLOfflinePack requestProgress]` method. 19 | 20 | An invalid pack always has a state of `MGLOfflinePackStateInvalid`, never 21 | `MGLOfflinePackStateUnknown`. 22 | */ 23 | MGLOfflinePackStateUnknown = 0, 24 | /** 25 | The pack is incomplete and is not currently downloading. 26 | 27 | This is the initial state of a pack that is created using the 28 | `-[MGLOfflinePack addPackForRegion:withContext:completionHandler:]` method, 29 | as well as after the `-[MGLOfflinePack suspend]` method is 30 | called. 31 | */ 32 | MGLOfflinePackStateInactive = 1, 33 | /** 34 | The pack is incomplete and is currently downloading. 35 | 36 | This is the state of a pack after the `-[MGLOfflinePack resume]` method is 37 | called. 38 | */ 39 | MGLOfflinePackStateActive = 2, 40 | /** 41 | The pack has downloaded to completion. 42 | */ 43 | MGLOfflinePackStateComplete = 3, 44 | /** 45 | The pack has been removed using the 46 | `-[MGLOfflineStorage removePack:withCompletionHandler:]` method. Sending 47 | any message to the pack will raise an exception. 48 | */ 49 | MGLOfflinePackStateInvalid = 4, 50 | }; 51 | 52 | /** 53 | A structure containing information about an offline pack’s current download 54 | progress. 55 | */ 56 | typedef struct MGLOfflinePackProgress { 57 | /** 58 | The number of resources, including tiles, that have been completely 59 | downloaded and are ready to use offline. 60 | */ 61 | uint64_t countOfResourcesCompleted; 62 | /** 63 | The cumulative size of the downloaded resources on disk, including tiles, 64 | measured in bytes. 65 | */ 66 | uint64_t countOfBytesCompleted; 67 | /** 68 | The number of tiles that have been completely downloaded and are ready 69 | to use offline. 70 | */ 71 | uint64_t countOfTilesCompleted; 72 | /** 73 | The cumulative size of the downloaded tiles on disk, measured in bytes. 74 | */ 75 | uint64_t countOfTileBytesCompleted; 76 | /** 77 | The minimum number of resources that must be downloaded in order to view 78 | the pack’s full region without any omissions. 79 | 80 | At the beginning of a download, this count is a lower bound; the number of 81 | expected resources may increase as the download progresses. 82 | */ 83 | uint64_t countOfResourcesExpected; 84 | /** 85 | The maximum number of resources that must be downloaded in order to view 86 | the pack’s full region without any omissions. 87 | 88 | At the beginning of a download, when the exact number of required resources 89 | is unknown, this field is set to `UINT64_MAX`. Thus this count is always an 90 | upper bound. 91 | */ 92 | uint64_t maximumResourcesExpected; 93 | } MGLOfflinePackProgress; 94 | 95 | /** 96 | An `MGLOfflinePack` represents a collection of resources necessary for viewing 97 | a region offline to a local database. 98 | 99 | To create an instance of `MGLOfflinePack`, use the 100 | `+[MGLOfflineStorage addPackForRegion:withContext:completionHandler:]` method. 101 | A pack created using `-[MGLOfflinePack init]` is immediately invalid. 102 | */ 103 | @interface MGLOfflinePack : NSObject 104 | 105 | /** 106 | The region for which the pack manages resources. 107 | */ 108 | @property (nonatomic, readonly) id region; 109 | 110 | /** 111 | Arbitrary data stored alongside the downloaded resources. 112 | 113 | The context typically holds application-specific information for identifying 114 | the pack, such as a user-selected name. 115 | */ 116 | @property (nonatomic, readonly) NSData *context; 117 | 118 | /** 119 | The pack’s current state. 120 | 121 | The state of an inactive or completed pack is computed lazily and is set to 122 | `MGLOfflinePackStateUnknown` by default. To request the pack’s status, use the 123 | `-requestProgress` method. To get notified when the state becomes known and 124 | when it changes, observe KVO change notifications on this pack’s `state` key 125 | path. Alternatively, you can add an observer for 126 | `MGLOfflinePackProgressChangedNotification`s about this pack that come from the 127 | default notification center. 128 | */ 129 | @property (nonatomic, readonly) MGLOfflinePackState state; 130 | 131 | /** 132 | The pack’s current progress. 133 | 134 | The progress of an inactive or completed pack is computed lazily, and all its 135 | fields are set to 0 by default. To request the pack’s progress, use the 136 | `-requestProgress` method. To get notified when the progress becomes 137 | known and when it changes, observe KVO change notifications on this pack’s 138 | `state` key path. Alternatively, you can add an observer for 139 | `MGLOfflinePackProgressChangedNotification`s about this pack that come from the 140 | default notification center. 141 | */ 142 | @property (nonatomic, readonly) MGLOfflinePackProgress progress; 143 | 144 | /** 145 | Resumes downloading if the pack is inactive. 146 | 147 | A pack resumes asynchronously. To get notified when this pack resumes, observe 148 | KVO change notifications on this pack’s `state` key path. Alternatively, you 149 | can add an observer for `MGLOfflinePackProgressChangedNotification`s about this 150 | pack that come from the default notification center. 151 | 152 | When a pack resumes after being suspended, it may begin by iterating over the 153 | already downloaded resources. As a result, the `progress` structure’s 154 | `countOfResourcesCompleted` field may revert to 0 before rapidly returning to 155 | the level of progress at the time the pack was suspended. 156 | 157 | To temporarily suspend downloading, call the `-suspend` method. 158 | */ 159 | - (void)resume; 160 | 161 | /** 162 | Temporarily stops downloading if the pack is active. 163 | 164 | A pack suspends asynchronously. To get notified when this pack resumes, observe 165 | KVO change notifications on this pack’s `state` key path. Alternatively, you 166 | can add an observer for `MGLOfflinePackProgressChangedNotification` about this 167 | pack that come from the default notification center. 168 | 169 | If the pack previously reached a higher level of progress before being 170 | suspended, it may wait to suspend until it returns to that level. 171 | 172 | To resume downloading, call the `-resume` method. 173 | */ 174 | - (void)suspend; 175 | 176 | /** 177 | Request an asynchronous update to the pack’s `state` and `progress` properties. 178 | 179 | The state and progress of an inactive or completed pack are computed lazily. If 180 | you need the state or progress of a pack whose `state` property is currently 181 | set to `MGLOfflinePackStateUnknown`, observe KVO change notifications on this 182 | pack’s `state` key path, then call this method. Alternatively, you can add an 183 | observer for `MGLOfflinePackProgressChangedNotification` about this pack that 184 | come from the default notification center. 185 | */ 186 | - (void)requestProgress; 187 | 188 | @end 189 | 190 | NS_ASSUME_NONNULL_END 191 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLOfflineRegion.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | /** 8 | An object conforming to the `MGLOfflineRegion` protocol determines which 9 | resources are required by an `MGLOfflinePack` object. At present, only 10 | instances of `MGLTilePyramidOfflineRegion` may be used as `MGLOfflinePack` 11 | regions, but additional conforming implementations may be added in the future. 12 | */ 13 | @protocol MGLOfflineRegion 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLOfflineStorage.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | @class MGLOfflinePack; 8 | @protocol MGLOfflineRegion; 9 | 10 | /** 11 | Posted by the shared `MGLOfflineStorage` object when an `MGLOfflinePack` 12 | object’s progress changes. The progress may change due to a resource being 13 | downloaded or because the pack discovers during the download that more 14 | resources are required for offline viewing. This notification is posted 15 | whenever any field in the `progress` property changes. 16 | 17 | The `object` is the `MGLOfflinePack` object whose progress changed. The 18 | `userInfo` dictionary contains the pack’s current state in the 19 | `MGLOfflinePackStateUserInfoKey` key and details about the pack’s current 20 | progress in the `MGLOfflinePackProgressUserInfoKey` key. You may also consult 21 | the pack’s `state` and `progress` properties, which provide the same values. 22 | 23 | If you only need to observe changes in a particular pack’s progress, you can 24 | alternatively observe KVO change notifications to the pack’s `progress` key 25 | path. 26 | */ 27 | extern NSString * const MGLOfflinePackProgressChangedNotification; 28 | 29 | /** 30 | Posted by the shared `MGLOfflineStorage` object whenever an `MGLOfflinePack` 31 | object encounters an error while downloading. The error may be recoverable and 32 | may not warrant the user’s attention. For example, the pack’s implementation 33 | may attempt to re-request failed resources based on an exponential backoff 34 | strategy or upon the restoration of network access. 35 | 36 | The `object` is the `MGLOfflinePack` object that encountered the error. The 37 | `userInfo` dictionary contains the error object in the 38 | `MGLOfflinePackErrorUserInfoKey` key. 39 | */ 40 | extern NSString * const MGLOfflinePackErrorNotification; 41 | 42 | /** 43 | Posted by the shared `MGLOfflineStorage` object when the maximum number of 44 | Mapbox-hosted tiles has been downloaded and stored on the current device. 45 | 46 | The `object` is the `MGLOfflinePack` object that reached the tile limit in the 47 | course of downloading. The `userInfo` dictionary contains the tile limit in the 48 | `MGLOfflinePackMaximumCountUserInfoKey` key. 49 | 50 | Once this limit is reached, no instance of `MGLOfflinePack` can download 51 | additional tiles from Mapbox APIs until already downloaded tiles are removed by 52 | calling the `-[MGLOfflineStorage removePack:withCompletionHandler:]` method. 53 | Contact your Mapbox sales representative to have the limit raised. 54 | */ 55 | extern NSString * const MGLOfflinePackMaximumMapboxTilesReachedNotification; 56 | 57 | /** 58 | The key for an `NSNumber` object that indicates an offline pack’s current 59 | state. This key is used in the `userInfo` dictionary of an 60 | `MGLOfflinePackProgressChangedNotification` notification. Call `-integerValue` 61 | on the object to receive the `MGLOfflinePackState`-typed state. 62 | */ 63 | extern NSString * const MGLOfflinePackStateUserInfoKey; 64 | 65 | /** 66 | The key for an `NSValue` object that indicates an offline pack’s current 67 | progress. This key is used in the `userInfo` dictionary of an 68 | `MGLOfflinePackProgressChangedNotification` notification. Call 69 | `-MGLOfflinePackProgressValue` on the object to receive the 70 | `MGLOfflinePackProgress`-typed progress. 71 | */ 72 | extern NSString * const MGLOfflinePackProgressUserInfoKey; 73 | 74 | /** 75 | The key for an `NSError` object that is encountered in the course of 76 | downloading an offline pack. This key is used in the `userInfo` dictionary of 77 | an `MGLOfflinePackErrorNotification` notification. The error’s domain is 78 | `MGLErrorDomain`. See `MGLErrorCode` for possible error codes. 79 | */ 80 | extern NSString * const MGLOfflinePackErrorUserInfoKey; 81 | 82 | /** 83 | The key for an `NSNumber` object that indicates the maximum number of 84 | Mapbox-hosted tiles that may be downloaded and stored on the current device. 85 | This key is used in the `userInfo` dictionary of an 86 | `MGLOfflinePackMaximumMapboxTilesReachedNotification` notification. Call 87 | `-unsignedLongLongValue` on the object to receive the `uint64_t`-typed tile 88 | limit. 89 | */ 90 | extern NSString * const MGLOfflinePackMaximumCountUserInfoKey; 91 | 92 | /** 93 | A block to be called once an offline pack has been completely created and 94 | added. 95 | 96 | An application typically calls the `-resume` method on the pack inside this 97 | completion handler to begin the download. 98 | 99 | @param pack Contains a pointer to the newly added pack, or `nil` if there was 100 | an error creating or adding the pack. 101 | @param error Contains a pointer to an error object (if any) indicating why the 102 | pack could not be created or added. 103 | */ 104 | typedef void (^MGLOfflinePackAdditionCompletionHandler)(MGLOfflinePack * _Nullable pack, NSError * _Nullable error); 105 | 106 | /** 107 | A block to be called once an offline pack has been completely invalidated and 108 | removed. 109 | 110 | Avoid any references to the pack inside this completion handler: by the time 111 | this completion handler is executed, the pack has become invalid, and any 112 | messages passed to it will raise an exception. 113 | 114 | @param error Contains a pointer to an error object (if any) indicating why the 115 | pack could not be invalidated or removed. 116 | */ 117 | typedef void (^MGLOfflinePackRemovalCompletionHandler)(NSError * _Nullable error); 118 | 119 | /** 120 | MGLOfflineStorage implements a singleton (shared object) that manages offline 121 | packs. All of this class’s instance methods are asynchronous, reflecting the 122 | fact that offline resources are stored in a database. The shared object 123 | maintains a canonical collection of offline packs in its `packs` property. 124 | */ 125 | @interface MGLOfflineStorage : NSObject 126 | 127 | /** 128 | Returns the shared offline storage object. 129 | */ 130 | + (instancetype)sharedOfflineStorage; 131 | 132 | /** 133 | An array of all known offline packs, in the order in which they were created. 134 | 135 | This property is set to `nil`, indicating that the receiver does not yet know 136 | the existing packs, for an undefined amount of time starting from the moment 137 | the shared offline storage object is initialized until the packs are fetched 138 | from the database. After that point, this property is always non-nil, but it 139 | may be empty to indicate that no packs are present. 140 | 141 | To detect when the shared offline storage object has finished loading its 142 | `packs` property, observe KVO change notifications on the `packs` key path. 143 | The initial load results in an `NSKeyValueChangeSetting` change. 144 | */ 145 | @property (nonatomic, strong, readonly, nullable) NS_ARRAY_OF(MGLOfflinePack *) *packs; 146 | 147 | /** 148 | Creates and registers an offline pack that downloads the resources needed to 149 | use the given region offline. 150 | 151 | The resulting pack is added to the shared offline storage object’s `packs` 152 | property, then the `completion` block is executed with that pack passed in. 153 | 154 | The pack has an initial state of `MGLOfflinePackStateInactive`. To begin 155 | downloading resources, call `-[MGLOfflinePack resume]` on the pack from within 156 | the completion handler. To monitor download progress, add an observer for 157 | `MGLOfflinePackProgressChangedNotification`s about that pack. 158 | 159 | To detect when any call to this method results in a new pack, observe KVO 160 | change notifications on the shared offline storage object’s `packs` key path. 161 | Additions to that array result in an `NSKeyValueChangeInsertion` change. 162 | 163 | @param region A region to download. 164 | @param context Arbitrary data to store alongside the downloaded resources. 165 | @param completion The completion handler to call once the pack has been added. 166 | This handler is executed asynchronously on the main queue. 167 | */ 168 | - (void)addPackForRegion:(id )region withContext:(NSData *)context completionHandler:(nullable MGLOfflinePackAdditionCompletionHandler)completion; 169 | 170 | /** 171 | Unregisters the given offline pack and frees any resources that are no longer 172 | required by any remaining packs. 173 | 174 | As soon as this method is called on a pack, the pack becomes invalid; any 175 | attempt to send it a message will result in an exception being thrown. If an 176 | error occurs and the pack cannot be removed, do not attempt to reuse the pack 177 | object. Instead, if you need continued access to the pack, suspend all packs 178 | and use the `-reloadPacks` method to obtain valid pointers to all the packs. 179 | 180 | To detect when any call to this method results in a pack being removed, observe 181 | KVO change notifications on the shared offline storage object’s `packs` key 182 | path. Removals from that array result in an `NSKeyValueChangeRemoval` change. 183 | 184 | @param pack The offline pack to remove. 185 | @param completion The completion handler to call once the pack has been 186 | removed. This handler is executed asynchronously on the main queue. 187 | */ 188 | - (void)removePack:(MGLOfflinePack *)pack withCompletionHandler:(nullable MGLOfflinePackRemovalCompletionHandler)completion; 189 | 190 | /** 191 | Forcibly, asynchronously reloads the `packs` property. At some point after this 192 | method is called, the pointer values of the `MGLOfflinePack` objects in the 193 | `packs` property change, even if the underlying data for these packs has not 194 | changed. If this method is called while a pack is actively downloading, the 195 | behavior is undefined. 196 | 197 | You typically do not need to call this method. 198 | 199 | To detect when the shared offline storage object has finished reloading its 200 | `packs` property, observe KVO change notifications on the `packs` key path. 201 | A reload results in an `NSKeyValueChangeSetting` change. 202 | */ 203 | - (void)reloadPacks; 204 | 205 | /** 206 | Sets the maximum number of Mapbox-hosted tiles that may be downloaded and 207 | stored on the current device. 208 | 209 | Once this limit is reached, an 210 | `MGLOfflinePackMaximumMapboxTilesReachedNotification` is posted for every 211 | attempt to download additional tiles until already downloaded tiles are removed 212 | by calling the `-removePack:withCompletionHandler:` method. 213 | 214 | @note The Mapbox Terms of Service 215 | prohibits changing or bypassing this limit without permission from Mapbox. 216 | Contact your Mapbox sales representative to have the limit raised. 217 | */ 218 | - (void)setMaximumAllowedMapboxTiles:(uint64_t)maximumCount; 219 | 220 | /** 221 | The cumulative size, measured in bytes, of all downloaded resources on disk. 222 | 223 | The returned value includes all resources, including tiles, whether downloaded 224 | as part of an offline pack or due to caching during normal use of `MGLMapView`. 225 | */ 226 | @property (nonatomic, readonly) unsigned long long countOfBytesCompleted; 227 | 228 | @end 229 | 230 | NS_ASSUME_NONNULL_END 231 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLOverlay.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLAnnotation.h" 5 | #import "MGLGeometry.h" 6 | 7 | #import "MGLTypes.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /** 12 | The `MGLOverlay` protocol defines a specific type of annotation that represents 13 | both a point and an area on a map. Overlay objects are essentially data objects 14 | that contain the geographic data needed to represent the map area. For example, 15 | overlays can take the form of common shapes such as rectangles and circles. 16 | They can also describe polygons and other complex shapes. 17 | 18 | You use overlays to layer more sophisticated content on top of a map view. For 19 | example, you could use an overlay to show the boundaries of a national park or 20 | trace a bus route along city streets. This SDK defines several concrete classes 21 | that conform to this protocol and define standard shapes. 22 | 23 | Because overlays are also annotations, they have similar usage pattern to 24 | annotations. When added to a map view using the `-addOverlay:` method, that 25 | view detects whenever the overlay’s defined region intersects the visible 26 | portion of the map. At that point, the map view asks its delegate to provide a 27 | special overlay view to draw the visual representation of the overlay. If you 28 | add an overlay to a map view as an annotation instead, it is treated as an 29 | annotation with a single point. 30 | */ 31 | @protocol MGLOverlay 32 | 33 | /** 34 | The approximate center point of the overlay area. (required) (read-only) 35 | 36 | This point is typically set to the center point of the map’s bounding 37 | rectangle. It is used as the anchor point for any callouts displayed for the 38 | annotation. 39 | */ 40 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 41 | 42 | /** 43 | The cooordinate rectangle that encompasses the overlay. (required) (read-only) 44 | 45 | This property contains the smallest rectangle that completely encompasses the 46 | overlay. Implementers of this protocol must set this area when implementing 47 | their overlay class, and after setting it, you must not change it. 48 | */ 49 | @property (nonatomic, readonly) MGLCoordinateBounds overlayBounds; 50 | 51 | /** 52 | Returns a Boolean indicating whether the specified rectangle intersects the 53 | receiver’s shape. 54 | 55 | You can implement this method to provide more specific bounds checking for an 56 | overlay. If you do not implement it, the bounding rectangle is used to detect 57 | intersections. 58 | 59 | @param overlayBounds The rectangle to intersect with the receiver’s area. 60 | @return `YES` if any part of the map rectangle intersects the receiver’s shape 61 | or `NO` if it does not. 62 | */ 63 | - (BOOL)intersectsOverlayBounds:(MGLCoordinateBounds)overlayBounds; 64 | 65 | @end 66 | 67 | NS_ASSUME_NONNULL_END 68 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLPointAnnotation.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLShape.h" 5 | 6 | #import "MGLTypes.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | /** 11 | The `MGLPointAnnotation` class defines a concrete annotation object located at 12 | a specified point. You can use this class, rather than define your own, in 13 | situations where all you want to do is associate a point on the map with a 14 | title. 15 | */ 16 | @interface MGLPointAnnotation : MGLShape 17 | 18 | /** 19 | The coordinate point of the annotation, specified as a latitude and longitude. 20 | */ 21 | @property (nonatomic, assign) CLLocationCoordinate2D coordinate; 22 | 23 | @end 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLPolygon.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLMultiPoint.h" 5 | #import "MGLOverlay.h" 6 | 7 | #import "MGLTypes.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /** 12 | The `MGLPolygon` class represents a shape consisting of one or more points that 13 | define a closed polygon. The points are connected end-to-end in the order they 14 | are provided. The first and last points are connected to each other to create 15 | the closed shape. 16 | */ 17 | @interface MGLPolygon : MGLMultiPoint 18 | 19 | /** 20 | The array of polygons nested inside the receiver. 21 | 22 | The area occupied by any interior polygons is excluded from the overall shape. 23 | Interior polygons should not overlap. An interior polygon should not have 24 | interior polygons of its own. 25 | 26 | If there are no interior polygons, the value of this property is `nil`. 27 | */ 28 | @property (nonatomic, nullable, readonly) NS_ARRAY_OF(MGLPolygon *) *interiorPolygons; 29 | 30 | /** 31 | Creates and returns an `MGLPolygon` object from the specified set of 32 | coordinates. 33 | 34 | @param coords The array of coordinates defining the shape. The data in this 35 | array is copied to the new object. 36 | @param count The number of items in the `coords` array. 37 | @return A new polygon object. 38 | */ 39 | + (instancetype)polygonWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count; 40 | 41 | /** 42 | Creates and returns an `MGLPolygon` object from the specified set of 43 | coordinates and interior polygons. 44 | 45 | @param coords The array of coordinates defining the shape. The data in this 46 | array is copied to the new object. 47 | @param count The number of items in the `coords` array. 48 | @param interiorPolygons An array of `MGLPolygon` objects that define regions 49 | excluded from the overall shape. If this array is `nil` or empty, the shape 50 | is considered to have no interior polygons. 51 | @return A new polygon object. 52 | */ 53 | + (instancetype)polygonWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count interiorPolygons:(nullable NS_ARRAY_OF(MGLPolygon *) *)interiorPolygons; 54 | 55 | @end 56 | 57 | /** 58 | The `MGLMultiPolygon` class represents a shape consisting of one or more 59 | polygons that do not overlap. For example, you would use an `MGLMultiPolygon` 60 | object to represent an atoll together with an island in the atoll’s lagoon: 61 | the atoll itself would be one `MGLPolygon` object, while the inner island would 62 | be another. 63 | 64 | @note `MGLMultiPolygon` objects cannot be added to a map view using 65 | `-[MGLMapView addAnnotations:]` and related methods. 66 | */ 67 | @interface MGLMultiPolygon : MGLShape 68 | 69 | /** 70 | An array of polygons forming the multipolygon. 71 | */ 72 | @property (nonatomic, copy, readonly) NS_ARRAY_OF(MGLPolygon *) *polygons; 73 | 74 | /** 75 | Creates and returns a multipolygon object consisting of the given polygons. 76 | 77 | @param polygons The array of polygons defining the shape. 78 | @return A new multipolygon object. 79 | */ 80 | + (instancetype)multiPolygonWithPolygons:(NS_ARRAY_OF(MGLPolygon *) *)polygons; 81 | 82 | @end 83 | 84 | NS_ASSUME_NONNULL_END 85 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLPolyline.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLMultiPoint.h" 5 | #import "MGLOverlay.h" 6 | 7 | #import "MGLTypes.h" 8 | 9 | NS_ASSUME_NONNULL_BEGIN 10 | 11 | /** 12 | The `MGLPolyline` class represents a shape consisting of one or more points 13 | that define connecting line segments. The points are connected end-to-end in 14 | the order they are provided. The first and last points are not connected to 15 | each other. 16 | */ 17 | @interface MGLPolyline : MGLMultiPoint 18 | 19 | /** 20 | Creates and returns an `MGLPolyline` object from the specified set of 21 | coordinates. 22 | 23 | @param coords The array of coordinates defining the shape. The data in this 24 | array is copied to the new object. 25 | @param count The number of items in the `coords` array. 26 | @return A new polyline object. 27 | */ 28 | + (instancetype)polylineWithCoordinates:(CLLocationCoordinate2D *)coords 29 | count:(NSUInteger)count; 30 | 31 | @end 32 | 33 | /** 34 | The `MGLMultiPolyline` class represents a shape consisting of one or more 35 | polylines. For example, you could use an `MGLMultiPolyline` object to represent 36 | both sides of a divided highway (dual carriageway), excluding the median 37 | (central reservation): each carriageway would be a distinct `MGLPolyline` 38 | object. 39 | 40 | @note `MGLMultiPolyline` objects cannot be added to a map view using 41 | `-[MGLMapView addAnnotations:]` and related methods. 42 | */ 43 | @interface MGLMultiPolyline : MGLShape 44 | 45 | /** 46 | An array of polygons forming the multipolyline. 47 | */ 48 | @property (nonatomic, copy, readonly) NS_ARRAY_OF(MGLPolyline *) *polylines; 49 | 50 | /** 51 | Creates and returns a multipolyline object consisting of the given polylines. 52 | 53 | @param polylines The array of polylines defining the shape. 54 | @return A new multipolyline object. 55 | */ 56 | + (instancetype)multiPolylineWithPolylines:(NS_ARRAY_OF(MGLPolyline *) *)polylines; 57 | 58 | @end 59 | 60 | NS_ASSUME_NONNULL_END 61 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLShape.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLAnnotation.h" 4 | 5 | #import "MGLTypes.h" 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /** 10 | The `MGLShape` class is an abstract class that defines the basic properties for 11 | all shape-based annotation objects. This class must be subclassed and cannot be 12 | used as is. Subclasses are responsible for defining the geometry of the shape 13 | and providing an appropriate value for the coordinate property inherited from 14 | the `MGLAnnotation` protocol. 15 | */ 16 | @interface MGLShape : NSObject 17 | 18 | /** 19 | The title of the shape annotation. The default value of this property is `nil`. 20 | */ 21 | @property (nonatomic, copy, nullable) NSString *title; 22 | 23 | /** 24 | The subtitle of the shape annotation. The default value of this property is 25 | `nil`. 26 | */ 27 | @property (nonatomic, copy, nullable) NSString *subtitle; 28 | 29 | #if !TARGET_OS_IPHONE 30 | 31 | /** 32 | The tooltip of the shape annotation. The default value of this property is 33 | `nil`. 34 | */ 35 | @property (nonatomic, copy, nullable) NSString *toolTip; 36 | 37 | #endif 38 | 39 | @end 40 | 41 | NS_ASSUME_NONNULL_END 42 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLShapeCollection.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLShape.h" 4 | 5 | #import "MGLTypes.h" 6 | 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | /** 10 | The `MGLShapeCollection` class represents a shape consisting of one or more 11 | distinct but related shapes that are instances of `MGLShape`. The constituent 12 | shapes can be a mixture of different kinds of shapes. 13 | 14 | @note `MGLShapeCollection` objects cannot be added to a map view using 15 | `-[MGLMapView addAnnotations:]` and related methods. 16 | */ 17 | @interface MGLShapeCollection : MGLShape 18 | 19 | /** 20 | An array of shapes forming the shape collection. 21 | */ 22 | @property (nonatomic, copy, readonly) NS_ARRAY_OF(MGLShape *) *shapes; 23 | 24 | /** 25 | Creates and returns a shape collection consisting of the given shapes. 26 | 27 | @param shapes The array of shapes defining the shape collection. The data in 28 | this array is copied to the new object. 29 | @return A new shape collection object. 30 | */ 31 | + (instancetype)shapeCollectionWithShapes:(NS_ARRAY_OF(MGLShape *) *)shapes; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLStyle.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | /** 8 | A version number identifying the default version of the suite of default styles 9 | provided by Mapbox. This version number may be passed into one of the 10 | “StyleURLWithVersion” class methods of MGLStyle. 11 | 12 | The value of this constant generally corresponds to the latest released version 13 | as of the date on which this SDK was published. You can use this constant to 14 | ascertain the style used by `MGLMapView` and `MGLTilePyramidOfflineRegion` when 15 | no style URL is specified. Consult the 16 | Mapbox Styles API documentation 17 | for the most up-to-date style versioning information. 18 | 19 | @warning The value of this constant may change in a future release of the SDK. 20 | If you use any feature that depends on a specific aspect of a default style 21 | – for instance, the minimum zoom level that includes roads – you may use the 22 | current value of this constant or the underlying style URL, but do not use 23 | the constant itself. Such details may change significantly from version to 24 | version. 25 | */ 26 | static const NSInteger MGLStyleDefaultVersion = 9; 27 | 28 | /** 29 | A collection of convenience methods for creating style URLs of default styles 30 | provided by Mapbox. 31 | Learn more about Mapbox default styles. 32 | */ 33 | @interface MGLStyle : NSObject 34 | 35 | /** 36 | Returns the URL to version 8 of the 37 | Mapbox Streets style. 38 | 39 | Streets is a general-purpose style with detailed road and transit networks. 40 | 41 | `MGLMapView` and `MGLTilePyramidOfflineRegion` use Mapbox Streets when no style 42 | is specified explicitly. 43 | */ 44 | + (NSURL *)streetsStyleURL __attribute__((deprecated("Use -streetsStyleURLWithVersion:."))); 45 | 46 | /** 47 | Returns the URL to the given version of the 48 | Mapbox Streets style. 49 | 50 | Streets is a general-purpose style with detailed road and transit networks. 51 | 52 | `MGLMapView` and `MGLTilePyramidOfflineRegion` use Mapbox Streets when no style 53 | is specified explicitly. 54 | 55 | @param version The style’s latest released version. As of publication, the 56 | current version is `9`. 57 | */ 58 | + (NSURL *)streetsStyleURLWithVersion:(NSInteger)version; 59 | 60 | /** 61 | Returns the URL to version 8 of the 62 | Mapbox Emerald style. 63 | 64 | Emerald is a tactile style with subtle textures and dramatic hillshading. 65 | */ 66 | + (NSURL *)emeraldStyleURL __attribute__((deprecated("Create an NSURL object with the string “mapbox://styles/mapbox/emerald-v8”."))); 67 | 68 | /** 69 | Returns the URL to the given version of the 70 | Mapbox Outdoors style. 71 | 72 | Outdoors is a general-purpose style tailored to outdoor activities. 73 | 74 | @param version The style’s latest released version. As of publication, the 75 | current version is `9`. 76 | */ 77 | + (NSURL *)outdoorsStyleURLWithVersion:(NSInteger)version; 78 | 79 | /** 80 | Returns the URL to version 8 of the 81 | Mapbox Light style. 82 | 83 | Light is a subtle, light-colored backdrop for data visualizations. 84 | */ 85 | + (NSURL *)lightStyleURL __attribute__((deprecated("Use -lightStyleURLWithVersion:."))); 86 | 87 | /** 88 | Returns the URL to the given version of the 89 | Mapbox Light style. 90 | 91 | Light is a subtle, light-colored backdrop for data visualizations. 92 | 93 | @param version The style’s latest released version. As of publication, the 94 | current version is `9`. 95 | */ 96 | + (NSURL *)lightStyleURLWithVersion:(NSInteger)version; 97 | 98 | /** 99 | Returns the URL to version 8 of the 100 | Mapbox Dark style. 101 | 102 | Dark is a subtle, dark-colored backdrop for data visualizations. 103 | */ 104 | + (NSURL *)darkStyleURL __attribute__((deprecated("Use -darkStyleURLWithVersion:."))); 105 | 106 | /** 107 | Returns the URL to the given version of the 108 | Mapbox Dark style. 109 | 110 | Dark is a subtle, dark-colored backdrop for data visualizations. 111 | 112 | @param version The style’s latest released version. As of publication, the 113 | current version is `9`. 114 | */ 115 | + (NSURL *)darkStyleURLWithVersion:(NSInteger)version; 116 | 117 | /** 118 | Returns the URL to version 8 of the 119 | Mapbox Satellite style. 120 | 121 | Satellite is high-resolution satellite and aerial imagery. 122 | */ 123 | + (NSURL *)satelliteStyleURL __attribute__((deprecated("Use -satelliteStyleURLWithVersion:."))); 124 | 125 | /** 126 | Returns the URL to the given version of the 127 | Mapbox Satellite style. 128 | 129 | Satellite is high-resolution satellite and aerial imagery. 130 | 131 | @param version The style’s latest released version. As of publication, the 132 | current version is `9`. 133 | */ 134 | + (NSURL *)satelliteStyleURLWithVersion:(NSInteger)version; 135 | 136 | /** 137 | Returns the URL to version 8 of the 138 | Mapbox Satellite Streets 139 | style. 140 | 141 | Satellite Streets combines the high-resolution satellite and aerial imagery of 142 | Mapbox Satellite with unobtrusive labels and translucent roads from Mapbox 143 | Streets. 144 | */ 145 | + (NSURL *)hybridStyleURL __attribute__((deprecated("Use -satelliteStreetsStyleURLWithVersion:."))); 146 | 147 | /** 148 | Returns the URL to the given version of the 149 | Mapbox Satellite Streets 150 | style. 151 | 152 | Satellite Streets combines the high-resolution satellite and aerial imagery of 153 | Mapbox Satellite with unobtrusive labels and translucent roads from Mapbox 154 | Streets. 155 | 156 | @param version The style’s latest released version. As of publication, the 157 | current version is `9`. 158 | */ 159 | + (NSURL *)satelliteStreetsStyleURLWithVersion:(NSInteger)version; 160 | 161 | - (instancetype)init NS_UNAVAILABLE; 162 | 163 | @end 164 | 165 | NS_ASSUME_NONNULL_END 166 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLTilePyramidOfflineRegion.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLOfflineRegion.h" 4 | #import "MGLGeometry.h" 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /** 9 | An offline region defined by a style URL, geographic coordinate bounds, and 10 | range of zoom levels. 11 | */ 12 | @interface MGLTilePyramidOfflineRegion : NSObject 13 | 14 | /** 15 | URL of the style whose resources are required for offline viewing. 16 | 17 | In addition to the JSON stylesheet, different styles may require different font 18 | glyphs, sprite sheets, and other resources. 19 | 20 | The URL may be a full HTTP or HTTPS URL or a Mapbox URL indicating the style’s 21 | map ID (`mapbox://styles/{user}/{style}`). 22 | */ 23 | @property (nonatomic, readonly) NSURL *styleURL; 24 | 25 | /** 26 | The coordinate bounds for the geographic region covered by the downloaded 27 | tiles. 28 | */ 29 | @property (nonatomic, readonly) MGLCoordinateBounds bounds; 30 | 31 | /** 32 | The minimum zoom level for which to download tiles and other resources. 33 | 34 | For more information about zoom levels, `-[MGLMapView zoomLevel]`. 35 | */ 36 | @property (nonatomic, readonly) double minimumZoomLevel; 37 | 38 | /** 39 | The maximum zoom level for which to download tiles and other resources. 40 | 41 | For more information about zoom levels, `-[MGLMapView zoomLevel]`. 42 | */ 43 | @property (nonatomic, readonly) double maximumZoomLevel; 44 | 45 | - (instancetype)init NS_UNAVAILABLE; 46 | 47 | /** 48 | Initializes a newly created offline region with the given style URL, geographic 49 | coordinate bounds, and range of zoom levels. 50 | 51 | This is the designated initializer for `MGLTilePyramidOfflineRegion`. 52 | 53 | @param styleURL URL of the map style for which to download resources. The URL 54 | may be a full HTTP or HTTPS URL or a Mapbox URL indicating the style’s map 55 | ID (`mapbox://styles/{user}/{style}`). Specify `nil` for the default style. 56 | Relative file URLs cannot be used as offline style URLs. To download the 57 | online resources required by a local style, specify a URL to an online copy 58 | of the style. 59 | @param bounds The coordinate bounds for the geographic region to be covered by 60 | the downloaded tiles. 61 | @param minimumZoomLevel The minimum zoom level to be covered by the downloaded 62 | tiles. This parameter should be set to at least 0 but no greater than the 63 | value of the `maximumZoomLevel` parameter. For each required tile source, if 64 | this parameter is set to a value less than the tile source’s minimum zoom 65 | level, the download covers zoom levels down to the tile source’s minimum 66 | zoom level. 67 | @param maximumZoomLevel The maximum zoom level to be covered by the downloaded 68 | tiles. This parameter should be set to at least the value of the 69 | `minimumZoomLevel` parameter. For each required tile source, if this 70 | parameter is set to a value greater than the tile source’s minimum zoom 71 | level, the download covers zoom levels up to the tile source’s maximum zoom 72 | level. 73 | */ 74 | - (instancetype)initWithStyleURL:(nullable NSURL *)styleURL bounds:(MGLCoordinateBounds)bounds fromZoomLevel:(double)minimumZoomLevel toZoomLevel:(double)maximumZoomLevel NS_DESIGNATED_INITIALIZER; 75 | 76 | @end 77 | 78 | NS_ASSUME_NONNULL_END 79 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLTypes.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #pragma once 4 | 5 | #if !__has_feature(nullability) 6 | #define NS_ASSUME_NONNULL_BEGIN 7 | #define NS_ASSUME_NONNULL_END 8 | #define nullable 9 | #define nonnull 10 | #define null_resettable 11 | #define _Nullable 12 | #define _Nonnull 13 | #endif 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | /** Indicates an error occurred in the Mapbox SDK. */ 18 | extern NSString * const MGLErrorDomain; 19 | 20 | /** Error constants for the Mapbox SDK. */ 21 | typedef NS_ENUM(NSInteger, MGLErrorCode) { 22 | /** An unknown error occurred. */ 23 | MGLErrorCodeUnknown = -1, 24 | /** The resource could not be found. */ 25 | MGLErrorCodeNotFound = 1, 26 | /** The connection received an invalid server response. */ 27 | MGLErrorCodeBadServerResponse = 2, 28 | /** An attempt to establish a connection failed. */ 29 | MGLErrorCodeConnectionFailed = 3, 30 | }; 31 | 32 | /** 33 | The mode used to track the user location on the map. Used with 34 | `MGLMapView.userTrackingMode`. 35 | */ 36 | typedef NS_ENUM(NSUInteger, MGLUserTrackingMode) { 37 | /** The map does not follow the user location. */ 38 | MGLUserTrackingModeNone = 0, 39 | /** The map follows the user location. */ 40 | MGLUserTrackingModeFollow, 41 | /** The map follows the user location and rotates when the heading changes. */ 42 | MGLUserTrackingModeFollowWithHeading, 43 | /** The map follows the user location and rotates when the course changes. */ 44 | MGLUserTrackingModeFollowWithCourse, 45 | }; 46 | 47 | NS_ASSUME_NONNULL_END 48 | 49 | #ifndef NS_ARRAY_OF 50 | // Foundation collection classes adopted lightweight generics in iOS 9.0 and OS X 10.11 SDKs. 51 | #if __has_feature(objc_generics) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) 52 | /** Inserts a type specifier for a pointer to a lightweight generic with the given collection and object classes. Use a `*` for any non-`id` object classes but no `*` for the collection class. */ 53 | #define NS_ARRAY_OF(ObjectClass...) NSArray 54 | #define NS_MUTABLE_ARRAY_OF(ObjectClass...) NSMutableArray 55 | #define NS_SET_OF(ObjectClass...) NSSet 56 | #define NS_MUTABLE_SET_OF(ObjectClass...) NSMutableSet 57 | #define NS_DICTIONARY_OF(ObjectClass...) NSDictionary 58 | #define NS_MUTABLE_DICTIONARY_OF(ObjectClass...) NSMutableDictionary 59 | #else 60 | #define NS_ARRAY_OF(ObjectClass...) NSArray 61 | #define NS_MUTABLE_ARRAY_OF(ObjectClass...) NSMutableArray 62 | #define NS_SET_OF(ObjectClass...) NSSet 63 | #define NS_MUTABLE_SET_OF(ObjectClass...) NSMutableSet 64 | #define NS_DICTIONARY_OF(ObjectClass...) NSDictionary 65 | #define NS_MUTABLE_DICTIONARY_OF(ObjectClass...) NSMutableDictionary 66 | #endif 67 | #endif 68 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/MGLUserLocation.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "MGLAnnotation.h" 5 | 6 | #import "MGLTypes.h" 7 | 8 | NS_ASSUME_NONNULL_BEGIN 9 | 10 | /** The MGLUserLocation class defines a specific type of annotation that identifies the user’s current location. You do not create instances of this class directly. Instead, you retrieve an existing MGLUserLocation object from the userLocation property of the map view displayed in your application. */ 11 | @interface MGLUserLocation : NSObject 12 | 13 | #pragma mark Determining the User’s Position 14 | 15 | /** 16 | The current location of the device. (read-only) 17 | 18 | This property contains `nil` if the map view is not currently showing the user location or if the user’s location has not yet been determined. 19 | */ 20 | @property (nonatomic, readonly, nullable) CLLocation *location; 21 | 22 | /** A Boolean value indicating whether the user’s location is currently being updated. (read-only) */ 23 | @property (nonatomic, readonly, getter=isUpdating) BOOL updating; 24 | 25 | /** 26 | The heading of the user location. (read-only) 27 | 28 | This property is `nil` if the user location tracking mode is not `MGLUserTrackingModeFollowWithHeading`. 29 | */ 30 | @property (nonatomic, readonly, nullable) CLHeading *heading; 31 | 32 | #pragma mark Accessing the User Annotation Text 33 | 34 | /** The title to display for the user location annotation. */ 35 | @property (nonatomic, copy) NSString *title; 36 | 37 | /** The subtitle to display for the user location annotation. */ 38 | @property (nonatomic, copy, nullable) NSString *subtitle; 39 | 40 | @end 41 | 42 | NS_ASSUME_NONNULL_END 43 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/Mapbox.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | /// Project version number for Mapbox. 4 | FOUNDATION_EXPORT double MapboxVersionNumber; 5 | 6 | /// Project version string for Mapbox. 7 | FOUNDATION_EXPORT const unsigned char MapboxVersionString[]; 8 | 9 | #import "MGLAnnotationView.h" 10 | #import "MGLAccountManager.h" 11 | #import "MGLAnnotation.h" 12 | #import "MGLAnnotationImage.h" 13 | #import "MGLCalloutView.h" 14 | #import "MGLClockDirectionFormatter.h" 15 | #import "MGLCompassDirectionFormatter.h" 16 | #import "MGLCoordinateFormatter.h" 17 | #import "MGLFeature.h" 18 | #import "MGLGeometry.h" 19 | #import "MGLMapCamera.h" 20 | #import "MGLMapView.h" 21 | #import "MGLMapView+IBAdditions.h" 22 | #import "MGLMapView+MGLCustomStyleLayerAdditions.h" 23 | #import "MGLMapViewDelegate.h" 24 | #import "MGLMultiPoint.h" 25 | #import "MGLOfflinePack.h" 26 | #import "MGLOfflineRegion.h" 27 | #import "MGLOfflineStorage.h" 28 | #import "MGLOverlay.h" 29 | #import "MGLPointAnnotation.h" 30 | #import "MGLPolygon.h" 31 | #import "MGLPolyline.h" 32 | #import "MGLShape.h" 33 | #import "MGLShapeCollection.h" 34 | #import "MGLStyle.h" 35 | #import "MGLTilePyramidOfflineRegion.h" 36 | #import "MGLTypes.h" 37 | #import "MGLUserLocation.h" 38 | #import "NSValue+MGLAdditions.h" 39 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Headers/NSValue+MGLAdditions.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLGeometry.h" 4 | #import "MGLOfflinePack.h" 5 | 6 | NS_ASSUME_NONNULL_BEGIN 7 | 8 | /** 9 | Methods for round-tripping values for Mapbox-defined types. 10 | */ 11 | @interface NSValue (MGLAdditions) 12 | 13 | #pragma mark Working with Geographic Coordinate Values 14 | 15 | /** 16 | Creates a new value object containing the specified Core Location geographic 17 | coordinate structure. 18 | 19 | @param coordinate The value for the new object. 20 | @return A new value object that contains the geographic coordinate information. 21 | */ 22 | + (instancetype)valueWithMGLCoordinate:(CLLocationCoordinate2D)coordinate; 23 | 24 | /** 25 | The Core Location geographic coordinate structure representation of the value. 26 | */ 27 | @property (readonly) CLLocationCoordinate2D MGLCoordinateValue; 28 | 29 | /** 30 | Creates a new value object containing the specified Mapbox coordinate span 31 | structure. 32 | 33 | @param span The value for the new object. 34 | @return A new value object that contains the coordinate span information. 35 | */ 36 | + (instancetype)valueWithMGLCoordinateSpan:(MGLCoordinateSpan)span; 37 | 38 | /** 39 | The Mapbox coordinate span structure representation of the value. 40 | */ 41 | @property (readonly) MGLCoordinateSpan MGLCoordinateSpanValue; 42 | 43 | /** 44 | Creates a new value object containing the specified Mapbox coordinate bounds 45 | structure. 46 | 47 | @param bounds The value for the new object. 48 | @return A new value object that contains the coordinate bounds information. 49 | */ 50 | + (instancetype)valueWithMGLCoordinateBounds:(MGLCoordinateBounds)bounds; 51 | 52 | /** 53 | The Mapbox coordinate bounds structure representation of the value. 54 | */ 55 | @property (readonly) MGLCoordinateBounds MGLCoordinateBoundsValue; 56 | 57 | #pragma mark Working with Offline Map Values 58 | 59 | /** 60 | Creates a new value object containing the given `MGLOfflinePackProgress` 61 | structure. 62 | 63 | @param progress The value for the new object. 64 | @return A new value object that contains the offline pack progress information. 65 | */ 66 | + (NSValue *)valueWithMGLOfflinePackProgress:(MGLOfflinePackProgress)progress; 67 | 68 | /** 69 | The `MGLOfflinePackProgress` structure representation of the value. 70 | */ 71 | @property (readonly) MGLOfflinePackProgress MGLOfflinePackProgressValue; 72 | 73 | @end 74 | 75 | NS_ASSUME_NONNULL_END 76 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Info.plist -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Mapbox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Mapbox -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module Mapbox { 2 | umbrella header "Mapbox.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/PrivateHeaders/NSData+MGLAdditions.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "MGLTypes.h" 4 | 5 | NS_ASSUME_NONNULL_BEGIN 6 | 7 | @interface NSData (MGLAdditions) 8 | 9 | - (NSData *)mgl_compressedData; 10 | 11 | - (NSData *)mgl_decompressedData; 12 | 13 | @end 14 | 15 | NS_ASSUME_NONNULL_END 16 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Base.lproj/Foundation.strings 8 | 9 | Imm8P0lptMC2dq8sfHh76vxhlsc= 10 | 11 | Base.lproj/Localizable.strings 12 | 13 | b0rUKa8MgLJ9EyIkEq9Eg2uJFeM= 14 | 15 | Compass.png 16 | 17 | 9fgD3C9O8JnY6gjx+mG7bdTFBG0= 18 | 19 | Compass@2x.png 20 | 21 | qspfomudtAzmGXroDpd+Aplxi7s= 22 | 23 | Compass@3x.png 24 | 25 | 9Jxn4p/8YfcIOrV6Snmjy1iNdM0= 26 | 27 | Headers/MGLAccountManager.h 28 | 29 | Y0qCHnKrbaRWyZTpcHd+EwB5b0w= 30 | 31 | Headers/MGLAnnotation.h 32 | 33 | Ow2qWl5TiRuHo3iX6pP/eAKZP78= 34 | 35 | Headers/MGLAnnotationImage.h 36 | 37 | q6RWtZKz/d86qRnQsIjWBdvIDRE= 38 | 39 | Headers/MGLAnnotationView.h 40 | 41 | 3HJ5pC4CIuaSe3W7bFhzKSykFz0= 42 | 43 | Headers/MGLCalloutView.h 44 | 45 | fC7zfuw6ZLralla1Ud/pU14uEh8= 46 | 47 | Headers/MGLClockDirectionFormatter.h 48 | 49 | ugLNAmQssGal2+YmCWX4KQO7H/k= 50 | 51 | Headers/MGLCompassDirectionFormatter.h 52 | 53 | 5Q7cW0HUeMsJp6tjXVaHI2vSfR0= 54 | 55 | Headers/MGLCoordinateFormatter.h 56 | 57 | Hi3mqQXuN8uZjC6TIIXRj5yZc4M= 58 | 59 | Headers/MGLFeature.h 60 | 61 | EF/hdfEW3FTjlxxC7fzUvey6+PA= 62 | 63 | Headers/MGLGeometry.h 64 | 65 | SYKhmo4n4bqAaD1Fv5O16NomDQA= 66 | 67 | Headers/MGLMapCamera.h 68 | 69 | enKM4c7bpePp6APLrCBK3S4x5jk= 70 | 71 | Headers/MGLMapView+IBAdditions.h 72 | 73 | Op/tZYq6i+A2z3diaPQYhvKY3as= 74 | 75 | Headers/MGLMapView+MGLCustomStyleLayerAdditions.h 76 | 77 | Tyn0+/lO1TBZbkwtkhia3EuKkI0= 78 | 79 | Headers/MGLMapView.h 80 | 81 | JCEDRNNu1DoCXoOj0kG6fMVpd4I= 82 | 83 | Headers/MGLMapViewDelegate.h 84 | 85 | fw65O52NwYGH0j08CN2GFHFRZXo= 86 | 87 | Headers/MGLMultiPoint.h 88 | 89 | mVapXsJtHCzLNxHBEAVvwBJ55iA= 90 | 91 | Headers/MGLOfflinePack.h 92 | 93 | N8UlpKXYkoEVHJXg/Msqf2oD3BY= 94 | 95 | Headers/MGLOfflineRegion.h 96 | 97 | zgCgUOQTvvaj3rlpc5tYUdTa7Zc= 98 | 99 | Headers/MGLOfflineStorage.h 100 | 101 | v6WLOsN6Xs1zV4Sh5OO4KiyOwXY= 102 | 103 | Headers/MGLOverlay.h 104 | 105 | +SvSizWYWrmtoF1sNfCvGxniG2w= 106 | 107 | Headers/MGLPointAnnotation.h 108 | 109 | 8mKQ55i/zSCM26bBoE/U3f/ZP24= 110 | 111 | Headers/MGLPolygon.h 112 | 113 | Aciy78JOJ/NrrmG2viXuPlzcRsQ= 114 | 115 | Headers/MGLPolyline.h 116 | 117 | PHeFNs9LGHQiTwHdTGaliFw24Fw= 118 | 119 | Headers/MGLShape.h 120 | 121 | 19dl6Ytvjn9yBpMvujqJeF2rPUQ= 122 | 123 | Headers/MGLShapeCollection.h 124 | 125 | KSDehfQaO3ee0fht3sXm70hPRW4= 126 | 127 | Headers/MGLStyle.h 128 | 129 | 7XJb2zTkfmSii6ON5DE+pc/ps2M= 130 | 131 | Headers/MGLTilePyramidOfflineRegion.h 132 | 133 | KdnFxz/nYZXFMTotd0/btikAA8c= 134 | 135 | Headers/MGLTypes.h 136 | 137 | Nc2AMfu3lgIz3i6hNei8oY9VWXI= 138 | 139 | Headers/MGLUserLocation.h 140 | 141 | QxaclQcv7rrSfn/EKAO+8NKsxzA= 142 | 143 | Headers/Mapbox.h 144 | 145 | +oRxCoRZQo/1ChzsWt/61gr5nmI= 146 | 147 | Headers/NSValue+MGLAdditions.h 148 | 149 | gBoPH+p95sCaKpfZK/Y/z4Ii0ok= 150 | 151 | Info.plist 152 | 153 | SVuc7TDutX+KfS+nKYG/hclTfm0= 154 | 155 | Modules/module.modulemap 156 | 157 | rEpDMHtskYYBNNPU5z66tETJHMA= 158 | 159 | PrivateHeaders/NSData+MGLAdditions.h 160 | 161 | F8EVjt86bmRV2S5dEkrQZ0enewI= 162 | 163 | api_mapbox_com-digicert.der 164 | 165 | CoAnbhymXe0dwiTnfQynJAtRyFQ= 166 | 167 | api_mapbox_com-geotrust.der 168 | 169 | GmIcuB8F3QKpJHeUbLQbU78dc2w= 170 | 171 | default_marker.png 172 | 173 | FvGReBtfweo4D8QJEQr1nhUUOg0= 174 | 175 | default_marker@2x.png 176 | 177 | 2LFxfOgyQAxrVBFJUsJxfZMONQ8= 178 | 179 | default_marker@3x.png 180 | 181 | l13ByIrkFYKoDJntnuIcdT8wQEg= 182 | 183 | en.lproj/Foundation.stringsdict 184 | 185 | hash 186 | 187 | BRFQrqe7uq/1IhVvkGVd8e6fJMA= 188 | 189 | optional 190 | 191 | 192 | en.lproj/Localizable.stringsdict 193 | 194 | hash 195 | 196 | 91yy7NWivvs1t1+wB4bTxqmVFLU= 197 | 198 | optional 199 | 200 | 201 | mapbox.png 202 | 203 | uJ0vxb+DyIvHdc5n2dEOZ53JewY= 204 | 205 | mapbox@2x.png 206 | 207 | iSLTU6pROXGuxSgXS2/gVdYQvAQ= 208 | 209 | mapbox@3x.png 210 | 211 | Vep2u4/sO+Pb10wzsJpv6DVjQag= 212 | 213 | star_tilestream_net.der 214 | 215 | +p3SvvzqXPs+ibSQARXDgXPStuc= 216 | 217 | strip-frameworks.sh 218 | 219 | EoyOvuCZGWYf8hOwWzAHu3N4zqM= 220 | 221 | 222 | files2 223 | 224 | Base.lproj/Foundation.strings 225 | 226 | hash 227 | 228 | Imm8P0lptMC2dq8sfHh76vxhlsc= 229 | 230 | hash2 231 | 232 | XMleRTbRkM+Ao8pz4qr2+xl4Da+39GmffAsi1GQfEjQ= 233 | 234 | 235 | Base.lproj/Localizable.strings 236 | 237 | hash 238 | 239 | b0rUKa8MgLJ9EyIkEq9Eg2uJFeM= 240 | 241 | hash2 242 | 243 | aUC97TfxxN9lfcz9Fuu/TjMGXSCAIsw4nx7+Bm/Arvg= 244 | 245 | 246 | Compass.png 247 | 248 | hash 249 | 250 | 9fgD3C9O8JnY6gjx+mG7bdTFBG0= 251 | 252 | hash2 253 | 254 | 7wsjz1rFtOKYZprAJhvRGlKtplQ/9pCFiM9fqXxOEk4= 255 | 256 | 257 | Compass@2x.png 258 | 259 | hash 260 | 261 | qspfomudtAzmGXroDpd+Aplxi7s= 262 | 263 | hash2 264 | 265 | m9ZhIScXi39lmpGWeD7dpXlFbw/9x3+Y2Tgjdz9vLbM= 266 | 267 | 268 | Compass@3x.png 269 | 270 | hash 271 | 272 | 9Jxn4p/8YfcIOrV6Snmjy1iNdM0= 273 | 274 | hash2 275 | 276 | 4+Ba+ct6kiwW3Pviz/y4uXIUsznRaZVrNoyyVxdKJ3Y= 277 | 278 | 279 | Headers/MGLAccountManager.h 280 | 281 | hash 282 | 283 | Y0qCHnKrbaRWyZTpcHd+EwB5b0w= 284 | 285 | hash2 286 | 287 | E8XuukXcqkoJKOUtb/0bloOto6HBwUGzr/3uS9KmaGs= 288 | 289 | 290 | Headers/MGLAnnotation.h 291 | 292 | hash 293 | 294 | Ow2qWl5TiRuHo3iX6pP/eAKZP78= 295 | 296 | hash2 297 | 298 | l0dr9gc2l7o3ri075lUk0wYCJQUuOzUWNMBzbgH0TiE= 299 | 300 | 301 | Headers/MGLAnnotationImage.h 302 | 303 | hash 304 | 305 | q6RWtZKz/d86qRnQsIjWBdvIDRE= 306 | 307 | hash2 308 | 309 | R8mWOS7LLuHjVthHWNNkHiY7NFYJEmZw59J0L6aq6Wg= 310 | 311 | 312 | Headers/MGLAnnotationView.h 313 | 314 | hash 315 | 316 | 3HJ5pC4CIuaSe3W7bFhzKSykFz0= 317 | 318 | hash2 319 | 320 | 6zycxwoB58DB9LvOrINyhyHwrYQlU0WaOsraKATBROs= 321 | 322 | 323 | Headers/MGLCalloutView.h 324 | 325 | hash 326 | 327 | fC7zfuw6ZLralla1Ud/pU14uEh8= 328 | 329 | hash2 330 | 331 | p51RPFyF/P1dJeyG9GVNNh7rOfM0I3QRZlz8E/DDLNM= 332 | 333 | 334 | Headers/MGLClockDirectionFormatter.h 335 | 336 | hash 337 | 338 | ugLNAmQssGal2+YmCWX4KQO7H/k= 339 | 340 | hash2 341 | 342 | lPnh2T53IrSR1gE7ckyOirJwg2o4NZ+h5VP7uaEZlyM= 343 | 344 | 345 | Headers/MGLCompassDirectionFormatter.h 346 | 347 | hash 348 | 349 | 5Q7cW0HUeMsJp6tjXVaHI2vSfR0= 350 | 351 | hash2 352 | 353 | OoJC9+KpUzzpYDIgEOy6ZhFKsjhhn4MW19/L+ehNm2I= 354 | 355 | 356 | Headers/MGLCoordinateFormatter.h 357 | 358 | hash 359 | 360 | Hi3mqQXuN8uZjC6TIIXRj5yZc4M= 361 | 362 | hash2 363 | 364 | CrXZRkGg5clX8+IJtKn5Qh1KM+PNkcD+0wjYB25hkSE= 365 | 366 | 367 | Headers/MGLFeature.h 368 | 369 | hash 370 | 371 | EF/hdfEW3FTjlxxC7fzUvey6+PA= 372 | 373 | hash2 374 | 375 | i3JYlDu+ZpDsZ8eRICxR2uuwk+ptXGNXaeyZIxNo20k= 376 | 377 | 378 | Headers/MGLGeometry.h 379 | 380 | hash 381 | 382 | SYKhmo4n4bqAaD1Fv5O16NomDQA= 383 | 384 | hash2 385 | 386 | 5fbAxtANZ5Ani2TX7RFomXNbVdLIn9kVd+tDvwF8JrI= 387 | 388 | 389 | Headers/MGLMapCamera.h 390 | 391 | hash 392 | 393 | enKM4c7bpePp6APLrCBK3S4x5jk= 394 | 395 | hash2 396 | 397 | RM313uVm/0dPCr3l1yrgxkI473PJ7qmdYiTXQGjLBiE= 398 | 399 | 400 | Headers/MGLMapView+IBAdditions.h 401 | 402 | hash 403 | 404 | Op/tZYq6i+A2z3diaPQYhvKY3as= 405 | 406 | hash2 407 | 408 | moJ2UgcBfAdYE29YyqCTfdQac0ZwP2/DMH9TJTJ0r4s= 409 | 410 | 411 | Headers/MGLMapView+MGLCustomStyleLayerAdditions.h 412 | 413 | hash 414 | 415 | Tyn0+/lO1TBZbkwtkhia3EuKkI0= 416 | 417 | hash2 418 | 419 | yf+YTREzkQKKxOdt1dyD+jKTcD5nHXBslvRvviBW8Gc= 420 | 421 | 422 | Headers/MGLMapView.h 423 | 424 | hash 425 | 426 | JCEDRNNu1DoCXoOj0kG6fMVpd4I= 427 | 428 | hash2 429 | 430 | s/LCWM3xZSblo2VsKN3apNwGV2j3cj/i0Ut7aWvuZ44= 431 | 432 | 433 | Headers/MGLMapViewDelegate.h 434 | 435 | hash 436 | 437 | fw65O52NwYGH0j08CN2GFHFRZXo= 438 | 439 | hash2 440 | 441 | dGUuvHE3LH6S5UV7oxTusm0ZO1+54Er7WxSUnp9Ocsk= 442 | 443 | 444 | Headers/MGLMultiPoint.h 445 | 446 | hash 447 | 448 | mVapXsJtHCzLNxHBEAVvwBJ55iA= 449 | 450 | hash2 451 | 452 | nTkkY6hlFXhhsctY54TQcy4Um1Kvf4mmyp+7vlAFu5k= 453 | 454 | 455 | Headers/MGLOfflinePack.h 456 | 457 | hash 458 | 459 | N8UlpKXYkoEVHJXg/Msqf2oD3BY= 460 | 461 | hash2 462 | 463 | cZDDmAaNQt8cZTgHZgtsVv15ym8TCzl/2OSC85Scjc4= 464 | 465 | 466 | Headers/MGLOfflineRegion.h 467 | 468 | hash 469 | 470 | zgCgUOQTvvaj3rlpc5tYUdTa7Zc= 471 | 472 | hash2 473 | 474 | bCF3JUc5w9W1UhusC91aZ56pFxrJcrk/POrsSRkOrE0= 475 | 476 | 477 | Headers/MGLOfflineStorage.h 478 | 479 | hash 480 | 481 | v6WLOsN6Xs1zV4Sh5OO4KiyOwXY= 482 | 483 | hash2 484 | 485 | Q7m1txqUKTOPHpZQSUwy+ZaeAgzy8+Uxc0E4fxLqtJ4= 486 | 487 | 488 | Headers/MGLOverlay.h 489 | 490 | hash 491 | 492 | +SvSizWYWrmtoF1sNfCvGxniG2w= 493 | 494 | hash2 495 | 496 | LXnBVRtH2GBsvcUQ/0oFahWf2sZ1OVc/t9SuCAD28x8= 497 | 498 | 499 | Headers/MGLPointAnnotation.h 500 | 501 | hash 502 | 503 | 8mKQ55i/zSCM26bBoE/U3f/ZP24= 504 | 505 | hash2 506 | 507 | jbrYJSw2rsPbCilBay8De11akoPUjUVv3DLz17Ffpjg= 508 | 509 | 510 | Headers/MGLPolygon.h 511 | 512 | hash 513 | 514 | Aciy78JOJ/NrrmG2viXuPlzcRsQ= 515 | 516 | hash2 517 | 518 | 5j60FelkjQqFIoDmCovQHxte2JZk9ZYtRqqxf6+zYIQ= 519 | 520 | 521 | Headers/MGLPolyline.h 522 | 523 | hash 524 | 525 | PHeFNs9LGHQiTwHdTGaliFw24Fw= 526 | 527 | hash2 528 | 529 | 0SLvzu4v26M6G0KKgZYAttD92T/Dc3PHvEfQO0sz1Hc= 530 | 531 | 532 | Headers/MGLShape.h 533 | 534 | hash 535 | 536 | 19dl6Ytvjn9yBpMvujqJeF2rPUQ= 537 | 538 | hash2 539 | 540 | eEophzAWWE/Kr/rkjzwFND8sOT3+2vIaPC8zMDcHtPw= 541 | 542 | 543 | Headers/MGLShapeCollection.h 544 | 545 | hash 546 | 547 | KSDehfQaO3ee0fht3sXm70hPRW4= 548 | 549 | hash2 550 | 551 | WLrwybeTV70VWz7/RXW+ohYNyVUnfxJ95h4pcf38ABE= 552 | 553 | 554 | Headers/MGLStyle.h 555 | 556 | hash 557 | 558 | 7XJb2zTkfmSii6ON5DE+pc/ps2M= 559 | 560 | hash2 561 | 562 | 4hCbTiVG0NJ1iseQxA/mEmxcT85uXF/jnieOuMycViI= 563 | 564 | 565 | Headers/MGLTilePyramidOfflineRegion.h 566 | 567 | hash 568 | 569 | KdnFxz/nYZXFMTotd0/btikAA8c= 570 | 571 | hash2 572 | 573 | LhLlDTxbh9OblIzGnLsg2bYb1GdqKf2rzVyysxas530= 574 | 575 | 576 | Headers/MGLTypes.h 577 | 578 | hash 579 | 580 | Nc2AMfu3lgIz3i6hNei8oY9VWXI= 581 | 582 | hash2 583 | 584 | 5XB6LyXN/iM2llFyVZNVu6X2Yofvz70bA2bUNFe0TDU= 585 | 586 | 587 | Headers/MGLUserLocation.h 588 | 589 | hash 590 | 591 | QxaclQcv7rrSfn/EKAO+8NKsxzA= 592 | 593 | hash2 594 | 595 | PocywrJC3yGo8TmAyjFZlVMNIC5HuVyd93/rj2qwCFM= 596 | 597 | 598 | Headers/Mapbox.h 599 | 600 | hash 601 | 602 | +oRxCoRZQo/1ChzsWt/61gr5nmI= 603 | 604 | hash2 605 | 606 | KqKaeLCDv2SbnZbil+d1XyQiriFMFO7Pk2UecbF71eM= 607 | 608 | 609 | Headers/NSValue+MGLAdditions.h 610 | 611 | hash 612 | 613 | gBoPH+p95sCaKpfZK/Y/z4Ii0ok= 614 | 615 | hash2 616 | 617 | NJJRY8D7q4dAV8aTqt+Xv7OJtjhTiE135UwXv3cXiSo= 618 | 619 | 620 | Modules/module.modulemap 621 | 622 | hash 623 | 624 | rEpDMHtskYYBNNPU5z66tETJHMA= 625 | 626 | hash2 627 | 628 | xp337d8qa7qOivfSnQ7nY/DiZagomOfsw3Ad10+wjac= 629 | 630 | 631 | PrivateHeaders/NSData+MGLAdditions.h 632 | 633 | hash 634 | 635 | F8EVjt86bmRV2S5dEkrQZ0enewI= 636 | 637 | hash2 638 | 639 | jBXOe5F64Eqj8R1I5ohjqxta22UrgfH3UYoJdb2I0Y0= 640 | 641 | 642 | api_mapbox_com-digicert.der 643 | 644 | hash 645 | 646 | CoAnbhymXe0dwiTnfQynJAtRyFQ= 647 | 648 | hash2 649 | 650 | FmdjUyTsMH139CMQYtkSp1KAA3wIViMQo+e8QIOGLjk= 651 | 652 | 653 | api_mapbox_com-geotrust.der 654 | 655 | hash 656 | 657 | GmIcuB8F3QKpJHeUbLQbU78dc2w= 658 | 659 | hash2 660 | 661 | hSWhe2kP/eOwZsZjWluAx5kR1yNNIuDmjBaDPghFQHs= 662 | 663 | 664 | default_marker.png 665 | 666 | hash 667 | 668 | FvGReBtfweo4D8QJEQr1nhUUOg0= 669 | 670 | hash2 671 | 672 | bU3x6LGZhr2GVNhf6fU8VOhP24oQJse/XNQLO2M1HTs= 673 | 674 | 675 | default_marker@2x.png 676 | 677 | hash 678 | 679 | 2LFxfOgyQAxrVBFJUsJxfZMONQ8= 680 | 681 | hash2 682 | 683 | ZttXm72U3/rOo44WA9peDk1xle6HXTeEad0cM5mAO54= 684 | 685 | 686 | default_marker@3x.png 687 | 688 | hash 689 | 690 | l13ByIrkFYKoDJntnuIcdT8wQEg= 691 | 692 | hash2 693 | 694 | VmxVRg+BZtJv2h/WrE1UjMV6RLU/RMcHasyI9Yk+mAQ= 695 | 696 | 697 | en.lproj/Foundation.stringsdict 698 | 699 | hash 700 | 701 | BRFQrqe7uq/1IhVvkGVd8e6fJMA= 702 | 703 | hash2 704 | 705 | bLH1IKYRS/l7M5jx/QPokGyR5cgZL7T/FsmKXtENtxA= 706 | 707 | optional 708 | 709 | 710 | en.lproj/Localizable.stringsdict 711 | 712 | hash 713 | 714 | 91yy7NWivvs1t1+wB4bTxqmVFLU= 715 | 716 | hash2 717 | 718 | kaZvGdW5VaA2oiBPrv3NjNACX4yafdN73OGUjJg1Xeo= 719 | 720 | optional 721 | 722 | 723 | mapbox.png 724 | 725 | hash 726 | 727 | uJ0vxb+DyIvHdc5n2dEOZ53JewY= 728 | 729 | hash2 730 | 731 | DFpZ0TQ80UsHm57qadh14or7RmLyc9aSBX0S6PBxplg= 732 | 733 | 734 | mapbox@2x.png 735 | 736 | hash 737 | 738 | iSLTU6pROXGuxSgXS2/gVdYQvAQ= 739 | 740 | hash2 741 | 742 | 4E+mH80U+CQXkfRN6/ooBjpjIzY0lGBgqaslmvivyco= 743 | 744 | 745 | mapbox@3x.png 746 | 747 | hash 748 | 749 | Vep2u4/sO+Pb10wzsJpv6DVjQag= 750 | 751 | hash2 752 | 753 | brf7aFsdVrMKbV+QLy0+H8vTRf40NTY3QLPU+72DeQA= 754 | 755 | 756 | star_tilestream_net.der 757 | 758 | hash 759 | 760 | +p3SvvzqXPs+ibSQARXDgXPStuc= 761 | 762 | hash2 763 | 764 | gIYFSE0k2CFfiH19OVYra7RA7QAm2VgkuTxckz71yOk= 765 | 766 | 767 | strip-frameworks.sh 768 | 769 | hash 770 | 771 | EoyOvuCZGWYf8hOwWzAHu3N4zqM= 772 | 773 | hash2 774 | 775 | k7F5NEHxXyEO7LFfRwrkE4C84SDOD6PWeMzgAkQ4XUg= 776 | 777 | 778 | 779 | rules 780 | 781 | ^ 782 | 783 | ^.*\.lproj/ 784 | 785 | optional 786 | 787 | weight 788 | 1000 789 | 790 | ^.*\.lproj/locversion.plist$ 791 | 792 | omit 793 | 794 | weight 795 | 1100 796 | 797 | ^Base\.lproj/ 798 | 799 | weight 800 | 1010 801 | 802 | ^version.plist$ 803 | 804 | 805 | rules2 806 | 807 | .*\.dSYM($|/) 808 | 809 | weight 810 | 11 811 | 812 | ^ 813 | 814 | weight 815 | 20 816 | 817 | ^(.*/)?\.DS_Store$ 818 | 819 | omit 820 | 821 | weight 822 | 2000 823 | 824 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 825 | 826 | nested 827 | 828 | weight 829 | 10 830 | 831 | ^.* 832 | 833 | ^.*\.lproj/ 834 | 835 | optional 836 | 837 | weight 838 | 1000 839 | 840 | ^.*\.lproj/locversion.plist$ 841 | 842 | omit 843 | 844 | weight 845 | 1100 846 | 847 | ^Base\.lproj/ 848 | 849 | weight 850 | 1010 851 | 852 | ^Info\.plist$ 853 | 854 | omit 855 | 856 | weight 857 | 20 858 | 859 | ^PkgInfo$ 860 | 861 | omit 862 | 863 | weight 864 | 20 865 | 866 | ^[^/]+$ 867 | 868 | nested 869 | 870 | weight 871 | 10 872 | 873 | ^embedded\.provisionprofile$ 874 | 875 | weight 876 | 20 877 | 878 | ^version\.plist$ 879 | 880 | weight 881 | 20 882 | 883 | 884 | 885 | 886 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/api_mapbox_com-digicert.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/api_mapbox_com-digicert.der -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/api_mapbox_com-geotrust.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/api_mapbox_com-geotrust.der -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker@2x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/default_marker@3x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/en.lproj/Foundation.stringsdict: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/en.lproj/Foundation.stringsdict -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/en.lproj/Localizable.stringsdict: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/en.lproj/Localizable.stringsdict -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox@2x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/mapbox@3x.png -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/star_tilestream_net.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/classycodeoss/ios-ar-demo/af21c6f1f9c4a854c24be1b1c3b3680e167ba0b7/AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/star_tilestream_net.der -------------------------------------------------------------------------------- /AR Demo App/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/strip-frameworks.sh: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # 3 | # Copyright 2015 Realm Inc. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | ################################################################################ 18 | 19 | # This script strips all non-valid architectures from dynamic libraries in 20 | # the application's `Frameworks` directory. 21 | # 22 | # The following environment variables are required: 23 | # 24 | # BUILT_PRODUCTS_DIR 25 | # FRAMEWORKS_FOLDER_PATH 26 | # VALID_ARCHS 27 | # EXPANDED_CODE_SIGN_IDENTITY 28 | 29 | 30 | # Signs a framework with the provided identity 31 | code_sign() { 32 | # Use the current code_sign_identitiy 33 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 34 | echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" 35 | /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" 36 | } 37 | 38 | echo "Stripping frameworks" 39 | cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" 40 | 41 | for file in $(find . -type f -perm +111); do 42 | # Skip non-dynamic libraries 43 | if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then 44 | continue 45 | fi 46 | # Get architectures for current file 47 | archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" 48 | stripped="" 49 | for arch in $archs; do 50 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 51 | # Strip non-valid architectures in-place 52 | lipo -remove "$arch" -output "$file" "$file" || exit 1 53 | stripped="$stripped $arch" 54 | fi 55 | done 56 | if [[ "$stripped" != "" ]]; then 57 | echo "Stripped $file of architectures:$stripped" 58 | if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then 59 | code_sign "${file}" 60 | fi 61 | fi 62 | done 63 | 64 | if [ "$ACTION" = "install" ]; then 65 | echo "Copy .bcsymbolmap files to .xcarchive" 66 | find . -name '*.bcsymbolmap' -type f -exec mv {} "${CONFIGURATION_BUILD_DIR}" \; 67 | else 68 | # Delete *.bcsymbolmap files from framework bundle unless archiving 69 | find . -name '*.bcsymbolmap' -type f -exec rm -rf "{}" +\; 70 | fi 71 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | AE7042ADE0381C8B419364DA1CB7F538 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */; }; 11 | C37B3B93AB3996FE2CB00ED7499D98D1 /* Pods-AR Demo App-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 73AEAA55C9564E8BB2FD2AA3A8EC929A /* Pods-AR Demo App-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 12 | CDEBDF84201119DFC581285C58802B05 /* Pods-AR Demo App-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E27A2F1A47B74DAB131F274C969A5D79 /* Pods-AR Demo App-dummy.m */; }; 13 | /* End PBXBuildFile section */ 14 | 15 | /* Begin PBXFileReference section */ 16 | 21090769892165B4BD250A07A672E92C /* Pods-AR Demo App-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AR Demo App-frameworks.sh"; sourceTree = ""; }; 17 | 58285240081CF90757CCD6260D2F4ED4 /* Pods-AR Demo App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AR Demo App.release.xcconfig"; sourceTree = ""; }; 18 | 5C0D082CB127ADD053804EC9D1DDE28A /* Pods-AR Demo App.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-AR Demo App.modulemap"; sourceTree = ""; }; 19 | 5DDF98CBDE53EDE7D13B0F46552C5191 /* Pods-AR Demo App-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AR Demo App-acknowledgements.markdown"; sourceTree = ""; }; 20 | 6D359B9A767A5B2ABC5769A6FE50EA8A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 21 | 73AEAA55C9564E8BB2FD2AA3A8EC929A /* Pods-AR Demo App-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AR Demo App-umbrella.h"; sourceTree = ""; }; 22 | 8AD3D0AC75A9C26C6078BB68F30FB7F0 /* Pods-AR Demo App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AR Demo App.debug.xcconfig"; sourceTree = ""; }; 23 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 24 | A3FF3CE0AD74667F3C0FC496654C8C5D /* Pods-AR Demo App-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AR Demo App-resources.sh"; sourceTree = ""; }; 25 | C117DDE477B5750598F6908F4542713C /* Pods_AR_Demo_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_AR_Demo_App.framework; path = "Pods-AR Demo App.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 26 | CAE0F23E8FB7825F3190698A7D7B09E2 /* Pods-AR Demo App-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AR Demo App-acknowledgements.plist"; sourceTree = ""; }; 27 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 28 | E27A2F1A47B74DAB131F274C969A5D79 /* Pods-AR Demo App-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AR Demo App-dummy.m"; sourceTree = ""; }; 29 | E3F3DEAC62E89F9ABAA5BE6404D5548E /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Mapbox.framework; path = dynamic/Mapbox.framework; sourceTree = ""; }; 30 | /* End PBXFileReference section */ 31 | 32 | /* Begin PBXFrameworksBuildPhase section */ 33 | 2908237C38C82676949A494F8564D245 /* Frameworks */ = { 34 | isa = PBXFrameworksBuildPhase; 35 | buildActionMask = 2147483647; 36 | files = ( 37 | AE7042ADE0381C8B419364DA1CB7F538 /* Foundation.framework in Frameworks */, 38 | ); 39 | runOnlyForDeploymentPostprocessing = 0; 40 | }; 41 | /* End PBXFrameworksBuildPhase section */ 42 | 43 | /* Begin PBXGroup section */ 44 | 3433746FBB20361F7C06EA7E60ED2F4A /* Frameworks */ = { 45 | isa = PBXGroup; 46 | children = ( 47 | E3F3DEAC62E89F9ABAA5BE6404D5548E /* Mapbox.framework */, 48 | ); 49 | name = Frameworks; 50 | sourceTree = ""; 51 | }; 52 | 3B6AD4FFE66908FCA51F294DF844D59F /* Pods */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | C622644E73922BB231E29AB8457EFB83 /* Mapbox-iOS-SDK */, 56 | ); 57 | name = Pods; 58 | sourceTree = ""; 59 | }; 60 | 64991635960026285B1DD6FF0E391E0C /* Pods-AR Demo App */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 6D359B9A767A5B2ABC5769A6FE50EA8A /* Info.plist */, 64 | 5C0D082CB127ADD053804EC9D1DDE28A /* Pods-AR Demo App.modulemap */, 65 | 5DDF98CBDE53EDE7D13B0F46552C5191 /* Pods-AR Demo App-acknowledgements.markdown */, 66 | CAE0F23E8FB7825F3190698A7D7B09E2 /* Pods-AR Demo App-acknowledgements.plist */, 67 | E27A2F1A47B74DAB131F274C969A5D79 /* Pods-AR Demo App-dummy.m */, 68 | 21090769892165B4BD250A07A672E92C /* Pods-AR Demo App-frameworks.sh */, 69 | A3FF3CE0AD74667F3C0FC496654C8C5D /* Pods-AR Demo App-resources.sh */, 70 | 73AEAA55C9564E8BB2FD2AA3A8EC929A /* Pods-AR Demo App-umbrella.h */, 71 | 8AD3D0AC75A9C26C6078BB68F30FB7F0 /* Pods-AR Demo App.debug.xcconfig */, 72 | 58285240081CF90757CCD6260D2F4ED4 /* Pods-AR Demo App.release.xcconfig */, 73 | ); 74 | name = "Pods-AR Demo App"; 75 | path = "Target Support Files/Pods-AR Demo App"; 76 | sourceTree = ""; 77 | }; 78 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | CBB3DE36805AF21409EC968A9691732F /* Foundation.framework */, 82 | ); 83 | name = iOS; 84 | sourceTree = ""; 85 | }; 86 | 7DB346D0F39D3F0E887471402A8071AB = { 87 | isa = PBXGroup; 88 | children = ( 89 | 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, 90 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */, 91 | 3B6AD4FFE66908FCA51F294DF844D59F /* Pods */, 92 | E4805E4B189F1F3AB0DC535CEB44C431 /* Products */, 93 | CB92A1398B4EC1BF4BA2D0CB7EAC065C /* Targets Support Files */, 94 | ); 95 | sourceTree = ""; 96 | }; 97 | BC3CA7F9E30CC8F7E2DD044DD34432FC /* Frameworks */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 7531C8F8DE19F1AA3C8A7AC97A91DC29 /* iOS */, 101 | ); 102 | name = Frameworks; 103 | sourceTree = ""; 104 | }; 105 | C622644E73922BB231E29AB8457EFB83 /* Mapbox-iOS-SDK */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 3433746FBB20361F7C06EA7E60ED2F4A /* Frameworks */, 109 | ); 110 | name = "Mapbox-iOS-SDK"; 111 | path = "Mapbox-iOS-SDK"; 112 | sourceTree = ""; 113 | }; 114 | CB92A1398B4EC1BF4BA2D0CB7EAC065C /* Targets Support Files */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 64991635960026285B1DD6FF0E391E0C /* Pods-AR Demo App */, 118 | ); 119 | name = "Targets Support Files"; 120 | sourceTree = ""; 121 | }; 122 | E4805E4B189F1F3AB0DC535CEB44C431 /* Products */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | C117DDE477B5750598F6908F4542713C /* Pods_AR_Demo_App.framework */, 126 | ); 127 | name = Products; 128 | sourceTree = ""; 129 | }; 130 | /* End PBXGroup section */ 131 | 132 | /* Begin PBXHeadersBuildPhase section */ 133 | 5C19C54174634EED87D3C3EC63B0FA91 /* Headers */ = { 134 | isa = PBXHeadersBuildPhase; 135 | buildActionMask = 2147483647; 136 | files = ( 137 | C37B3B93AB3996FE2CB00ED7499D98D1 /* Pods-AR Demo App-umbrella.h in Headers */, 138 | ); 139 | runOnlyForDeploymentPostprocessing = 0; 140 | }; 141 | /* End PBXHeadersBuildPhase section */ 142 | 143 | /* Begin PBXNativeTarget section */ 144 | FBA3AE33BACBD7DCAF7C900D12C4E61D /* Pods-AR Demo App */ = { 145 | isa = PBXNativeTarget; 146 | buildConfigurationList = 52B3BC700AFF4317AF360F2B12D0B57C /* Build configuration list for PBXNativeTarget "Pods-AR Demo App" */; 147 | buildPhases = ( 148 | EE75CC594C7DC5CC479D682D6486F9C8 /* Sources */, 149 | 2908237C38C82676949A494F8564D245 /* Frameworks */, 150 | 5C19C54174634EED87D3C3EC63B0FA91 /* Headers */, 151 | ); 152 | buildRules = ( 153 | ); 154 | dependencies = ( 155 | ); 156 | name = "Pods-AR Demo App"; 157 | productName = "Pods-AR Demo App"; 158 | productReference = C117DDE477B5750598F6908F4542713C /* Pods_AR_Demo_App.framework */; 159 | productType = "com.apple.product-type.framework"; 160 | }; 161 | /* End PBXNativeTarget section */ 162 | 163 | /* Begin PBXProject section */ 164 | D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { 165 | isa = PBXProject; 166 | attributes = { 167 | LastSwiftUpdateCheck = 0730; 168 | LastUpgradeCheck = 0700; 169 | }; 170 | buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; 171 | compatibilityVersion = "Xcode 3.2"; 172 | developmentRegion = English; 173 | hasScannedForEncodings = 0; 174 | knownRegions = ( 175 | en, 176 | ); 177 | mainGroup = 7DB346D0F39D3F0E887471402A8071AB; 178 | productRefGroup = E4805E4B189F1F3AB0DC535CEB44C431 /* Products */; 179 | projectDirPath = ""; 180 | projectRoot = ""; 181 | targets = ( 182 | FBA3AE33BACBD7DCAF7C900D12C4E61D /* Pods-AR Demo App */, 183 | ); 184 | }; 185 | /* End PBXProject section */ 186 | 187 | /* Begin PBXSourcesBuildPhase section */ 188 | EE75CC594C7DC5CC479D682D6486F9C8 /* Sources */ = { 189 | isa = PBXSourcesBuildPhase; 190 | buildActionMask = 2147483647; 191 | files = ( 192 | CDEBDF84201119DFC581285C58802B05 /* Pods-AR Demo App-dummy.m in Sources */, 193 | ); 194 | runOnlyForDeploymentPostprocessing = 0; 195 | }; 196 | /* End PBXSourcesBuildPhase section */ 197 | 198 | /* Begin XCBuildConfiguration section */ 199 | 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */ = { 200 | isa = XCBuildConfiguration; 201 | buildSettings = { 202 | ALWAYS_SEARCH_USER_PATHS = NO; 203 | CLANG_ANALYZER_NONNULL = YES; 204 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 205 | CLANG_CXX_LIBRARY = "libc++"; 206 | CLANG_ENABLE_MODULES = YES; 207 | CLANG_ENABLE_OBJC_ARC = YES; 208 | CLANG_WARN_BOOL_CONVERSION = YES; 209 | CLANG_WARN_CONSTANT_CONVERSION = YES; 210 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 211 | CLANG_WARN_EMPTY_BODY = YES; 212 | CLANG_WARN_ENUM_CONVERSION = YES; 213 | CLANG_WARN_INT_CONVERSION = YES; 214 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 215 | CLANG_WARN_UNREACHABLE_CODE = YES; 216 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 217 | CODE_SIGNING_REQUIRED = NO; 218 | COPY_PHASE_STRIP = NO; 219 | ENABLE_TESTABILITY = YES; 220 | GCC_C_LANGUAGE_STANDARD = gnu99; 221 | GCC_DYNAMIC_NO_PIC = NO; 222 | GCC_OPTIMIZATION_LEVEL = 0; 223 | GCC_PREPROCESSOR_DEFINITIONS = ( 224 | "POD_CONFIGURATION_DEBUG=1", 225 | "DEBUG=1", 226 | "$(inherited)", 227 | ); 228 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 229 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 230 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 231 | GCC_WARN_UNDECLARED_SELECTOR = YES; 232 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 233 | GCC_WARN_UNUSED_FUNCTION = YES; 234 | GCC_WARN_UNUSED_VARIABLE = YES; 235 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 236 | ONLY_ACTIVE_ARCH = YES; 237 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 238 | STRIP_INSTALLED_PRODUCT = NO; 239 | SYMROOT = "${SRCROOT}/../build"; 240 | }; 241 | name = Debug; 242 | }; 243 | 8C4E01EE0B9AC888A6EE2998C7141793 /* Release */ = { 244 | isa = XCBuildConfiguration; 245 | baseConfigurationReference = 58285240081CF90757CCD6260D2F4ED4 /* Pods-AR Demo App.release.xcconfig */; 246 | buildSettings = { 247 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 248 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 249 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 250 | CURRENT_PROJECT_VERSION = 1; 251 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 252 | DEFINES_MODULE = YES; 253 | DYLIB_COMPATIBILITY_VERSION = 1; 254 | DYLIB_CURRENT_VERSION = 1; 255 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 256 | ENABLE_STRICT_OBJC_MSGSEND = YES; 257 | GCC_NO_COMMON_BLOCKS = YES; 258 | INFOPLIST_FILE = "Target Support Files/Pods-AR Demo App/Info.plist"; 259 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 260 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 261 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 262 | MACH_O_TYPE = staticlib; 263 | MODULEMAP_FILE = "Target Support Files/Pods-AR Demo App/Pods-AR Demo App.modulemap"; 264 | MTL_ENABLE_DEBUG_INFO = NO; 265 | OTHER_LDFLAGS = ""; 266 | OTHER_LIBTOOLFLAGS = ""; 267 | PODS_ROOT = "$(SRCROOT)"; 268 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 269 | PRODUCT_NAME = Pods_AR_Demo_App; 270 | SDKROOT = iphoneos; 271 | SKIP_INSTALL = YES; 272 | TARGETED_DEVICE_FAMILY = "1,2"; 273 | VERSIONING_SYSTEM = "apple-generic"; 274 | VERSION_INFO_PREFIX = ""; 275 | }; 276 | name = Release; 277 | }; 278 | B7324857C38B065FEB1EEE3105C2367A /* Release */ = { 279 | isa = XCBuildConfiguration; 280 | buildSettings = { 281 | ALWAYS_SEARCH_USER_PATHS = NO; 282 | CLANG_ANALYZER_NONNULL = YES; 283 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 284 | CLANG_CXX_LIBRARY = "libc++"; 285 | CLANG_ENABLE_MODULES = YES; 286 | CLANG_ENABLE_OBJC_ARC = YES; 287 | CLANG_WARN_BOOL_CONVERSION = YES; 288 | CLANG_WARN_CONSTANT_CONVERSION = YES; 289 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 290 | CLANG_WARN_EMPTY_BODY = YES; 291 | CLANG_WARN_ENUM_CONVERSION = YES; 292 | CLANG_WARN_INT_CONVERSION = YES; 293 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 294 | CLANG_WARN_UNREACHABLE_CODE = YES; 295 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 296 | CODE_SIGNING_REQUIRED = NO; 297 | COPY_PHASE_STRIP = YES; 298 | ENABLE_NS_ASSERTIONS = NO; 299 | GCC_C_LANGUAGE_STANDARD = gnu99; 300 | GCC_PREPROCESSOR_DEFINITIONS = ( 301 | "POD_CONFIGURATION_RELEASE=1", 302 | "$(inherited)", 303 | ); 304 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 305 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 306 | GCC_WARN_UNDECLARED_SELECTOR = YES; 307 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 308 | GCC_WARN_UNUSED_FUNCTION = YES; 309 | GCC_WARN_UNUSED_VARIABLE = YES; 310 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 311 | PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; 312 | STRIP_INSTALLED_PRODUCT = NO; 313 | SYMROOT = "${SRCROOT}/../build"; 314 | VALIDATE_PRODUCT = YES; 315 | }; 316 | name = Release; 317 | }; 318 | DD86A0F6E4DB472F6C57352EAABBB099 /* Debug */ = { 319 | isa = XCBuildConfiguration; 320 | baseConfigurationReference = 8AD3D0AC75A9C26C6078BB68F30FB7F0 /* Pods-AR Demo App.debug.xcconfig */; 321 | buildSettings = { 322 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 323 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 324 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 325 | CURRENT_PROJECT_VERSION = 1; 326 | DEBUG_INFORMATION_FORMAT = dwarf; 327 | DEFINES_MODULE = YES; 328 | DYLIB_COMPATIBILITY_VERSION = 1; 329 | DYLIB_CURRENT_VERSION = 1; 330 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 331 | ENABLE_STRICT_OBJC_MSGSEND = YES; 332 | GCC_NO_COMMON_BLOCKS = YES; 333 | INFOPLIST_FILE = "Target Support Files/Pods-AR Demo App/Info.plist"; 334 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 335 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 336 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 337 | MACH_O_TYPE = staticlib; 338 | MODULEMAP_FILE = "Target Support Files/Pods-AR Demo App/Pods-AR Demo App.modulemap"; 339 | MTL_ENABLE_DEBUG_INFO = YES; 340 | OTHER_LDFLAGS = ""; 341 | OTHER_LIBTOOLFLAGS = ""; 342 | PODS_ROOT = "$(SRCROOT)"; 343 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 344 | PRODUCT_NAME = Pods_AR_Demo_App; 345 | SDKROOT = iphoneos; 346 | SKIP_INSTALL = YES; 347 | TARGETED_DEVICE_FAMILY = "1,2"; 348 | VERSIONING_SYSTEM = "apple-generic"; 349 | VERSION_INFO_PREFIX = ""; 350 | }; 351 | name = Debug; 352 | }; 353 | /* End XCBuildConfiguration section */ 354 | 355 | /* Begin XCConfigurationList section */ 356 | 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { 357 | isa = XCConfigurationList; 358 | buildConfigurations = ( 359 | 59B042A655B7C20CBAB90E385BF4E4C7 /* Debug */, 360 | B7324857C38B065FEB1EEE3105C2367A /* Release */, 361 | ); 362 | defaultConfigurationIsVisible = 0; 363 | defaultConfigurationName = Release; 364 | }; 365 | 52B3BC700AFF4317AF360F2B12D0B57C /* Build configuration list for PBXNativeTarget "Pods-AR Demo App" */ = { 366 | isa = XCConfigurationList; 367 | buildConfigurations = ( 368 | DD86A0F6E4DB472F6C57352EAABBB099 /* Debug */, 369 | 8C4E01EE0B9AC888A6EE2998C7141793 /* Release */, 370 | ); 371 | defaultConfigurationIsVisible = 0; 372 | defaultConfigurationName = Release; 373 | }; 374 | /* End XCConfigurationList section */ 375 | }; 376 | rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; 377 | } 378 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_AR_Demo_App : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_AR_Demo_App 5 | @end 6 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 6 | 7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 8 | 9 | install_framework() 10 | { 11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 12 | local source="${BUILT_PRODUCTS_DIR}/$1" 13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 15 | elif [ -r "$1" ]; then 16 | local source="$1" 17 | fi 18 | 19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 20 | 21 | if [ -L "${source}" ]; then 22 | echo "Symlinked..." 23 | source="$(readlink "${source}")" 24 | fi 25 | 26 | # use filter instead of exclude so missing patterns dont' throw errors 27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 29 | 30 | local basename 31 | basename="$(basename -s .framework "$1")" 32 | binary="${destination}/${basename}.framework/${basename}" 33 | if ! [ -r "$binary" ]; then 34 | binary="${destination}/${basename}" 35 | fi 36 | 37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 39 | strip_invalid_archs "$binary" 40 | fi 41 | 42 | # Resign the code if required by the build settings to avoid unstable apps 43 | code_sign_if_enabled "${destination}/$(basename "$1")" 44 | 45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 47 | local swift_runtime_libs 48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 49 | for lib in $swift_runtime_libs; do 50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 52 | code_sign_if_enabled "${destination}/${lib}" 53 | done 54 | fi 55 | } 56 | 57 | # Signs a framework with the provided identity 58 | code_sign_if_enabled() { 59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 60 | # Use the current code_sign_identitiy 61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" 63 | 64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 65 | code_sign_cmd="$code_sign_cmd &" 66 | fi 67 | echo "$code_sign_cmd" 68 | eval "$code_sign_cmd" 69 | fi 70 | } 71 | 72 | # Strip invalid architectures 73 | strip_invalid_archs() { 74 | binary="$1" 75 | # Get architectures for current file 76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)" 77 | stripped="" 78 | for arch in $archs; do 79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then 80 | # Strip non-valid architectures in-place 81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 82 | stripped="$stripped $arch" 83 | fi 84 | done 85 | if [[ "$stripped" ]]; then 86 | echo "Stripped $binary of architectures:$stripped" 87 | fi 88 | } 89 | 90 | 91 | if [[ "$CONFIGURATION" == "Debug" ]]; then 92 | install_framework "${PODS_ROOT}/Mapbox-iOS-SDK/dynamic/Mapbox.framework" 93 | fi 94 | if [[ "$CONFIGURATION" == "Release" ]]; then 95 | install_framework "${PODS_ROOT}/Mapbox-iOS-SDK/dynamic/Mapbox.framework" 96 | fi 97 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 98 | wait 99 | fi 100 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 5 | 6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 7 | > "$RESOURCES_TO_COPY" 8 | 9 | XCASSET_FILES=() 10 | 11 | case "${TARGETED_DEVICE_FAMILY}" in 12 | 1,2) 13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 14 | ;; 15 | 1) 16 | TARGET_DEVICE_ARGS="--target-device iphone" 17 | ;; 18 | 2) 19 | TARGET_DEVICE_ARGS="--target-device ipad" 20 | ;; 21 | 3) 22 | TARGET_DEVICE_ARGS="--target-device tv" 23 | ;; 24 | *) 25 | TARGET_DEVICE_ARGS="--target-device mac" 26 | ;; 27 | esac 28 | 29 | install_resource() 30 | { 31 | if [[ "$1" = /* ]] ; then 32 | RESOURCE_PATH="$1" 33 | else 34 | RESOURCE_PATH="${PODS_ROOT}/$1" 35 | fi 36 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 37 | cat << EOM 38 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 39 | EOM 40 | exit 1 41 | fi 42 | case $RESOURCE_PATH in 43 | *.storyboard) 44 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 45 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 46 | ;; 47 | *.xib) 48 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" 49 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 50 | ;; 51 | *.framework) 52 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 53 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 54 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 55 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 56 | ;; 57 | *.xcdatamodel) 58 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" 59 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 60 | ;; 61 | *.xcdatamodeld) 62 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" 63 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 64 | ;; 65 | *.xcmappingmodel) 66 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" 67 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 68 | ;; 69 | *.xcassets) 70 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 71 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 72 | ;; 73 | *) 74 | echo "$RESOURCE_PATH" 75 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 76 | ;; 77 | esac 78 | } 79 | 80 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 81 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 82 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 83 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 84 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 85 | fi 86 | rm -f "$RESOURCES_TO_COPY" 87 | 88 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] 89 | then 90 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 91 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 92 | while read line; do 93 | if [[ $line != "${PODS_ROOT}*" ]]; then 94 | XCASSET_FILES+=("$line") 95 | fi 96 | done <<<"$OTHER_XCASSETS" 97 | 98 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | fi 100 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_AR_Demo_AppVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_AR_Demo_AppVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Mapbox-iOS-SDK/dynamic" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mapbox-iOS-SDK" 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Mapbox-iOS-SDK" 6 | OTHER_LDFLAGS = $(inherited) -framework "Mapbox" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_AR_Demo_App { 2 | umbrella header "Pods-AR Demo App-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /AR Demo App/Pods/Target Support Files/Pods-AR Demo App/Pods-AR Demo App.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Mapbox-iOS-SDK/dynamic" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Mapbox-iOS-SDK" 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Mapbox-iOS-SDK" 6 | OTHER_LDFLAGS = $(inherited) -framework "Mapbox" 7 | PODS_BUILD_DIR = $BUILD_DIR 8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AR Demo Sample Code 2 | 3 | Sample code for blog post at https://blog.classycode.com/how-to-write-a-pokémon-go-clone-for-ios-edf1cf1cf5ce#.f1wkn9ga6 4 | 5 | Don't forget to adapt Info.plist with your MapBox access token, and paste your style URL into ViewController.swift. 6 | --------------------------------------------------------------------------------