@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,597 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.modules;
|
|
2
|
+
|
|
3
|
+
import android.os.Handler;
|
|
4
|
+
import android.os.Looper;
|
|
5
|
+
import android.util.Log;
|
|
6
|
+
|
|
7
|
+
import com.facebook.react.bridge.Arguments;
|
|
8
|
+
import com.facebook.react.bridge.Promise;
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
10
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
11
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
12
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
13
|
+
import com.facebook.react.bridge.WritableArray;
|
|
14
|
+
import com.facebook.react.bridge.WritableMap;
|
|
15
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
16
|
+
import com.facebook.react.module.annotations.ReactModule;
|
|
17
|
+
import com.facebook.react.modules.core.RCTNativeAppEventEmitter;
|
|
18
|
+
import com.mapbox.geojson.FeatureCollection;
|
|
19
|
+
// import com.mapbox.mapboxsdk.constants.Style;
|
|
20
|
+
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
|
|
21
|
+
import com.mapbox.mapboxsdk.offline.OfflineManager;
|
|
22
|
+
import com.mapbox.mapboxsdk.offline.OfflineRegion;
|
|
23
|
+
import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition;
|
|
24
|
+
import com.mapbox.mapboxsdk.offline.OfflineRegionError;
|
|
25
|
+
import com.mapbox.mapboxsdk.offline.OfflineRegionStatus;
|
|
26
|
+
import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition;
|
|
27
|
+
import com.mapbox.mapboxsdk.storage.FileSource;
|
|
28
|
+
import com.mapbox.rctmgl.events.IEvent;
|
|
29
|
+
import com.mapbox.rctmgl.events.OfflineEvent;
|
|
30
|
+
import com.mapbox.rctmgl.events.constants.EventTypes;
|
|
31
|
+
import com.mapbox.rctmgl.utils.ConvertUtils;
|
|
32
|
+
import com.mapbox.rctmgl.utils.GeoJSONUtils;
|
|
33
|
+
import com.mapbox.mapboxsdk.maps.Style;
|
|
34
|
+
|
|
35
|
+
import org.json.JSONException;
|
|
36
|
+
import org.json.JSONObject;
|
|
37
|
+
|
|
38
|
+
import java.io.File;
|
|
39
|
+
import java.io.UnsupportedEncodingException;
|
|
40
|
+
import java.util.Locale;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Created by nickitaliano on 10/24/17.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
@ReactModule(name = RCTMGLOfflineModule.REACT_CLASS)
|
|
47
|
+
public class RCTMGLOfflineModule extends ReactContextBaseJavaModule {
|
|
48
|
+
public static final String REACT_CLASS = "RCTMGLOfflineModule";
|
|
49
|
+
|
|
50
|
+
public static final int INACTIVE_REGION_DOWNLOAD_STATE = OfflineRegion.STATE_INACTIVE;
|
|
51
|
+
public static final int ACTIVE_REGION_DOWNLOAD_STATE = OfflineRegion.STATE_ACTIVE;
|
|
52
|
+
public static final int COMPLETE_REGION_DOWNLOAD_STATE = 2;
|
|
53
|
+
|
|
54
|
+
public static final String OFFLINE_ERROR = "MapboxOfflineRegionError";
|
|
55
|
+
public static final String OFFLINE_PROGRESS = "MapboxOfflineRegionProgress";
|
|
56
|
+
|
|
57
|
+
public static final String DEFAULT_STYLE_URL = "https://demotiles.maplibre.org/style.json";
|
|
58
|
+
public static final Double DEFAULT_MIN_ZOOM_LEVEL = 10.0;
|
|
59
|
+
public static final Double DEFAULT_MAX_ZOOM_LEVEL = 20.0;
|
|
60
|
+
|
|
61
|
+
private ReactApplicationContext mReactContext;
|
|
62
|
+
private Double mProgressEventThrottle = 300.0;
|
|
63
|
+
|
|
64
|
+
public RCTMGLOfflineModule(ReactApplicationContext reactApplicationContext) {
|
|
65
|
+
super(reactApplicationContext);
|
|
66
|
+
mReactContext = reactApplicationContext;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@Override
|
|
70
|
+
public String getName () {
|
|
71
|
+
return REACT_CLASS;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@ReactMethod
|
|
75
|
+
public void addListener(String eventName) {
|
|
76
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@ReactMethod
|
|
80
|
+
public void removeListeners(Integer count) {
|
|
81
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@ReactMethod
|
|
85
|
+
public void createPack(ReadableMap options, final Promise promise) {
|
|
86
|
+
final String name = ConvertUtils.getString("name", options, "");
|
|
87
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
88
|
+
LatLngBounds latLngBounds = getBoundsFromOptions(options);
|
|
89
|
+
|
|
90
|
+
OfflineRegionDefinition definition = makeDefinition(latLngBounds, options);
|
|
91
|
+
byte[] metadataBytes = getMetadataBytes(ConvertUtils.getString("metadata", options, ""));
|
|
92
|
+
|
|
93
|
+
OfflineManager.CreateOfflineRegionCallback callback = new OfflineManager.CreateOfflineRegionCallback() {
|
|
94
|
+
@Override
|
|
95
|
+
public void onCreate(OfflineRegion offlineRegion) {
|
|
96
|
+
promise.resolve(fromOfflineRegion(offlineRegion));
|
|
97
|
+
setOfflineRegionObserver(name, offlineRegion);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@Override
|
|
101
|
+
public void onError(String error) {
|
|
102
|
+
sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_ERROR, error));
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
offlineManager.createOfflineRegion(definition, metadataBytes, callback);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@ReactMethod
|
|
110
|
+
public void getPacks(final Promise promise) {
|
|
111
|
+
activateFileSource();
|
|
112
|
+
|
|
113
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
114
|
+
|
|
115
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
116
|
+
@Override
|
|
117
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
118
|
+
WritableArray payload = Arguments.createArray();
|
|
119
|
+
|
|
120
|
+
for (OfflineRegion region : offlineRegions) {
|
|
121
|
+
payload.pushMap(fromOfflineRegion(region));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
promise.resolve(payload);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@Override
|
|
128
|
+
public void onError(String error) {
|
|
129
|
+
promise.reject("getRegions", error);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@ReactMethod
|
|
135
|
+
public void invalidateAmbientCache(final Promise promise) {
|
|
136
|
+
activateFileSource();
|
|
137
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
138
|
+
offlineManager.invalidateAmbientCache(new OfflineManager.FileSourceCallback() {
|
|
139
|
+
@Override
|
|
140
|
+
public void onSuccess() {
|
|
141
|
+
promise.resolve(null);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
@Override
|
|
145
|
+
public void onError(String error) {
|
|
146
|
+
promise.reject("invalidateAmbientCache", error);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
@ReactMethod
|
|
152
|
+
public void clearAmbientCache(final Promise promise) {
|
|
153
|
+
activateFileSource();
|
|
154
|
+
|
|
155
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
156
|
+
|
|
157
|
+
offlineManager.clearAmbientCache(new OfflineManager.FileSourceCallback() {
|
|
158
|
+
@Override
|
|
159
|
+
public void onSuccess() {
|
|
160
|
+
promise.resolve(null);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@Override
|
|
164
|
+
public void onError(String error) {
|
|
165
|
+
promise.reject("clearAmbientCache", error);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@ReactMethod
|
|
171
|
+
public void setMaximumAmbientCacheSize(int size, final Promise promise) {
|
|
172
|
+
activateFileSource();
|
|
173
|
+
|
|
174
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
175
|
+
|
|
176
|
+
offlineManager.setMaximumAmbientCacheSize(size, new OfflineManager.FileSourceCallback() {
|
|
177
|
+
@Override
|
|
178
|
+
public void onSuccess() {
|
|
179
|
+
promise.resolve(null);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@Override
|
|
183
|
+
public void onError(String error) {
|
|
184
|
+
promise.reject("setMaximumAmbientCacheSize", error);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
@ReactMethod
|
|
191
|
+
public void resetDatabase(final Promise promise) {
|
|
192
|
+
activateFileSource();
|
|
193
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
194
|
+
offlineManager.resetDatabase(new OfflineManager.FileSourceCallback() {
|
|
195
|
+
@Override
|
|
196
|
+
public void onSuccess() {
|
|
197
|
+
promise.resolve(null);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@Override
|
|
201
|
+
public void onError(String error) {
|
|
202
|
+
promise.reject("resetDatabase", error);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
@ReactMethod
|
|
208
|
+
public void getPackStatus(final String name, final Promise promise) {
|
|
209
|
+
activateFileSource();
|
|
210
|
+
|
|
211
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
212
|
+
|
|
213
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
214
|
+
@Override
|
|
215
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
216
|
+
OfflineRegion region = getRegionByName(name, offlineRegions);
|
|
217
|
+
|
|
218
|
+
if (region == null) {
|
|
219
|
+
promise.resolve(null);
|
|
220
|
+
Log.w(REACT_CLASS, "getPackStatus - Unknown offline region");
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
region.getStatus(new OfflineRegion.OfflineRegionStatusCallback() {
|
|
225
|
+
@Override
|
|
226
|
+
public void onStatus(OfflineRegionStatus status) {
|
|
227
|
+
promise.resolve(makeRegionStatus(name, status));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@Override
|
|
231
|
+
public void onError(String error) {
|
|
232
|
+
promise.reject("getPackStatus", error);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
@Override
|
|
238
|
+
public void onError(String error) {
|
|
239
|
+
promise.reject("getPackStatus", error);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@ReactMethod
|
|
245
|
+
public void setPackObserver(final String name, final Promise promise) {
|
|
246
|
+
activateFileSource();
|
|
247
|
+
|
|
248
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
249
|
+
|
|
250
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
251
|
+
@Override
|
|
252
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
253
|
+
OfflineRegion region = getRegionByName(name, offlineRegions);
|
|
254
|
+
boolean hasRegion = region != null;
|
|
255
|
+
|
|
256
|
+
if (hasRegion) {
|
|
257
|
+
setOfflineRegionObserver(name, region);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
promise.resolve(hasRegion);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@Override
|
|
264
|
+
public void onError(String error) {
|
|
265
|
+
promise.reject("setPackObserver", error);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
@ReactMethod
|
|
271
|
+
public void invalidatePack(final String name, final Promise promise) {
|
|
272
|
+
activateFileSource();
|
|
273
|
+
|
|
274
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
275
|
+
|
|
276
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
277
|
+
@Override
|
|
278
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
279
|
+
OfflineRegion region = getRegionByName(name, offlineRegions);
|
|
280
|
+
|
|
281
|
+
if (region == null) {
|
|
282
|
+
promise.resolve(null);
|
|
283
|
+
Log.w(REACT_CLASS, "invalidateRegion - Unknown offline region");
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
region.invalidate(new OfflineRegion.OfflineRegionInvalidateCallback() {
|
|
288
|
+
@Override
|
|
289
|
+
public void onInvalidate() {
|
|
290
|
+
promise.resolve(null);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
@Override
|
|
294
|
+
public void onError(String error) {
|
|
295
|
+
promise.reject("invalidateRegion", error);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@Override
|
|
301
|
+
public void onError(String error) {
|
|
302
|
+
promise.reject("invalidateRegion", error);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
@ReactMethod
|
|
308
|
+
public void deletePack(final String name, final Promise promise) {
|
|
309
|
+
activateFileSource();
|
|
310
|
+
|
|
311
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
312
|
+
|
|
313
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
314
|
+
@Override
|
|
315
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
316
|
+
OfflineRegion region = getRegionByName(name, offlineRegions);
|
|
317
|
+
|
|
318
|
+
if (region == null) {
|
|
319
|
+
promise.resolve(null);
|
|
320
|
+
Log.w(REACT_CLASS, "deleteRegion - Unknown offline region");
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// stop download before deleting (https://github.com/mapbox/mapbox-gl-native/issues/12382#issuecomment-431055103)
|
|
325
|
+
region.setDownloadState(INACTIVE_REGION_DOWNLOAD_STATE);
|
|
326
|
+
|
|
327
|
+
region.delete(new OfflineRegion.OfflineRegionDeleteCallback() {
|
|
328
|
+
@Override
|
|
329
|
+
public void onDelete() {
|
|
330
|
+
promise.resolve(null);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@Override
|
|
334
|
+
public void onError(String error) {
|
|
335
|
+
promise.reject("deleteRegion", error);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@Override
|
|
341
|
+
public void onError(String error) {
|
|
342
|
+
promise.reject("deleteRegion", error);
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
@ReactMethod
|
|
348
|
+
public void pausePackDownload(final String name, final Promise promise) {
|
|
349
|
+
activateFileSource();
|
|
350
|
+
|
|
351
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
352
|
+
|
|
353
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
354
|
+
@Override
|
|
355
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
356
|
+
final OfflineRegion offlineRegion = getRegionByName(name, offlineRegions);
|
|
357
|
+
|
|
358
|
+
if (offlineRegion == null) {
|
|
359
|
+
promise.reject("pauseRegionDownload", "Unknown offline region");
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
|
364
|
+
@Override
|
|
365
|
+
public void run() {
|
|
366
|
+
offlineRegion.setDownloadState(INACTIVE_REGION_DOWNLOAD_STATE);
|
|
367
|
+
promise.resolve(null);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
@Override
|
|
373
|
+
public void onError(String error) {
|
|
374
|
+
promise.reject("pauseRegionDownload", error);
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
@ReactMethod
|
|
380
|
+
public void resumePackDownload(final String name, final Promise promise) {
|
|
381
|
+
activateFileSource();
|
|
382
|
+
|
|
383
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
384
|
+
|
|
385
|
+
offlineManager.listOfflineRegions(new OfflineManager.ListOfflineRegionsCallback() {
|
|
386
|
+
@Override
|
|
387
|
+
public void onList(OfflineRegion[] offlineRegions) {
|
|
388
|
+
OfflineRegion offlineRegion = getRegionByName(name, offlineRegions);
|
|
389
|
+
|
|
390
|
+
if (offlineRegion == null) {
|
|
391
|
+
promise.reject("resumeRegionDownload", "Unknown offline region");
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
offlineRegion.setDownloadState(ACTIVE_REGION_DOWNLOAD_STATE);
|
|
396
|
+
promise.resolve(null);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
@Override
|
|
400
|
+
public void onError(String error) {
|
|
401
|
+
promise.reject("resumeRegionDownload", error);
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
@ReactMethod
|
|
407
|
+
public void mergeOfflineRegions(final String path, final Promise promise) {
|
|
408
|
+
activateFileSource();
|
|
409
|
+
|
|
410
|
+
final OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
411
|
+
|
|
412
|
+
offlineManager.mergeOfflineRegions(path, new OfflineManager.MergeOfflineRegionsCallback() {
|
|
413
|
+
@Override
|
|
414
|
+
public void onMerge(OfflineRegion[] offlineRegions) {
|
|
415
|
+
promise.resolve(null);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
@Override
|
|
419
|
+
public void onError(String error) {
|
|
420
|
+
promise.reject("mergeOfflineRegions", error);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
@ReactMethod
|
|
426
|
+
public void setTileCountLimit(int tileCountLimit) {
|
|
427
|
+
OfflineManager offlineManager = OfflineManager.getInstance(mReactContext);
|
|
428
|
+
offlineManager.setOfflineMapboxTileCountLimit(tileCountLimit);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
@ReactMethod
|
|
432
|
+
public void setProgressEventThrottle(double eventThrottle) {
|
|
433
|
+
mProgressEventThrottle = eventThrottle;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
private OfflineRegionDefinition makeDefinition(LatLngBounds latLngBounds, ReadableMap options) {
|
|
437
|
+
return new OfflineTilePyramidRegionDefinition(
|
|
438
|
+
ConvertUtils.getString("styleURL", options, DEFAULT_STYLE_URL),
|
|
439
|
+
latLngBounds,
|
|
440
|
+
ConvertUtils.getDouble("minZoom", options, DEFAULT_MIN_ZOOM_LEVEL),
|
|
441
|
+
ConvertUtils.getDouble("maxZoom", options, DEFAULT_MAX_ZOOM_LEVEL),
|
|
442
|
+
mReactContext.getResources().getDisplayMetrics().density);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
private byte[] getMetadataBytes(String metadata) {
|
|
446
|
+
byte[] metadataBytes = null;
|
|
447
|
+
|
|
448
|
+
if (metadata == null || metadata.isEmpty()) {
|
|
449
|
+
return metadataBytes;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
try {
|
|
453
|
+
metadataBytes = metadata.getBytes("utf-8");
|
|
454
|
+
} catch (UnsupportedEncodingException e) {
|
|
455
|
+
Log.w(REACT_CLASS, e.getLocalizedMessage());
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
return metadataBytes;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
private void setOfflineRegionObserver(final String name, final OfflineRegion region) {
|
|
462
|
+
region.setObserver(new OfflineRegion.OfflineRegionObserver() {
|
|
463
|
+
OfflineRegionStatus prevStatus = null;
|
|
464
|
+
long timestamp = System.currentTimeMillis();
|
|
465
|
+
|
|
466
|
+
@Override
|
|
467
|
+
public void onStatusChanged(OfflineRegionStatus status) {
|
|
468
|
+
if (shouldSendUpdate(System.currentTimeMillis(), status)) {
|
|
469
|
+
sendEvent(makeStatusEvent(name, status));
|
|
470
|
+
timestamp = System.currentTimeMillis();
|
|
471
|
+
}
|
|
472
|
+
prevStatus = status;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
@Override
|
|
476
|
+
public void onError(OfflineRegionError error) {
|
|
477
|
+
sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_ERROR, error.getMessage()));
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
@Override
|
|
481
|
+
public void mapboxTileCountLimitExceeded(long limit) {
|
|
482
|
+
String message = String.format(Locale.getDefault(), "Mapbox tile limit exceeded %d", limit);
|
|
483
|
+
sendEvent(makeErrorEvent(name, EventTypes.OFFLINE_TILE_LIMIT, message));
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
private boolean shouldSendUpdate (long currentTimestamp, OfflineRegionStatus curStatus) {
|
|
487
|
+
if (prevStatus == null) {
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
if (prevStatus.getDownloadState() != curStatus.getDownloadState()) {
|
|
492
|
+
return true;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
if (currentTimestamp - timestamp > mProgressEventThrottle) {
|
|
496
|
+
return true;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
region.setDownloadState(ACTIVE_REGION_DOWNLOAD_STATE);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
private void sendEvent(IEvent event) {
|
|
507
|
+
RCTNativeAppEventEmitter eventEmitter = getEventEmitter();
|
|
508
|
+
eventEmitter.emit(event.getKey(), event.toJSON());
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
private RCTNativeAppEventEmitter getEventEmitter() {
|
|
512
|
+
return mReactContext.getJSModule(RCTNativeAppEventEmitter.class);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
private OfflineEvent makeErrorEvent(String regionName, String errorType, String message) {
|
|
516
|
+
WritableMap payload = new WritableNativeMap();
|
|
517
|
+
payload.putString("message", message);
|
|
518
|
+
payload.putString("name", regionName);
|
|
519
|
+
return new OfflineEvent(OFFLINE_ERROR, errorType, payload);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
private OfflineEvent makeStatusEvent(String regionName, OfflineRegionStatus status) {
|
|
523
|
+
return new OfflineEvent(OFFLINE_PROGRESS, EventTypes.OFFLINE_STATUS, makeRegionStatus(regionName, status));
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
private WritableMap makeRegionStatus(String regionName, OfflineRegionStatus status) {
|
|
527
|
+
WritableMap map = Arguments.createMap();
|
|
528
|
+
|
|
529
|
+
int downloadState = status.getDownloadState();
|
|
530
|
+
double percentage = 0.0;
|
|
531
|
+
|
|
532
|
+
if (status.isComplete()) {
|
|
533
|
+
downloadState = COMPLETE_REGION_DOWNLOAD_STATE;
|
|
534
|
+
percentage = 100.0;
|
|
535
|
+
} else {
|
|
536
|
+
percentage = status.getRequiredResourceCount() >= 0
|
|
537
|
+
? (100.0 * status.getCompletedResourceCount() / status.getRequiredResourceCount()) :
|
|
538
|
+
0.0;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
map.putString("name", regionName);
|
|
542
|
+
map.putInt("state", downloadState);
|
|
543
|
+
map.putDouble("percentage", percentage);
|
|
544
|
+
map.putInt("completedResourceCount", (int)status.getCompletedResourceCount());
|
|
545
|
+
map.putInt("completedResourceSize", (int)status.getCompletedResourceSize());
|
|
546
|
+
map.putInt("completedTileSize", (int)status.getCompletedTileSize());
|
|
547
|
+
map.putInt("completedTileCount", (int)status.getCompletedTileCount());
|
|
548
|
+
map.putInt("requiredResourceCount", (int)status.getRequiredResourceCount());
|
|
549
|
+
|
|
550
|
+
return map;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
private LatLngBounds getBoundsFromOptions(ReadableMap options) {
|
|
554
|
+
String featureCollectionJSONStr = ConvertUtils.getString("bounds", options, "{}");
|
|
555
|
+
FeatureCollection featureCollection = FeatureCollection.fromJson(featureCollectionJSONStr);
|
|
556
|
+
return GeoJSONUtils.toLatLngBounds(featureCollection);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
private WritableMap fromOfflineRegion(OfflineRegion region) {
|
|
560
|
+
WritableMap map = Arguments.createMap();
|
|
561
|
+
map.putArray("bounds", GeoJSONUtils.fromLatLngBounds(region.getDefinition().getBounds()));
|
|
562
|
+
map.putString("metadata", new String(region.getMetadata()));
|
|
563
|
+
return map;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
private OfflineRegion getRegionByName(String name, OfflineRegion[] offlineRegions) {
|
|
567
|
+
if (name == null || name.isEmpty()) {
|
|
568
|
+
return null;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
for (OfflineRegion region : offlineRegions) {
|
|
572
|
+
boolean isRegion = false;
|
|
573
|
+
|
|
574
|
+
try {
|
|
575
|
+
byte[] byteMetadata = region.getMetadata();
|
|
576
|
+
|
|
577
|
+
if (byteMetadata != null) {
|
|
578
|
+
JSONObject metadata = new JSONObject(new String(byteMetadata));
|
|
579
|
+
isRegion = name.equals(metadata.getString("name"));
|
|
580
|
+
}
|
|
581
|
+
} catch (JSONException e) {
|
|
582
|
+
Log.w(REACT_CLASS, e.getLocalizedMessage());
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
if (isRegion) {
|
|
586
|
+
return region;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
return null;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
private void activateFileSource() {
|
|
594
|
+
FileSource fileSource = FileSource.getInstance(mReactContext);
|
|
595
|
+
fileSource.activate();
|
|
596
|
+
}
|
|
597
|
+
}
|