@maplibre/maplibre-react-native 8.6.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +3 -0
- package/.eslintrc.js +158 -0
- package/.gitattributes +1 -0
- package/.nvmrc +1 -0
- package/.prettierrc.js +7 -0
- package/.sonarcloud.properties +15 -0
- package/CHANGELOG.md +367 -0
- package/CODE_OF_CONDUCT.md +2 -0
- package/CONTRIBUTING.md +34 -0
- package/LICENSE.md +9 -0
- package/README.md +224 -0
- package/RELEASE.md +30 -0
- package/android/build.gradle +34 -0
- package/android/install.md +16 -0
- package/android/rctmgl/.settings/org.eclipse.buildship.core.prefs +2 -0
- package/android/rctmgl/build.gradle +61 -0
- package/android/rctmgl/proguard-rules.pro +25 -0
- package/android/rctmgl/src/main/AndroidManifest.xml +4 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/RCTMGLPackage.java +99 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEvent.java +35 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractEventEmitter.java +80 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/AbstractMapFeature.java +19 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerView.java +23 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/MarkerViewManager.java +67 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCallout.java +15 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLCalloutManager.java +22 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.java +112 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.java +45 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotation.java +360 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/annotation/RCTMGLPointAnnotationManager.java +88 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraStop.java +249 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +125 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +73 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +530 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +101 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/camera/constants/CameraMode.java +22 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImages.java +234 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java +103 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/LocationComponentManager.java +149 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.java +66 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +35 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java +59 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +16 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +31 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.java +1527 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.java +353 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +41 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyle.java +83 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFactory.java +2242 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleFunctionParser.java +108 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/RCTMGLStyleValue.java +212 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTLayer.java +287 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayer.java +27 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLBackgroundLayerManager.java +64 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLCircleLayerManager.java +77 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillExtrusionLayerManager.java +80 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLFillLayerManager.java +80 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLHeatmapLayerManager.java +77 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLLineLayerManager.java +79 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayer.java +27 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLRasterLayerManager.java +64 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayer.java +55 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/layers/RCTMGLSymbolLayerManager.java +75 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLight.java +65 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/light/RCTMGLLightManager.java +29 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSource.java +81 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLImageSourceManager.java +72 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSource.java +45 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.java +44 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSource.java +302 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLShapeSourceManager.java +227 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSource.java +97 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.java +80 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSource.java +64 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.java +84 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/styles/sources/RCTSource.java +244 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AbstractEvent.java +66 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/AndroidCallbackEvent.java +38 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/EventEmitter.java +45 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/FeatureClickEvent.java +79 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/IEvent.java +18 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/ImageMissingEvent.java +42 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/LocationEvent.java +100 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapChangeEvent.java +47 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapClickEvent.java +51 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.java +36 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/OfflineEvent.java +29 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationClickEvent.java +46 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/PointAnnotationDragEvent.java +51 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventKeys.java +39 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/events/constants/EventTypes.java +51 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/http/CustomHeadersInterceptor.java +38 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/LocationManager.java +168 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocation.java +63 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +11 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingMode.java +63 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/location/UserTrackingState.java +19 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLocationModule.java +158 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLLogging.java +140 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLModule.java +348 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.java +597 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/modules/RCTMGLSnapshotModule.java +139 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/BitmapUtils.java +129 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ConvertUtils.java +257 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/DownloadMapImageTask.java +159 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ExpressionParser.java +74 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoJSONUtils.java +209 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/GeoViewport.java +38 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ImageEntry.java +25 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/ResourceUtils.java +30 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SimpleEventCallback.java +30 -0
- package/android/rctmgl/src/main/java/com/mapbox/rctmgl/utils/SphericalMercator.java +69 -0
- package/android/rctmgl/src/main/res/drawable/empty.xml +5 -0
- package/android/rctmgl/src/main/res/drawable/empty_drawable.png +0 -0
- package/android/rctmgl/src/main/res/drawable-xxhdpi/red_marker.png +0 -0
- package/android/rctmgl/src/main/res/layout/annotation.xml +17 -0
- package/android/rctmgl/src/main/res/values/strings.xml +3 -0
- package/android/settings.gradle +1 -0
- package/app.plugin.js +1 -0
- package/assets/heading.png +0 -0
- package/assets/heading@2x.png +0 -0
- package/assets/heading@3x.png +0 -0
- package/assets/indoor_building_map_android.png +0 -0
- package/assets/indoor_building_map_ios.png +0 -0
- package/assets/mapbox_logo.png +0 -0
- package/babel.config.js +9 -0
- package/docs/Annotation.md +39 -0
- package/docs/Annotations.md +17 -0
- package/docs/BackgroundLayer.md +166 -0
- package/docs/Callout.md +15 -0
- package/docs/Camera.md +162 -0
- package/docs/CircleLayer.md +453 -0
- package/docs/CustomHttpHeaders.md +87 -0
- package/docs/FillExtrusionLayer.md +327 -0
- package/docs/FillLayer.md +293 -0
- package/docs/GettingStarted.md +72 -0
- package/docs/HeadingIndicator.md +10 -0
- package/docs/HeatmapLayer.md +215 -0
- package/docs/ImageSource.md +12 -0
- package/docs/Images.md +12 -0
- package/docs/Light.md +159 -0
- package/docs/LineLayer.md +567 -0
- package/docs/Logger.md +23 -0
- package/docs/MapView.md +211 -0
- package/docs/MapboxGL.md +65 -0
- package/docs/MarkerView.md +14 -0
- package/docs/NativeUserLocation.md +11 -0
- package/docs/OfflineManager.md +246 -0
- package/docs/PointAnnotation.md +34 -0
- package/docs/RasterLayer.md +357 -0
- package/docs/RasterSource.md +17 -0
- package/docs/ShapeSource.md +100 -0
- package/docs/Style.md +10 -0
- package/docs/StyleSheet.md +430 -0
- package/docs/SymbolLayer.md +1658 -0
- package/docs/UserLocation.md +39 -0
- package/docs/VectorSource.md +48 -0
- package/docs/docs.json +6093 -0
- package/docs/snapshotManager.md +53 -0
- package/index.d.ts +953 -0
- package/ios/RCTMGL/CameraMode.h +18 -0
- package/ios/RCTMGL/CameraMode.m +18 -0
- package/ios/RCTMGL/CameraStop.h +26 -0
- package/ios/RCTMGL/CameraStop.m +83 -0
- package/ios/RCTMGL/CameraUpdateItem.h +18 -0
- package/ios/RCTMGL/CameraUpdateItem.m +178 -0
- package/ios/RCTMGL/CameraUpdateQueue.h +21 -0
- package/ios/RCTMGL/CameraUpdateQueue.m +74 -0
- package/ios/RCTMGL/FilterParser.h +14 -0
- package/ios/RCTMGL/FilterParser.m +22 -0
- package/ios/RCTMGL/MGLCustomHeaders.h +20 -0
- package/ios/RCTMGL/MGLCustomHeaders.m +98 -0
- package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.h +23 -0
- package/ios/RCTMGL/MGLFaux3DUserLocationAnnotationView.m +474 -0
- package/ios/RCTMGL/MGLModule.h +13 -0
- package/ios/RCTMGL/MGLModule.m +269 -0
- package/ios/RCTMGL/MGLOfflineModule.h +19 -0
- package/ios/RCTMGL/MGLOfflineModule.m +516 -0
- package/ios/RCTMGL/MGLSnapshotModule.h +13 -0
- package/ios/RCTMGL/MGLSnapshotModule.m +80 -0
- package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.h +11 -0
- package/ios/RCTMGL/MGLUserLocationHeadingArrowLayer.m +57 -0
- package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.h +11 -0
- package/ios/RCTMGL/MGLUserLocationHeadingBeamLayer.m +102 -0
- package/ios/RCTMGL/MGLUserLocationHeadingIndicator.h +10 -0
- package/ios/RCTMGL/RCTConvert+Mapbox.h +16 -0
- package/ios/RCTMGL/RCTConvert+Mapbox.m +32 -0
- package/ios/RCTMGL/RCTMGL.h +13 -0
- package/ios/RCTMGL/RCTMGL.m +13 -0
- package/ios/RCTMGL/RCTMGLBackgroundLayer.h +14 -0
- package/ios/RCTMGL/RCTMGLBackgroundLayer.m +27 -0
- package/ios/RCTMGL/RCTMGLBackgroundLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLBackgroundLayerManager.m +35 -0
- package/ios/RCTMGL/RCTMGLCallout.h +15 -0
- package/ios/RCTMGL/RCTMGLCallout.m +74 -0
- package/ios/RCTMGL/RCTMGLCalloutManager.h +13 -0
- package/ios/RCTMGL/RCTMGLCalloutManager.m +21 -0
- package/ios/RCTMGL/RCTMGLCamera.h +39 -0
- package/ios/RCTMGL/RCTMGLCamera.m +258 -0
- package/ios/RCTMGL/RCTMGLCameraManager.h +13 -0
- package/ios/RCTMGL/RCTMGLCameraManager.m +52 -0
- package/ios/RCTMGL/RCTMGLCircleLayer.h +13 -0
- package/ios/RCTMGL/RCTMGLCircleLayer.m +34 -0
- package/ios/RCTMGL/RCTMGLCircleLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLCircleLayerManager.m +39 -0
- package/ios/RCTMGL/RCTMGLEvent.h +21 -0
- package/ios/RCTMGL/RCTMGLEvent.m +47 -0
- package/ios/RCTMGL/RCTMGLEventProtocol.h +16 -0
- package/ios/RCTMGL/RCTMGLEventTypes.h +50 -0
- package/ios/RCTMGL/RCTMGLEventTypes.m +49 -0
- package/ios/RCTMGL/RCTMGLFillExtrusionLayer.h +14 -0
- package/ios/RCTMGL/RCTMGLFillExtrusionLayer.m +32 -0
- package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLFillExtrusionLayerManager.m +39 -0
- package/ios/RCTMGL/RCTMGLFillLayer.h +14 -0
- package/ios/RCTMGL/RCTMGLFillLayer.m +33 -0
- package/ios/RCTMGL/RCTMGLFillLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLFillLayerManager.m +37 -0
- package/ios/RCTMGL/RCTMGLHeatmapLayer.h +12 -0
- package/ios/RCTMGL/RCTMGLHeatmapLayer.m +30 -0
- package/ios/RCTMGL/RCTMGLHeatmapLayerManager.h +12 -0
- package/ios/RCTMGL/RCTMGLHeatmapLayerManager.m +38 -0
- package/ios/RCTMGL/RCTMGLImageQueue.h +19 -0
- package/ios/RCTMGL/RCTMGLImageQueue.m +57 -0
- package/ios/RCTMGL/RCTMGLImageQueueOperation.h +17 -0
- package/ios/RCTMGL/RCTMGLImageQueueOperation.m +138 -0
- package/ios/RCTMGL/RCTMGLImageSource.h +16 -0
- package/ios/RCTMGL/RCTMGLImageSource.m +60 -0
- package/ios/RCTMGL/RCTMGLImageSourceManager.h +13 -0
- package/ios/RCTMGL/RCTMGLImageSourceManager.m +25 -0
- package/ios/RCTMGL/RCTMGLImages.h +25 -0
- package/ios/RCTMGL/RCTMGLImages.m +126 -0
- package/ios/RCTMGL/RCTMGLImagesManager.h +5 -0
- package/ios/RCTMGL/RCTMGLImagesManager.m +21 -0
- package/ios/RCTMGL/RCTMGLLayer.h +52 -0
- package/ios/RCTMGL/RCTMGLLayer.m +236 -0
- package/ios/RCTMGL/RCTMGLLight.h +17 -0
- package/ios/RCTMGL/RCTMGLLight.m +46 -0
- package/ios/RCTMGL/RCTMGLLightManager.h +13 -0
- package/ios/RCTMGL/RCTMGLLightManager.m +23 -0
- package/ios/RCTMGL/RCTMGLLineLayer.h +14 -0
- package/ios/RCTMGL/RCTMGLLineLayer.m +33 -0
- package/ios/RCTMGL/RCTMGLLineLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLLineLayerManager.m +40 -0
- package/ios/RCTMGL/RCTMGLLocation.h +19 -0
- package/ios/RCTMGL/RCTMGLLocation.m +32 -0
- package/ios/RCTMGL/RCTMGLLocationManager.h +30 -0
- package/ios/RCTMGL/RCTMGLLocationManager.m +180 -0
- package/ios/RCTMGL/RCTMGLLocationManagerDelegate.h +20 -0
- package/ios/RCTMGL/RCTMGLLocationModule.h +15 -0
- package/ios/RCTMGL/RCTMGLLocationModule.m +99 -0
- package/ios/RCTMGL/RCTMGLLogging.h +18 -0
- package/ios/RCTMGL/RCTMGLLogging.m +132 -0
- package/ios/RCTMGL/RCTMGLMapTouchEvent.h +25 -0
- package/ios/RCTMGL/RCTMGLMapTouchEvent.m +77 -0
- package/ios/RCTMGL/RCTMGLMapView.h +91 -0
- package/ios/RCTMGL/RCTMGLMapView.m +536 -0
- package/ios/RCTMGL/RCTMGLMapViewManager.h +17 -0
- package/ios/RCTMGL/RCTMGLMapViewManager.m +625 -0
- package/ios/RCTMGL/RCTMGLNativeUserLocation.h +18 -0
- package/ios/RCTMGL/RCTMGLNativeUserLocation.m +49 -0
- package/ios/RCTMGL/RCTMGLNativeUserLocationManager.h +5 -0
- package/ios/RCTMGL/RCTMGLNativeUserLocationManager.m +25 -0
- package/ios/RCTMGL/RCTMGLPointAnnotation.h +41 -0
- package/ios/RCTMGL/RCTMGLPointAnnotation.m +251 -0
- package/ios/RCTMGL/RCTMGLPointAnnotationManager.h +13 -0
- package/ios/RCTMGL/RCTMGLPointAnnotationManager.m +36 -0
- package/ios/RCTMGL/RCTMGLRasterLayer.h +14 -0
- package/ios/RCTMGL/RCTMGLRasterLayer.m +30 -0
- package/ios/RCTMGL/RCTMGLRasterLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLRasterLayerManager.m +35 -0
- package/ios/RCTMGL/RCTMGLRasterSource.h +16 -0
- package/ios/RCTMGL/RCTMGLRasterSource.m +35 -0
- package/ios/RCTMGL/RCTMGLRasterSourceManager.h +13 -0
- package/ios/RCTMGL/RCTMGLRasterSourceManager.m +32 -0
- package/ios/RCTMGL/RCTMGLShapeSource.h +52 -0
- package/ios/RCTMGL/RCTMGLShapeSource.m +180 -0
- package/ios/RCTMGL/RCTMGLShapeSourceManager.h +14 -0
- package/ios/RCTMGL/RCTMGLShapeSourceManager.m +205 -0
- package/ios/RCTMGL/RCTMGLSource.h +35 -0
- package/ios/RCTMGL/RCTMGLSource.m +143 -0
- package/ios/RCTMGL/RCTMGLStyle.h +219 -0
- package/ios/RCTMGL/RCTMGLStyle.m +1654 -0
- package/ios/RCTMGL/RCTMGLStyleValue.h +27 -0
- package/ios/RCTMGL/RCTMGLStyleValue.m +167 -0
- package/ios/RCTMGL/RCTMGLSymbolLayer.h +19 -0
- package/ios/RCTMGL/RCTMGLSymbolLayer.m +121 -0
- package/ios/RCTMGL/RCTMGLSymbolLayerManager.h +13 -0
- package/ios/RCTMGL/RCTMGLSymbolLayerManager.m +40 -0
- package/ios/RCTMGL/RCTMGLTileSource.h +22 -0
- package/ios/RCTMGL/RCTMGLTileSource.m +31 -0
- package/ios/RCTMGL/RCTMGLUserLocation.h +15 -0
- package/ios/RCTMGL/RCTMGLUserLocation.m +38 -0
- package/ios/RCTMGL/RCTMGLUtils.h +31 -0
- package/ios/RCTMGL/RCTMGLUtils.m +218 -0
- package/ios/RCTMGL/RCTMGLVectorLayer.h +15 -0
- package/ios/RCTMGL/RCTMGLVectorLayer.m +59 -0
- package/ios/RCTMGL/RCTMGLVectorSource.h +16 -0
- package/ios/RCTMGL/RCTMGLVectorSource.m +28 -0
- package/ios/RCTMGL/RCTMGLVectorSourceManager.h +14 -0
- package/ios/RCTMGL/RCTMGLVectorSourceManager.m +79 -0
- package/ios/RCTMGL/RNMBImageUtils.h +17 -0
- package/ios/RCTMGL/RNMBImageUtils.m +31 -0
- package/ios/RCTMGL/ViewManager.h +16 -0
- package/ios/RCTMGL/ViewManager.m +63 -0
- package/ios/RCTMGL/index.d.ts +1164 -0
- package/ios/RCTMGL.xcodeproj/project.pbxproj +774 -0
- package/ios/install.md +44 -0
- package/javascript/components/AbstractLayer.js +75 -0
- package/javascript/components/AbstractSource.js +15 -0
- package/javascript/components/BackgroundLayer.js +97 -0
- package/javascript/components/Callout.js +139 -0
- package/javascript/components/Camera.js +665 -0
- package/javascript/components/CircleLayer.js +101 -0
- package/javascript/components/FillExtrusionLayer.js +98 -0
- package/javascript/components/FillLayer.js +94 -0
- package/javascript/components/HeadingIndicator.js +31 -0
- package/javascript/components/HeatmapLayer.js +99 -0
- package/javascript/components/ImageSource.js +82 -0
- package/javascript/components/Images.js +119 -0
- package/javascript/components/Light.js +47 -0
- package/javascript/components/LineLayer.js +94 -0
- package/javascript/components/MapView.js +817 -0
- package/javascript/components/MarkerView.js +87 -0
- package/javascript/components/NativeBridgeComponent.js +86 -0
- package/javascript/components/NativeUserLocation.js +41 -0
- package/javascript/components/PointAnnotation.js +216 -0
- package/javascript/components/RasterLayer.js +95 -0
- package/javascript/components/RasterSource.js +124 -0
- package/javascript/components/ShapeSource.js +357 -0
- package/javascript/components/Style.js +264 -0
- package/javascript/components/SymbolLayer.js +120 -0
- package/javascript/components/UserLocation.js +273 -0
- package/javascript/components/VectorSource.js +200 -0
- package/javascript/components/annotations/Annotation.js +122 -0
- package/javascript/index.js +153 -0
- package/javascript/modules/location/locationManager.js +101 -0
- package/javascript/modules/offline/OfflineCreatePackOptions.js +46 -0
- package/javascript/modules/offline/OfflinePack.js +40 -0
- package/javascript/modules/offline/offlineManager.js +378 -0
- package/javascript/modules/snapshot/SnapshotOptions.js +67 -0
- package/javascript/modules/snapshot/snapshotManager.js +62 -0
- package/javascript/utils/BridgeValue.js +81 -0
- package/javascript/utils/Logger.js +114 -0
- package/javascript/utils/animated/Animated.js +39 -0
- package/javascript/utils/animated/AnimatedCoordinatesArray.js +191 -0
- package/javascript/utils/animated/AnimatedExtractCoordinateFromArray.js +43 -0
- package/javascript/utils/animated/AnimatedPoint.js +126 -0
- package/javascript/utils/animated/AnimatedRouteCoordinatesArray.js +124 -0
- package/javascript/utils/animated/AnimatedShape.js +72 -0
- package/javascript/utils/deprecation.js +25 -0
- package/javascript/utils/filterUtils.js +7 -0
- package/javascript/utils/geoUtils.js +73 -0
- package/javascript/utils/index.js +113 -0
- package/javascript/utils/styleMap.js +1901 -0
- package/maplibre-react-native.podspec +79 -0
- package/package.json +120 -0
- package/plugin/build/withMapbox.d.ts +12 -0
- package/plugin/build/withMapbox.js +119 -0
- package/plugin/install.md +32 -0
- package/react-native.config.js +10 -0
- package/scripts/autogenHelpers/DocJSONBuilder.js +458 -0
- package/scripts/autogenHelpers/JSDocNodeTree.js +131 -0
- package/scripts/autogenHelpers/MarkdownBuilder.js +29 -0
- package/scripts/autogenHelpers/globals.js +507 -0
- package/scripts/autogenerate.js +374 -0
- package/scripts/download-style-spec.sh +15 -0
- package/scripts/templates/RCTMGLStyle.h.ejs +33 -0
- package/scripts/templates/RCTMGLStyle.m.ejs +97 -0
- package/scripts/templates/RCTMGLStyleFactory.java.ejs +107 -0
- package/scripts/templates/component.md.ejs +122 -0
- package/scripts/templates/index.d.ts.ejs +56 -0
- package/scripts/templates/styleMap.js.ejs +115 -0
- package/setup-jest.js +121 -0
- package/style-spec/v8.json +5798 -0
- package/tsconfig.json +65 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MGLOfflineModule.m
|
|
3
|
+
// RCTMGL
|
|
4
|
+
//
|
|
5
|
+
// Created by Nick Italiano on 10/25/17.
|
|
6
|
+
// Copyright © 2017 Mapbox Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "MGLOfflineModule.h"
|
|
10
|
+
#import "RCTMGLUtils.h"
|
|
11
|
+
#import "RCTMGLEvent.h"
|
|
12
|
+
#import "RCTMGLEventTypes.h"
|
|
13
|
+
|
|
14
|
+
@implementation MGLOfflineModule
|
|
15
|
+
{
|
|
16
|
+
NSUInteger lastPackState;
|
|
17
|
+
double lastPackTimestamp;
|
|
18
|
+
double eventThrottle;
|
|
19
|
+
BOOL hasListeners;
|
|
20
|
+
NSMutableArray<RCTPromiseResolveBlock> *packRequestQueue;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
RCT_EXPORT_MODULE()
|
|
24
|
+
|
|
25
|
+
+ (BOOL)requiresMainQueueSetup
|
|
26
|
+
{
|
|
27
|
+
return YES;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
- (void)startObserving
|
|
31
|
+
{
|
|
32
|
+
[super startObserving];
|
|
33
|
+
hasListeners = YES;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
- (void)stopObserving
|
|
37
|
+
{
|
|
38
|
+
[super stopObserving];
|
|
39
|
+
hasListeners = NO;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
NSString *const RCT_MAPBOX_OFFLINE_CALLBACK_PROGRESS = @"MapboxOfflineRegionProgress";
|
|
43
|
+
NSString *const RCT_MAPBOX_OFFLINE_CALLBACK_ERROR = @"MapboOfflineRegionError";
|
|
44
|
+
|
|
45
|
+
- (instancetype)init
|
|
46
|
+
{
|
|
47
|
+
if (self = [super init]) {
|
|
48
|
+
packRequestQueue = [NSMutableArray new];
|
|
49
|
+
eventThrottle = 300;
|
|
50
|
+
lastPackState = -1;
|
|
51
|
+
|
|
52
|
+
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
|
|
53
|
+
[defaultCenter addObserver:self selector:@selector(offlinePackProgressDidChange:) name:MGLOfflinePackProgressChangedNotification object:nil];
|
|
54
|
+
[defaultCenter addObserver:self selector:@selector(offlinePackDidReceiveError:) name:MGLOfflinePackErrorNotification object:nil];
|
|
55
|
+
[defaultCenter addObserver:self selector:@selector(offlinePackDidReceiveMaxAllowedMapboxTiles:) name:MGLOfflinePackMaximumMapboxTilesReachedNotification object:nil];
|
|
56
|
+
|
|
57
|
+
[[MGLOfflineStorage sharedOfflineStorage] addObserver:self forKeyPath:@"packs" options:NSKeyValueObservingOptionInitial context:NULL];
|
|
58
|
+
}
|
|
59
|
+
return self;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
- (void)dealloc
|
|
63
|
+
{
|
|
64
|
+
[[MGLOfflineStorage sharedOfflineStorage] removeObserver:self forKeyPath:@"packs"];
|
|
65
|
+
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
69
|
+
{
|
|
70
|
+
return @[RCT_MAPBOX_OFFLINE_CALLBACK_PROGRESS, RCT_MAPBOX_OFFLINE_CALLBACK_ERROR];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
|
|
74
|
+
{
|
|
75
|
+
if (packRequestQueue.count == 0) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
NSArray<MGLOfflinePack *> *packs = [[MGLOfflineStorage sharedOfflineStorage] packs];
|
|
80
|
+
if (packs == nil) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
while (packRequestQueue.count > 0) {
|
|
85
|
+
RCTPromiseResolveBlock resolve = [packRequestQueue objectAtIndex:0];
|
|
86
|
+
resolve([self _convertPacksToJson:packs]);
|
|
87
|
+
[packRequestQueue removeObjectAtIndex:0];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
RCT_EXPORT_METHOD(createPack:(NSDictionary *)options
|
|
92
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
93
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
94
|
+
{
|
|
95
|
+
NSString *styleURL = options[@"styleURL"];
|
|
96
|
+
MGLCoordinateBounds bounds = [RCTMGLUtils fromFeatureCollection:options[@"bounds"]];
|
|
97
|
+
|
|
98
|
+
id<MGLOfflineRegion> offlineRegion = [[MGLTilePyramidOfflineRegion alloc] initWithStyleURL:[NSURL URLWithString:styleURL]
|
|
99
|
+
bounds:bounds
|
|
100
|
+
fromZoomLevel:[options[@"minZoom"] doubleValue]
|
|
101
|
+
toZoomLevel:[options[@"maxZoom"] doubleValue]];
|
|
102
|
+
NSData *context = [self _archiveMetadata:options[@"metadata"]];
|
|
103
|
+
|
|
104
|
+
[[MGLOfflineStorage sharedOfflineStorage] addPackForRegion:offlineRegion
|
|
105
|
+
withContext:context
|
|
106
|
+
completionHandler:^(MGLOfflinePack *pack, NSError *error) {
|
|
107
|
+
if (error != nil) {
|
|
108
|
+
reject(@"createPack", error.description, error);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
resolve([self _convertPackToDict:pack]);
|
|
112
|
+
[pack resume];
|
|
113
|
+
}];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
RCT_EXPORT_METHOD(mergeOfflineRegions:(NSString *)path
|
|
117
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
118
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
119
|
+
{
|
|
120
|
+
NSString *absolutePath;
|
|
121
|
+
if ([path isAbsolutePath]) {
|
|
122
|
+
absolutePath = path;
|
|
123
|
+
} else {
|
|
124
|
+
NSBundle *mainBundle = [NSBundle mainBundle];
|
|
125
|
+
NSString *fileName = [path stringByDeletingPathExtension];
|
|
126
|
+
NSString *extension = [path pathExtension];
|
|
127
|
+
absolutePath = [mainBundle pathForResource:fileName ofType:extension];
|
|
128
|
+
if (!absolutePath) {
|
|
129
|
+
return reject(@"asset_does_not_exist", [NSString stringWithFormat:@"The given assetName, %@, can't be found in the app's bundle.", path], nil);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
[[MGLOfflineStorage sharedOfflineStorage] addContentsOfFile:absolutePath withCompletionHandler:^(NSURL *fileURL, NSArray<MGLOfflinePack *> *packs, NSError *error) {
|
|
134
|
+
if (error != nil) {
|
|
135
|
+
reject(@"mergeOfflineRegions", error.description, error);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
resolve(nil);
|
|
139
|
+
}];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
RCT_EXPORT_METHOD(getPacks:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
143
|
+
{
|
|
144
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
145
|
+
NSArray<MGLOfflinePack *> *packs = [[MGLOfflineStorage sharedOfflineStorage] packs];
|
|
146
|
+
|
|
147
|
+
if (packs == nil) {
|
|
148
|
+
// packs have not loaded yet
|
|
149
|
+
[self->packRequestQueue addObject:resolve];
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
resolve([self _convertPacksToJson:packs]);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
RCT_EXPORT_METHOD(invalidateAmbientCache:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
158
|
+
{
|
|
159
|
+
[[MGLOfflineStorage sharedOfflineStorage] invalidateAmbientCacheWithCompletionHandler:^(NSError *error) {
|
|
160
|
+
if (error != nil) {
|
|
161
|
+
reject(@"invalidateAmbientCache", error.description, error);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
resolve(nil);
|
|
165
|
+
}];
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
RCT_EXPORT_METHOD(clearAmbientCache:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
169
|
+
{
|
|
170
|
+
[[MGLOfflineStorage sharedOfflineStorage] clearAmbientCacheWithCompletionHandler:^(NSError *error) {
|
|
171
|
+
if (error != nil) {
|
|
172
|
+
reject(@"clearAmbientCache", error.description, error);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
resolve(nil);
|
|
176
|
+
}];
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
RCT_EXPORT_METHOD(setMaximumAmbientCacheSize:(NSUInteger)cacheSize
|
|
180
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
181
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
182
|
+
{
|
|
183
|
+
[[MGLOfflineStorage sharedOfflineStorage] setMaximumAmbientCacheSize:cacheSize withCompletionHandler:^(NSError *error) {
|
|
184
|
+
if (error != nil) {
|
|
185
|
+
reject(@"setMaximumAmbientCacheSize", error.description, error);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
resolve(nil);
|
|
189
|
+
}];
|
|
190
|
+
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
RCT_EXPORT_METHOD(resetDatabase:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
194
|
+
{
|
|
195
|
+
[[MGLOfflineStorage sharedOfflineStorage] resetDatabaseWithCompletionHandler:^(NSError *error) {
|
|
196
|
+
if (error != nil) {
|
|
197
|
+
reject(@"resetDatabase", error.description, error);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
resolve(nil);
|
|
201
|
+
}];
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
RCT_EXPORT_METHOD(getPackStatus:(NSString *)name
|
|
206
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
207
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
208
|
+
{
|
|
209
|
+
MGLOfflinePack *pack = [self _getPackFromName:name];
|
|
210
|
+
|
|
211
|
+
if (pack == nil) {
|
|
212
|
+
resolve(nil);
|
|
213
|
+
NSLog(@"getPackStatus - Unknown offline region");
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
resolve([self _makeRegionStatusPayload:name pack:pack]);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
RCT_EXPORT_METHOD(invalidatePack:(NSString *)name
|
|
221
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
222
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
223
|
+
{
|
|
224
|
+
MGLOfflinePack *pack = [self _getPackFromName:name];
|
|
225
|
+
|
|
226
|
+
if (pack == nil) {
|
|
227
|
+
resolve(nil);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
[[MGLOfflineStorage sharedOfflineStorage] invalidatePack:pack withCompletionHandler:^(NSError *error) {
|
|
231
|
+
if (error != nil) {
|
|
232
|
+
reject(@"invalidatePack", error.description, error);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
resolve(nil);
|
|
236
|
+
}];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
RCT_EXPORT_METHOD(deletePack:(NSString *)name
|
|
240
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
241
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
242
|
+
{
|
|
243
|
+
MGLOfflinePack *pack = [self _getPackFromName:name];
|
|
244
|
+
|
|
245
|
+
if (pack == nil) {
|
|
246
|
+
resolve(nil);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (pack.state == MGLOfflinePackStateInvalid) {
|
|
250
|
+
NSError *error = [NSError errorWithDomain:MGLErrorDomain code:1 userInfo:@{NSLocalizedDescriptionKey: NSLocalizedString(@"Pack has already been deleted", nil)}];
|
|
251
|
+
reject(@"deletePack", error.description, error);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
[[MGLOfflineStorage sharedOfflineStorage] removePack:pack withCompletionHandler:^(NSError *error) {
|
|
255
|
+
if (error != nil) {
|
|
256
|
+
reject(@"deletePack", error.description, error);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
resolve(nil);
|
|
260
|
+
}];
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
RCT_EXPORT_METHOD(pausePackDownload:(NSString *)name
|
|
264
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
265
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
266
|
+
{
|
|
267
|
+
MGLOfflinePack *pack = [self _getPackFromName:name];
|
|
268
|
+
|
|
269
|
+
if (pack == nil) {
|
|
270
|
+
reject(@"pausePackDownload", @"Unknown offline region", nil);
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (pack.state == MGLOfflinePackStateInactive || pack.state == MGLOfflinePackStateComplete) {
|
|
275
|
+
resolve(nil);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
[pack suspend];
|
|
280
|
+
resolve(nil);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
RCT_EXPORT_METHOD(resumePackDownload:(NSString *)name
|
|
284
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
285
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
286
|
+
{
|
|
287
|
+
MGLOfflinePack *pack = [self _getPackFromName:name];
|
|
288
|
+
|
|
289
|
+
if (pack == nil) {
|
|
290
|
+
reject(@"resumePack", @"Unknown offline region", nil);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (pack.state == MGLOfflinePackStateActive || pack.state == MGLOfflinePackStateComplete) {
|
|
295
|
+
resolve(nil);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
[pack resume];
|
|
300
|
+
resolve(nil);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
RCT_EXPORT_METHOD(setTileCountLimit:(nonnull NSNumber *)limit)
|
|
304
|
+
{
|
|
305
|
+
[[MGLOfflineStorage sharedOfflineStorage] setMaximumAllowedMapboxTiles:[limit intValue]];
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
RCT_EXPORT_METHOD(setProgressEventThrottle:(nonnull NSNumber *)throttleValue)
|
|
309
|
+
{
|
|
310
|
+
eventThrottle = [throttleValue doubleValue];
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
- (void)offlinePackProgressDidChange:(NSNotification *)notification
|
|
314
|
+
{
|
|
315
|
+
MGLOfflinePack *pack = notification.object;
|
|
316
|
+
|
|
317
|
+
if (pack.state == MGLOfflinePackStateInvalid) {
|
|
318
|
+
return; // Avoid invalid offline pack exception
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if ([self _shouldSendProgressEvent:[self _getCurrentTimestamp] pack:pack]) {
|
|
322
|
+
NSDictionary *metadata = [self _unarchiveMetadata:pack];
|
|
323
|
+
RCTMGLEvent *event = [self _makeProgressEvent:metadata[@"name"] pack:pack];
|
|
324
|
+
[self _sendEvent:RCT_MAPBOX_OFFLINE_CALLBACK_PROGRESS event:event];
|
|
325
|
+
lastPackTimestamp = [self _getCurrentTimestamp];
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
lastPackState = pack.state;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
- (void)offlinePackDidReceiveError:(NSNotification *)notification
|
|
332
|
+
{
|
|
333
|
+
MGLOfflinePack *pack = notification.object;
|
|
334
|
+
if (pack.state == MGLOfflinePackStateInvalid) {
|
|
335
|
+
return; // Avoid invalid offline pack exception
|
|
336
|
+
}
|
|
337
|
+
NSDictionary *metadata = [self _unarchiveMetadata:pack];
|
|
338
|
+
|
|
339
|
+
NSString *name = metadata[@"name"];
|
|
340
|
+
if (name != nil) {
|
|
341
|
+
NSError *error = notification.userInfo[MGLOfflinePackUserInfoKeyError];
|
|
342
|
+
RCTMGLEvent *event = [self _makeErrorEvent:name
|
|
343
|
+
type:RCT_MAPBOX_OFFLINE_ERROR
|
|
344
|
+
message:error.description];
|
|
345
|
+
[self _sendEvent:RCT_MAPBOX_OFFLINE_CALLBACK_ERROR event:event];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
- (void)offlinePackDidReceiveMaxAllowedMapboxTiles:(NSNotification *)notification
|
|
350
|
+
{
|
|
351
|
+
MGLOfflinePack *pack = notification.object;
|
|
352
|
+
NSDictionary *metadata = [self _unarchiveMetadata:pack];
|
|
353
|
+
|
|
354
|
+
NSString *name = metadata[@"name"];
|
|
355
|
+
if (name != nil) {
|
|
356
|
+
RCTMGLEvent *event = [self _makeErrorEvent:name
|
|
357
|
+
type:RCT_MAPBOX_OFFLINE_ERROR
|
|
358
|
+
message:@"Mapbox tile limit exceeded"];
|
|
359
|
+
[self _sendEvent:RCT_MAPBOX_OFFLINE_CALLBACK_ERROR event:event];
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
- (double)_getCurrentTimestamp
|
|
364
|
+
{
|
|
365
|
+
return CACurrentMediaTime() * 1000;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
- (NSData *)_archiveMetadata:(NSString *)metadata
|
|
369
|
+
{
|
|
370
|
+
return [NSKeyedArchiver archivedDataWithRootObject:metadata];
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
- (NSDictionary *)_unarchiveMetadata:(MGLOfflinePack *)pack
|
|
374
|
+
{
|
|
375
|
+
id data = [NSKeyedUnarchiver unarchiveObjectWithData:pack.context];
|
|
376
|
+
// Version v5 store data as NSDictionary while v6 store data as JSON string.
|
|
377
|
+
// User might save offline pack in v5 and then try to read in v6.
|
|
378
|
+
// In v5 are metadata stored nested which need to be handled in JS.
|
|
379
|
+
// Example of how data are stored in v5
|
|
380
|
+
// {
|
|
381
|
+
// name: "New York",
|
|
382
|
+
// metadata: {
|
|
383
|
+
// customMeta: "...",
|
|
384
|
+
// }
|
|
385
|
+
// }
|
|
386
|
+
if ([data isKindOfClass:[NSDictionary class]]) {
|
|
387
|
+
return data;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
if (data == nil) {
|
|
391
|
+
return @{};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
return [NSJSONSerialization JSONObjectWithData:[data dataUsingEncoding:NSUTF8StringEncoding]
|
|
395
|
+
options:NSJSONReadingMutableContainers
|
|
396
|
+
error:nil];
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
- (NSDictionary *)_makeRegionStatusPayload:(NSString *)name pack:(MGLOfflinePack *)pack
|
|
400
|
+
{
|
|
401
|
+
uint64_t completedResources = pack.progress.countOfResourcesCompleted;
|
|
402
|
+
uint64_t expectedResources = pack.progress.countOfResourcesExpected;
|
|
403
|
+
float progressPercentage = (float)completedResources / expectedResources;
|
|
404
|
+
|
|
405
|
+
// prevent NaN errors when expectedResources is 0
|
|
406
|
+
if(expectedResources == 0) {
|
|
407
|
+
progressPercentage = 0;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return @{
|
|
411
|
+
@"state": @(pack.state),
|
|
412
|
+
@"name": name,
|
|
413
|
+
@"percentage": @(ceilf(progressPercentage * 100.0)),
|
|
414
|
+
@"completedResourceCount": @(pack.progress.countOfResourcesCompleted),
|
|
415
|
+
@"completedResourceSize": @(pack.progress.countOfBytesCompleted),
|
|
416
|
+
@"completedTileSize": @(pack.progress.countOfTileBytesCompleted),
|
|
417
|
+
@"completedTileCount": @(pack.progress.countOfTilesCompleted),
|
|
418
|
+
@"requiredResourceCount": @(pack.progress.maximumResourcesExpected)
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
- (RCTMGLEvent *)_makeProgressEvent:(NSString *)name pack:(MGLOfflinePack *)pack
|
|
423
|
+
{
|
|
424
|
+
return [RCTMGLEvent makeEvent:RCT_MAPBOX_OFFLINE_PROGRESS withPayload:[self _makeRegionStatusPayload:name pack:pack]];
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
- (RCTMGLEvent *)_makeErrorEvent:(NSString *)name type:(NSString *)type message:(NSString *)message
|
|
428
|
+
{
|
|
429
|
+
NSDictionary *payload = @{ @"name": name, @"message": message };
|
|
430
|
+
return [RCTMGLEvent makeEvent:type withPayload:payload];
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
- (NSArray<NSDictionary *> *)_convertPacksToJson:(NSArray<MGLOfflinePack *> *)packs
|
|
434
|
+
{
|
|
435
|
+
NSMutableArray<NSDictionary *> *jsonPacks = [NSMutableArray new];
|
|
436
|
+
|
|
437
|
+
if (packs == nil) {
|
|
438
|
+
return jsonPacks;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
for (MGLOfflinePack *pack in packs) {
|
|
442
|
+
[jsonPacks addObject:[self _convertPackToDict:pack]];
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return jsonPacks;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
- (NSDictionary *)_convertPackToDict:(MGLOfflinePack *)pack
|
|
449
|
+
{
|
|
450
|
+
// format bounds
|
|
451
|
+
MGLTilePyramidOfflineRegion *region = (MGLTilePyramidOfflineRegion *)pack.region;
|
|
452
|
+
if (region == nil) {
|
|
453
|
+
return nil;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
NSArray *jsonBounds = @[
|
|
457
|
+
@[@(region.bounds.ne.longitude), @(region.bounds.ne.latitude)],
|
|
458
|
+
@[@(region.bounds.sw.longitude), @(region.bounds.sw.latitude)]
|
|
459
|
+
];
|
|
460
|
+
|
|
461
|
+
// format metadata
|
|
462
|
+
NSDictionary *metadata = [self _unarchiveMetadata:pack];
|
|
463
|
+
NSData *jsonMetadata = [NSJSONSerialization dataWithJSONObject:metadata
|
|
464
|
+
options:0
|
|
465
|
+
error:nil];
|
|
466
|
+
return @{
|
|
467
|
+
@"metadata": [[NSString alloc] initWithData:jsonMetadata encoding:NSUTF8StringEncoding],
|
|
468
|
+
@"bounds": jsonBounds
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
- (MGLOfflinePack *)_getPackFromName:(NSString *)name
|
|
473
|
+
{
|
|
474
|
+
NSArray<MGLOfflinePack *> *packs = [[MGLOfflineStorage sharedOfflineStorage] packs];
|
|
475
|
+
|
|
476
|
+
if (packs == nil) {
|
|
477
|
+
return nil;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
for (MGLOfflinePack *pack in packs) {
|
|
481
|
+
NSDictionary *metadata = [self _unarchiveMetadata:pack];
|
|
482
|
+
|
|
483
|
+
if ([name isEqualToString:metadata[@"name"]]) {
|
|
484
|
+
return pack;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
return nil;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
- (void)_sendEvent:(NSString *)eventName event:(RCTMGLEvent *)event
|
|
492
|
+
{
|
|
493
|
+
if (!hasListeners) {
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
[self sendEventWithName:eventName body:[event toJSON]];
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
- (BOOL)_shouldSendProgressEvent:(double)currentTimestamp pack:(MGLOfflinePack *)currentPack
|
|
500
|
+
{
|
|
501
|
+
if (lastPackState == -1) {
|
|
502
|
+
return YES;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
if (lastPackState != currentPack.state) {
|
|
506
|
+
return YES;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
if (currentTimestamp - lastPackTimestamp > eventThrottle) {
|
|
510
|
+
return YES;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
return NO;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
@end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MGLSnapshotModule.h
|
|
3
|
+
// RCTMGL
|
|
4
|
+
//
|
|
5
|
+
// Created by Nick Italiano on 12/1/17.
|
|
6
|
+
// Copyright © 2017 Mapbox Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <React/RCTBridgeModule.h>
|
|
10
|
+
|
|
11
|
+
@interface MGLSnapshotModule : NSObject<RCTBridgeModule>
|
|
12
|
+
|
|
13
|
+
@end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MGLSnapshotModule.m
|
|
3
|
+
// RCTMGL
|
|
4
|
+
//
|
|
5
|
+
// Created by Nick Italiano on 12/1/17.
|
|
6
|
+
// Copyright © 2017 Mapbox Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "MGLSnapshotModule.h"
|
|
10
|
+
#import "RCTMGLUtils.h"
|
|
11
|
+
#import "RNMBImageUtils.h"
|
|
12
|
+
@import Mapbox;
|
|
13
|
+
|
|
14
|
+
@implementation MGLSnapshotModule
|
|
15
|
+
|
|
16
|
+
RCT_EXPORT_MODULE()
|
|
17
|
+
|
|
18
|
+
+ (BOOL)requiresMainQueueSetup
|
|
19
|
+
{
|
|
20
|
+
return YES;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
RCT_EXPORT_METHOD(takeSnap:(NSDictionary *)jsOptions
|
|
24
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
25
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
26
|
+
{
|
|
27
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
28
|
+
MGLMapSnapshotOptions *options = [self _getOptions:jsOptions];
|
|
29
|
+
__block MGLMapSnapshotter *snapshotter = [[MGLMapSnapshotter alloc] initWithOptions:options];
|
|
30
|
+
|
|
31
|
+
[snapshotter startWithCompletionHandler:^(MGLMapSnapshot * _Nullable snapshot, NSError * _Nullable err) {
|
|
32
|
+
if (err != nil) {
|
|
33
|
+
reject(@"takeSnap", @"Could not create snapshot", err);
|
|
34
|
+
snapshotter = nil;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
NSString *result = nil;
|
|
39
|
+
if ([jsOptions[@"writeToDisk"] boolValue]) {
|
|
40
|
+
result = [RNMBImageUtils createTempFile:snapshot.image];
|
|
41
|
+
} else {
|
|
42
|
+
result = [RNMBImageUtils createBase64:snapshot.image];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
resolve(result);
|
|
46
|
+
snapshotter = nil;
|
|
47
|
+
}];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
- (MGLMapSnapshotOptions *)_getOptions:(NSDictionary *)jsOptions
|
|
52
|
+
{
|
|
53
|
+
MGLMapCamera *camera = [[MGLMapCamera alloc] init];
|
|
54
|
+
|
|
55
|
+
camera.pitch = [jsOptions[@"pitch"] doubleValue];
|
|
56
|
+
camera.heading = [jsOptions[@"heading"] doubleValue];
|
|
57
|
+
|
|
58
|
+
if (jsOptions[@"centerCoordinate"] != nil) {
|
|
59
|
+
camera.centerCoordinate = [RCTMGLUtils fromFeature:jsOptions[@"centerCoordinate"]];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
NSNumber *width = jsOptions[@"width"];
|
|
63
|
+
NSNumber *height = jsOptions[@"height"];
|
|
64
|
+
CGSize size = CGSizeMake([width doubleValue], [height doubleValue]);
|
|
65
|
+
|
|
66
|
+
MGLMapSnapshotOptions *options = [[MGLMapSnapshotOptions alloc] initWithStyleURL:[NSURL URLWithString:jsOptions[@"styleURL"]]
|
|
67
|
+
camera:camera
|
|
68
|
+
size:size];
|
|
69
|
+
if (jsOptions[@"zoomLevel"] != nil) {
|
|
70
|
+
options.zoomLevel = [jsOptions[@"zoomLevel"] doubleValue];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (jsOptions[@"bounds"] != nil) {
|
|
74
|
+
options.coordinateBounds = [RCTMGLUtils fromFeatureCollection:jsOptions[@"bounds"]];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return options;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#import <QuartzCore/QuartzCore.h>
|
|
2
|
+
#import "MGLUserLocationHeadingIndicator.h"
|
|
3
|
+
@import Mapbox;
|
|
4
|
+
|
|
5
|
+
@interface MGLUserLocationHeadingArrowLayer : CAShapeLayer <MGLUserLocationHeadingIndicator>
|
|
6
|
+
|
|
7
|
+
- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView;
|
|
8
|
+
- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy;
|
|
9
|
+
- (void)updateTintColor:(CGColorRef)color;
|
|
10
|
+
|
|
11
|
+
@end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#import "MGLUserLocationHeadingArrowLayer.h"
|
|
2
|
+
#import "MGLFaux3DUserLocationAnnotationView.h"
|
|
3
|
+
|
|
4
|
+
const CGFloat MGLUserLocationHeadingArrowSize = 6;
|
|
5
|
+
|
|
6
|
+
@implementation MGLUserLocationHeadingArrowLayer
|
|
7
|
+
|
|
8
|
+
- (instancetype)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView
|
|
9
|
+
{
|
|
10
|
+
CGFloat size = userLocationView.bounds.size.width + MGLUserLocationHeadingArrowSize;
|
|
11
|
+
|
|
12
|
+
self = [super init];
|
|
13
|
+
self.bounds = CGRectMake(0, 0, size, size);
|
|
14
|
+
self.position = CGPointMake(CGRectGetMidX(userLocationView.bounds), CGRectGetMidY(userLocationView.bounds));
|
|
15
|
+
self.path = [self arrowPath];
|
|
16
|
+
self.fillColor = userLocationView.tintColor.CGColor;
|
|
17
|
+
self.shouldRasterize = YES;
|
|
18
|
+
self.rasterizationScale = UIScreen.mainScreen.scale;
|
|
19
|
+
self.drawsAsynchronously = YES;
|
|
20
|
+
|
|
21
|
+
self.strokeColor = UIColor.whiteColor.CGColor;
|
|
22
|
+
self.lineWidth = 1.0;
|
|
23
|
+
self.lineJoin = kCALineJoinRound;
|
|
24
|
+
|
|
25
|
+
return self;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy
|
|
29
|
+
{
|
|
30
|
+
// unimplemented
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
- (void)updateTintColor:(CGColorRef)color
|
|
34
|
+
{
|
|
35
|
+
self.fillColor = color;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
- (CGPathRef)arrowPath {
|
|
39
|
+
CGFloat center = roundf(CGRectGetMidX(self.bounds));
|
|
40
|
+
CGFloat size = MGLUserLocationHeadingArrowSize;
|
|
41
|
+
|
|
42
|
+
CGPoint top = CGPointMake(center, 0);
|
|
43
|
+
CGPoint left = CGPointMake(center - size, size);
|
|
44
|
+
CGPoint right = CGPointMake(center + size, size);
|
|
45
|
+
CGPoint middle = CGPointMake(center, size / M_PI);
|
|
46
|
+
|
|
47
|
+
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
|
|
48
|
+
[bezierPath moveToPoint:top];
|
|
49
|
+
[bezierPath addLineToPoint:left];
|
|
50
|
+
[bezierPath addQuadCurveToPoint:right controlPoint:middle];
|
|
51
|
+
[bezierPath addLineToPoint:top];
|
|
52
|
+
[bezierPath closePath];
|
|
53
|
+
|
|
54
|
+
return bezierPath.CGPath;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#import <QuartzCore/QuartzCore.h>
|
|
2
|
+
#import "MGLUserLocationHeadingIndicator.h"
|
|
3
|
+
@import Mapbox;
|
|
4
|
+
|
|
5
|
+
@interface MGLUserLocationHeadingBeamLayer : CALayer <MGLUserLocationHeadingIndicator>
|
|
6
|
+
|
|
7
|
+
- (MGLUserLocationHeadingBeamLayer *)initWithUserLocationAnnotationView:(MGLUserLocationAnnotationView *)userLocationView;
|
|
8
|
+
- (void)updateHeadingAccuracy:(CLLocationDirection)accuracy;
|
|
9
|
+
- (void)updateTintColor:(CGColorRef)color;
|
|
10
|
+
|
|
11
|
+
@end
|