@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,234 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.images;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
import android.graphics.Bitmap;
|
|
5
|
+
import android.graphics.drawable.BitmapDrawable;
|
|
6
|
+
|
|
7
|
+
import androidx.annotation.NonNull;
|
|
8
|
+
import androidx.annotation.Nullable;
|
|
9
|
+
import androidx.core.content.res.ResourcesCompat;
|
|
10
|
+
|
|
11
|
+
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
|
12
|
+
import com.mapbox.mapboxsdk.maps.Style;
|
|
13
|
+
import com.mapbox.mapboxsdk.utils.BitmapUtils;
|
|
14
|
+
import com.mapbox.rctmgl.R;
|
|
15
|
+
import com.mapbox.rctmgl.components.AbstractMapFeature;
|
|
16
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
|
|
17
|
+
import com.mapbox.rctmgl.events.ImageMissingEvent;
|
|
18
|
+
import com.mapbox.rctmgl.utils.DownloadMapImageTask;
|
|
19
|
+
import com.mapbox.rctmgl.utils.ImageEntry;
|
|
20
|
+
|
|
21
|
+
import java.util.AbstractMap;
|
|
22
|
+
import java.util.ArrayList;
|
|
23
|
+
import java.util.Collections;
|
|
24
|
+
import java.util.HashMap;
|
|
25
|
+
import java.util.HashSet;
|
|
26
|
+
import java.util.List;
|
|
27
|
+
import java.util.Map;
|
|
28
|
+
import java.util.Set;
|
|
29
|
+
import java.util.stream.Collectors;
|
|
30
|
+
|
|
31
|
+
public class RCTMGLImages extends AbstractMapFeature {
|
|
32
|
+
private static Bitmap mImagePlaceholder;
|
|
33
|
+
Set<String> mCurrentImages;
|
|
34
|
+
private Map<String, ImageEntry> mImages;
|
|
35
|
+
private Map<String, BitmapDrawable> mNativeImages;
|
|
36
|
+
private RCTMGLImagesManager mManager;
|
|
37
|
+
private boolean mSendMissingImageEvents = false;
|
|
38
|
+
private MapboxMap mMap;
|
|
39
|
+
|
|
40
|
+
protected String mID;
|
|
41
|
+
|
|
42
|
+
public String getID() {
|
|
43
|
+
return mID;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public void setID(String id) {
|
|
47
|
+
mID = id;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public RCTMGLImages(Context context, RCTMGLImagesManager manager) {
|
|
51
|
+
super(context);
|
|
52
|
+
mManager = manager;
|
|
53
|
+
mCurrentImages = new HashSet<>();
|
|
54
|
+
mImages = new HashMap<>();
|
|
55
|
+
mNativeImages = new HashMap();
|
|
56
|
+
if (mImagePlaceholder == null) {
|
|
57
|
+
mImagePlaceholder = BitmapUtils.getBitmapFromDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.empty_drawable, null));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public void setImages(List<Map.Entry<String, ImageEntry>> images) {
|
|
62
|
+
Map<String, ImageEntry> newImages = new HashMap<>();
|
|
63
|
+
for (Map.Entry<String, ImageEntry> entry : images) {
|
|
64
|
+
String key = entry.getKey();
|
|
65
|
+
ImageEntry value = entry.getValue();
|
|
66
|
+
ImageEntry oldValue = mImages.put(key, value);
|
|
67
|
+
if (oldValue == null) {
|
|
68
|
+
newImages.put(key, value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (mMap != null && mMap.getStyle() != null) {
|
|
72
|
+
addImagesToStyle(newImages, mMap);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public void setNativeImages(List<Map.Entry<String, BitmapDrawable>> nativeImages) {
|
|
77
|
+
Map<String, BitmapDrawable> newImages = new HashMap<>();
|
|
78
|
+
for (Map.Entry<String, BitmapDrawable> entry : nativeImages) {
|
|
79
|
+
String key = entry.getKey();
|
|
80
|
+
BitmapDrawable value = entry.getValue();
|
|
81
|
+
BitmapDrawable oldValue = mNativeImages.put(key, value);
|
|
82
|
+
if (oldValue == null) {
|
|
83
|
+
newImages.put(key, value);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (mMap != null && mMap.getStyle() != null) {
|
|
87
|
+
addNativeImagesToStyle(newImages, mMap);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public void setHasOnImageMissing(boolean value) {
|
|
92
|
+
mSendMissingImageEvents = value;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@Override
|
|
96
|
+
public void removeFromMap(RCTMGLMapView mapView) {
|
|
97
|
+
removeImages(mapView);
|
|
98
|
+
mMap = null;
|
|
99
|
+
mNativeImages = new HashMap<>();
|
|
100
|
+
mImages = new HashMap<>();
|
|
101
|
+
mCurrentImages = new HashSet<>();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private void removeImages(RCTMGLMapView mapView) {
|
|
105
|
+
mapView.getStyle(new Style.OnStyleLoaded() {
|
|
106
|
+
@Override
|
|
107
|
+
public void onStyleLoaded(@NonNull Style style) {
|
|
108
|
+
if (hasImages()) {
|
|
109
|
+
for (Map.Entry<String, ImageEntry> image : mImages.entrySet()) {
|
|
110
|
+
style.removeImage(image.getKey());
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (hasNativeImages()) {
|
|
115
|
+
for (Map.Entry<String, BitmapDrawable> image : mNativeImages.entrySet()) {
|
|
116
|
+
style.removeImage(image.getKey());
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
private boolean hasImages() {
|
|
123
|
+
return mImages != null && mImages.size() > 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
private boolean hasNativeImages() {
|
|
127
|
+
return mNativeImages != null && mNativeImages.size() > 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
static <K, V> List<Map.Entry<K,V>> entry(K k, V v) {
|
|
132
|
+
return Collections.singletonList((Map.Entry<K,V>)new AbstractMap.SimpleEntry<K, V>(k, v));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
public boolean addMissingImageToStyle(@NonNull String id, @NonNull MapboxMap map) {
|
|
136
|
+
if (mNativeImages != null) {
|
|
137
|
+
BitmapDrawable drawable = mNativeImages.get(id);
|
|
138
|
+
if (drawable != null) {
|
|
139
|
+
addNativeImages(RCTMGLImages.entry(id, drawable), map);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (mImages != null) {
|
|
144
|
+
ImageEntry entry = mImages.get(id);
|
|
145
|
+
if (entry != null) {
|
|
146
|
+
addRemoteImages(RCTMGLImages.entry(id, entry), map);
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
public void addImagesToStyle(Map<String, ImageEntry> images, @NonNull MapboxMap map) {
|
|
155
|
+
if (images != null) {
|
|
156
|
+
addRemoteImages(new ArrayList<>(images.entrySet()), map);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
public void addNativeImagesToStyle(Map<String, BitmapDrawable> images, @NonNull MapboxMap map) {
|
|
161
|
+
if (images != null) {
|
|
162
|
+
addNativeImages(new ArrayList<>(images.entrySet()), map);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
public void sendImageMissingEvent(@NonNull String id, @NonNull MapboxMap map) {
|
|
167
|
+
if (mSendMissingImageEvents) {
|
|
168
|
+
mManager.handleEvent(ImageMissingEvent.makeImageMissingEvent(this, id));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
private boolean hasImage(String imageId, @NonNull MapboxMap map) {
|
|
173
|
+
Style style = map.getStyle();
|
|
174
|
+
return style != null && style.getImage(imageId) != null;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
@Override
|
|
178
|
+
public void addToMap(final RCTMGLMapView mapView) {
|
|
179
|
+
// Wait for style before adding the source to the map
|
|
180
|
+
// only then we can pre-load required images / placeholders into the style
|
|
181
|
+
// before we add the ShapeSource to the map
|
|
182
|
+
mapView.getStyle(new Style.OnStyleLoaded() {
|
|
183
|
+
@Override
|
|
184
|
+
public void onStyleLoaded(@NonNull Style style) {
|
|
185
|
+
MapboxMap map = mapView.getMapboxMap();
|
|
186
|
+
mMap = map;
|
|
187
|
+
addNativeImagesToStyle(mNativeImages, map);
|
|
188
|
+
addImagesToStyle(mImages, map);
|
|
189
|
+
// super.addToMap(mapView);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
private void addNativeImages(@Nullable List<Map.Entry<String, BitmapDrawable>> imageEntries, @NonNull MapboxMap map) {
|
|
195
|
+
Style style = map.getStyle();
|
|
196
|
+
if (style == null || imageEntries == null) return;
|
|
197
|
+
|
|
198
|
+
for (Map.Entry<String, BitmapDrawable> imageEntry : imageEntries) {
|
|
199
|
+
if (!hasImage(imageEntry.getKey(), map)) {
|
|
200
|
+
style.addImage(imageEntry.getKey(), imageEntry.getValue());
|
|
201
|
+
mCurrentImages.add(imageEntry.getKey());
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private void addRemoteImages(@Nullable List<Map.Entry<String, ImageEntry>> imageEntries, @NonNull MapboxMap map) {
|
|
207
|
+
Style style = map.getStyle();
|
|
208
|
+
if (style == null || imageEntries == null) return;
|
|
209
|
+
|
|
210
|
+
List<Map.Entry<String, ImageEntry>> missingImages = new ArrayList<>();
|
|
211
|
+
|
|
212
|
+
// Add image placeholder for images that are not yet available in the style. This way
|
|
213
|
+
// we can load the images asynchronously and add the ShapeSource to the map without delay.
|
|
214
|
+
// The same is required when this ShapeSource is updated with new/added images and the
|
|
215
|
+
// data references them. In which case addMissingImageToStyle will take care of loading
|
|
216
|
+
// them in a similar way.
|
|
217
|
+
//
|
|
218
|
+
// See also: https://github.com/mapbox/mapbox-gl-native/pull/14253#issuecomment-478827792
|
|
219
|
+
for (Map.Entry<String, ImageEntry> imageEntry : imageEntries) {
|
|
220
|
+
if (!hasImage(imageEntry.getKey(), map)) {
|
|
221
|
+
style.addImage(imageEntry.getKey(), mImagePlaceholder);
|
|
222
|
+
missingImages.add(imageEntry);
|
|
223
|
+
mCurrentImages.add(imageEntry.getKey());
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (missingImages.size() > 0) {
|
|
228
|
+
DownloadMapImageTask task = new DownloadMapImageTask(getContext(), map, null);
|
|
229
|
+
Map.Entry[] params = missingImages.toArray(new Map.Entry[missingImages.size()]);
|
|
230
|
+
//noinspection unchecked
|
|
231
|
+
task.execute(params);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.java
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.images;
|
|
2
|
+
|
|
3
|
+
import android.graphics.drawable.BitmapDrawable;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
8
|
+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
9
|
+
import com.facebook.react.bridge.ReadableType;
|
|
10
|
+
import com.facebook.react.common.MapBuilder;
|
|
11
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
12
|
+
import com.facebook.react.uimanager.ViewGroupManager;
|
|
13
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
14
|
+
import com.mapbox.rctmgl.components.AbstractEventEmitter;
|
|
15
|
+
import com.mapbox.rctmgl.components.AbstractMapFeature;
|
|
16
|
+
import com.mapbox.rctmgl.components.styles.sources.RCTMGLShapeSource;
|
|
17
|
+
import com.mapbox.rctmgl.events.constants.EventKeys;
|
|
18
|
+
import com.mapbox.rctmgl.utils.ImageEntry;
|
|
19
|
+
import com.mapbox.rctmgl.utils.ResourceUtils;
|
|
20
|
+
|
|
21
|
+
import java.util.AbstractMap;
|
|
22
|
+
import java.util.ArrayList;
|
|
23
|
+
import java.util.List;
|
|
24
|
+
import java.util.Map;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
public class RCTMGLImagesManager extends AbstractEventEmitter<RCTMGLImages> {
|
|
28
|
+
public static final String REACT_CLASS = "RCTMGLImages";
|
|
29
|
+
|
|
30
|
+
private ReactApplicationContext mContext;
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
public String getName() {
|
|
34
|
+
return "RCTMGLImages";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
public RCTMGLImagesManager(ReactApplicationContext context) {
|
|
39
|
+
super(context);
|
|
40
|
+
mContext = context;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
44
|
+
public RCTMGLImages createViewInstance(ThemedReactContext context) {
|
|
45
|
+
return new RCTMGLImages(context, this);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@ReactProp(name = "id")
|
|
49
|
+
public void setId(RCTMGLImages source, String id) {
|
|
50
|
+
source.setID(id);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@ReactProp(name = "images")
|
|
54
|
+
public void setImages(RCTMGLImages images, ReadableMap map) {
|
|
55
|
+
List<Map.Entry<String, ImageEntry>> imagesList = new ArrayList<>();
|
|
56
|
+
|
|
57
|
+
ReadableMapKeySetIterator iterator = map.keySetIterator();
|
|
58
|
+
while (iterator.hasNextKey()) {
|
|
59
|
+
String imageName = iterator.nextKey();
|
|
60
|
+
ImageEntry imageEntry = null;
|
|
61
|
+
if (map.getType(imageName) == ReadableType.Map) {
|
|
62
|
+
ReadableMap imageMap = map.getMap(imageName);
|
|
63
|
+
String uri = imageMap.getString("uri");
|
|
64
|
+
boolean hasScale = imageMap.hasKey("scale") && imageMap.getType("scale") == ReadableType.Number;
|
|
65
|
+
double scale = hasScale ? imageMap.getDouble("scale") : ImageEntry.defaultScale;
|
|
66
|
+
imageEntry = new ImageEntry(uri, scale);
|
|
67
|
+
} else {
|
|
68
|
+
imageEntry = new ImageEntry(map.getString(imageName));
|
|
69
|
+
}
|
|
70
|
+
imagesList.add(new AbstractMap.SimpleEntry<String, ImageEntry>(imageName, imageEntry));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
images.setImages(imagesList);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@ReactProp(name = "hasOnImageMissing")
|
|
77
|
+
public void setHasOnImageMissing(RCTMGLImages images, Boolean value) {
|
|
78
|
+
images.setHasOnImageMissing(value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@ReactProp(name = "nativeImages")
|
|
82
|
+
public void setNativeImages(RCTMGLImages images, ReadableArray arr) {
|
|
83
|
+
List<Map.Entry<String, BitmapDrawable>> resources = new ArrayList<>();
|
|
84
|
+
|
|
85
|
+
for (int i = 0; i < arr.size(); i++) {
|
|
86
|
+
String resourceName = arr.getString(i);
|
|
87
|
+
BitmapDrawable drawable = (BitmapDrawable) ResourceUtils.getDrawableByName(mContext, resourceName);
|
|
88
|
+
|
|
89
|
+
if (drawable != null) {
|
|
90
|
+
resources.add(new AbstractMap.SimpleEntry<String, BitmapDrawable>(resourceName, drawable));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
images.setNativeImages(resources);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Override
|
|
98
|
+
public Map<String, String> customEvents() {
|
|
99
|
+
return MapBuilder.<String, String>builder()
|
|
100
|
+
.put(EventKeys.IMAGES_MISSING, "onImageMissing")
|
|
101
|
+
.build();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.location;
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
|
|
6
|
+
import com.mapbox.mapboxsdk.location.LocationComponent;
|
|
7
|
+
import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions;
|
|
8
|
+
import com.mapbox.mapboxsdk.location.LocationComponentOptions;
|
|
9
|
+
import com.mapbox.mapboxsdk.location.OnCameraTrackingChangedListener;
|
|
10
|
+
import com.mapbox.mapboxsdk.location.modes.CameraMode;
|
|
11
|
+
import com.mapbox.mapboxsdk.location.modes.RenderMode;
|
|
12
|
+
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
|
13
|
+
import com.mapbox.mapboxsdk.maps.Style;
|
|
14
|
+
import com.mapbox.rctmgl.R;
|
|
15
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
|
|
16
|
+
import com.mapbox.rctmgl.location.LocationManager;
|
|
17
|
+
|
|
18
|
+
import androidx.annotation.NonNull;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The LocationComponent on android implements both location tracking and display of user's current location.
|
|
22
|
+
* LocationComponentManager attempts to separate that, so that Camera can ask for location tracking independent of display of user current location.
|
|
23
|
+
* And NativeUserLocation can ask for display of user's current location - independent of Camera's user tracking.
|
|
24
|
+
*/
|
|
25
|
+
public class LocationComponentManager {
|
|
26
|
+
private RCTMGLMapView mMapView = null;
|
|
27
|
+
private MapboxMap mMap = null;
|
|
28
|
+
|
|
29
|
+
private LocationManager mLocationManager = null;
|
|
30
|
+
private LocationComponent mLocationComponent = null;
|
|
31
|
+
private Context mContext = null;
|
|
32
|
+
|
|
33
|
+
private @RenderMode.Mode int mRenderMode = RenderMode.COMPASS;
|
|
34
|
+
|
|
35
|
+
public LocationComponentManager(RCTMGLMapView rctmglMapView, Context context) {
|
|
36
|
+
mMapView = rctmglMapView;
|
|
37
|
+
mMap = mMapView.getMapboxMap();
|
|
38
|
+
mContext = context;
|
|
39
|
+
|
|
40
|
+
mLocationManager = LocationManager.getInstance(context);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private boolean mShowUserLocation = false;
|
|
44
|
+
|
|
45
|
+
private boolean mFollowUserLocation = false;
|
|
46
|
+
|
|
47
|
+
private boolean mShowingUserLocation = false;
|
|
48
|
+
|
|
49
|
+
public void showUserLocation(boolean showUserLocation) {
|
|
50
|
+
mShowUserLocation = showUserLocation;
|
|
51
|
+
stateChanged();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public void setFollowUserLocation(boolean followUserLocation) {
|
|
55
|
+
mFollowUserLocation = followUserLocation;
|
|
56
|
+
stateChanged();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public void setCameraMode(@CameraMode.Mode int cameraMode) {
|
|
60
|
+
mLocationComponent.setCameraMode(cameraMode);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public void setRenderMode(@RenderMode.Mode int renderMode) {
|
|
64
|
+
mRenderMode = renderMode;
|
|
65
|
+
if (mShowingUserLocation) {
|
|
66
|
+
mLocationComponent.setRenderMode(renderMode);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public void addOnCameraTrackingChangedListener(OnCameraTrackingChangedListener onCameraTrackingChangedListener) {
|
|
71
|
+
mLocationComponent.addOnCameraTrackingChangedListener(onCameraTrackingChangedListener);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@SuppressLint("MissingPermission")
|
|
75
|
+
private void stateChanged() {
|
|
76
|
+
mLocationComponent.setLocationComponentEnabled((mFollowUserLocation || mShowUserLocation));
|
|
77
|
+
|
|
78
|
+
if (mShowingUserLocation != mShowUserLocation) {
|
|
79
|
+
updateShowUserLocation(mShowUserLocation);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (mFollowUserLocation) {
|
|
83
|
+
if (!mShowUserLocation) {
|
|
84
|
+
mLocationComponent.setRenderMode(RenderMode.GPS);
|
|
85
|
+
} else {
|
|
86
|
+
mLocationComponent.setRenderMode(mRenderMode);
|
|
87
|
+
}
|
|
88
|
+
mLocationComponent.onStart();
|
|
89
|
+
} else {
|
|
90
|
+
mLocationComponent.setCameraMode(CameraMode.NONE);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public boolean hasLocationComponent() {
|
|
95
|
+
return (mLocationComponent != null);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public void update(@NonNull Style style) {
|
|
99
|
+
update(mShowUserLocation, style);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public void update(boolean displayUserLocation, @NonNull Style style) {
|
|
103
|
+
Integer tintColor = mMapView.getTintColor();
|
|
104
|
+
|
|
105
|
+
if (mLocationComponent == null || tintColor != null ) {
|
|
106
|
+
mLocationComponent = mMap.getLocationComponent();
|
|
107
|
+
|
|
108
|
+
LocationComponentActivationOptions locationComponentActivationOptions = LocationComponentActivationOptions
|
|
109
|
+
.builder(mContext, style)
|
|
110
|
+
.locationComponentOptions(options(displayUserLocation))
|
|
111
|
+
.build();
|
|
112
|
+
mLocationComponent.activateLocationComponent(locationComponentActivationOptions);
|
|
113
|
+
mLocationComponent.setLocationEngine(mLocationManager.getEngine());
|
|
114
|
+
mShowingUserLocation = displayUserLocation;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
updateShowUserLocation(displayUserLocation);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
private void updateShowUserLocation(boolean displayUserLocation) {
|
|
121
|
+
if (mShowingUserLocation != displayUserLocation) {
|
|
122
|
+
mLocationComponent.applyStyle(options(displayUserLocation));
|
|
123
|
+
mShowingUserLocation = displayUserLocation;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
LocationComponentOptions options(boolean displayUserLocation) {
|
|
128
|
+
LocationComponentOptions.Builder builder = LocationComponentOptions.builder(mContext);
|
|
129
|
+
Integer tintColor = mMapView.getTintColor();
|
|
130
|
+
if (!displayUserLocation) {
|
|
131
|
+
builder = builder
|
|
132
|
+
.padding(mMap.getPadding())
|
|
133
|
+
.backgroundDrawable(R.drawable.empty)
|
|
134
|
+
.backgroundDrawableStale(R.drawable.empty)
|
|
135
|
+
.bearingDrawable(R.drawable.empty)
|
|
136
|
+
.foregroundDrawable(R.drawable.empty)
|
|
137
|
+
.foregroundDrawableStale(R.drawable.empty)
|
|
138
|
+
.gpsDrawable(R.drawable.empty)
|
|
139
|
+
.accuracyAlpha(0.0f);
|
|
140
|
+
} else if (tintColor != null) {
|
|
141
|
+
builder = builder
|
|
142
|
+
.enableStaleState(false)
|
|
143
|
+
.bearingTintColor(tintColor)
|
|
144
|
+
.foregroundTintColor(tintColor)
|
|
145
|
+
.accuracyColor(tintColor);
|
|
146
|
+
}
|
|
147
|
+
return builder.build();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.location;
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
import androidx.annotation.NonNull;
|
|
6
|
+
|
|
7
|
+
import com.mapbox.mapboxsdk.location.permissions.PermissionsManager;
|
|
8
|
+
import com.mapbox.mapboxsdk.location.modes.RenderMode;
|
|
9
|
+
import com.mapbox.mapboxsdk.maps.MapboxMap;
|
|
10
|
+
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
|
|
11
|
+
import com.mapbox.mapboxsdk.maps.Style;
|
|
12
|
+
import com.mapbox.rctmgl.components.AbstractMapFeature;
|
|
13
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView;
|
|
14
|
+
|
|
15
|
+
public class RCTMGLNativeUserLocation extends AbstractMapFeature implements OnMapReadyCallback, Style.OnStyleLoaded {
|
|
16
|
+
private boolean mEnabled = true;
|
|
17
|
+
private MapboxMap mMap;
|
|
18
|
+
private RCTMGLMapView mMapView;
|
|
19
|
+
private @RenderMode.Mode int mRenderMode = RenderMode.COMPASS;
|
|
20
|
+
|
|
21
|
+
public RCTMGLNativeUserLocation(Context context) {
|
|
22
|
+
super(context);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Override
|
|
26
|
+
public void addToMap(RCTMGLMapView mapView) {
|
|
27
|
+
mEnabled = true;
|
|
28
|
+
mMapView = mapView;
|
|
29
|
+
mapView.getMapAsync(this);
|
|
30
|
+
setRenderMode(mRenderMode);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@Override
|
|
34
|
+
public void removeFromMap(RCTMGLMapView mapView) {
|
|
35
|
+
mEnabled = false;
|
|
36
|
+
if (mMap != null) mMap.getStyle(this);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@SuppressLint("MissingPermission")
|
|
40
|
+
@Override
|
|
41
|
+
public void onMapReady(@NonNull MapboxMap mapboxMap) {
|
|
42
|
+
mMap = mapboxMap;
|
|
43
|
+
mapboxMap.getStyle(this);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@SuppressLint("MissingPermission")
|
|
47
|
+
@Override
|
|
48
|
+
public void onStyleLoaded(@NonNull Style style) {
|
|
49
|
+
Context context = getContext();
|
|
50
|
+
if (!PermissionsManager.areLocationPermissionsGranted(context)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
LocationComponentManager locationComponent = mMapView.getLocationComponentManager();
|
|
55
|
+
locationComponent.update(style);
|
|
56
|
+
locationComponent.showUserLocation(mEnabled);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public void setRenderMode(@RenderMode.Mode int renderMode) {
|
|
60
|
+
mRenderMode = renderMode;
|
|
61
|
+
if (mMapView != null) {
|
|
62
|
+
LocationComponentManager locationComponent = mMapView.getLocationComponentManager();
|
|
63
|
+
locationComponent.setRenderMode(renderMode);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.location;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
4
|
+
import com.facebook.react.uimanager.ViewGroupManager;
|
|
5
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
6
|
+
import com.mapbox.mapboxsdk.location.modes.RenderMode;
|
|
7
|
+
|
|
8
|
+
import javax.annotation.Nonnull;
|
|
9
|
+
|
|
10
|
+
public class RCTMGLNativeUserLocationManager extends ViewGroupManager<RCTMGLNativeUserLocation> {
|
|
11
|
+
public static final String REACT_CLASS = "RCTMGLNativeUserLocation";
|
|
12
|
+
|
|
13
|
+
@Nonnull
|
|
14
|
+
@Override
|
|
15
|
+
public String getName() {
|
|
16
|
+
return REACT_CLASS;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@ReactProp(name="androidRenderMode")
|
|
20
|
+
public void setAndroidRenderMode(RCTMGLNativeUserLocation userLocation, String mode) {
|
|
21
|
+
if ("compass".equalsIgnoreCase(mode)) {
|
|
22
|
+
userLocation.setRenderMode(RenderMode.COMPASS);
|
|
23
|
+
} else if ("gps".equalsIgnoreCase(mode)) {
|
|
24
|
+
userLocation.setRenderMode(RenderMode.GPS);
|
|
25
|
+
} else {
|
|
26
|
+
userLocation.setRenderMode(RenderMode.NORMAL);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Nonnull
|
|
31
|
+
@Override
|
|
32
|
+
protected RCTMGLNativeUserLocation createViewInstance(@Nonnull ThemedReactContext reactContext) {
|
|
33
|
+
return new RCTMGLNativeUserLocation(reactContext);
|
|
34
|
+
}
|
|
35
|
+
}
|
package/android/rctmgl/src/main/java/com/mapbox/rctmgl/components/mapview/LayerSourceInfo.java
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.mapview;
|
|
2
|
+
|
|
3
|
+
import com.mapbox.mapboxsdk.style.layers.CircleLayer;
|
|
4
|
+
import com.mapbox.mapboxsdk.style.layers.FillExtrusionLayer;
|
|
5
|
+
import com.mapbox.mapboxsdk.style.layers.FillLayer;
|
|
6
|
+
import com.mapbox.mapboxsdk.style.layers.HeatmapLayer;
|
|
7
|
+
import com.mapbox.mapboxsdk.style.layers.HillshadeLayer;
|
|
8
|
+
import com.mapbox.mapboxsdk.style.layers.Layer;
|
|
9
|
+
import com.mapbox.mapboxsdk.style.layers.LineLayer;
|
|
10
|
+
import com.mapbox.mapboxsdk.style.layers.RasterLayer;
|
|
11
|
+
import com.mapbox.mapboxsdk.style.layers.SymbolLayer;
|
|
12
|
+
|
|
13
|
+
import javax.annotation.Nullable;
|
|
14
|
+
|
|
15
|
+
class LayerSourceInfo {
|
|
16
|
+
final String sourceId;
|
|
17
|
+
|
|
18
|
+
@Nullable
|
|
19
|
+
final String sourceLayerId;
|
|
20
|
+
|
|
21
|
+
LayerSourceInfo(Layer layer) {
|
|
22
|
+
if (layer instanceof CircleLayer) {
|
|
23
|
+
CircleLayer symbolLayer = (CircleLayer) layer;
|
|
24
|
+
sourceId = symbolLayer.getSourceId();
|
|
25
|
+
sourceLayerId = symbolLayer.getSourceLayer();
|
|
26
|
+
} else if (layer instanceof FillExtrusionLayer) {
|
|
27
|
+
FillExtrusionLayer fillExtrusionLayer = (FillExtrusionLayer)layer;
|
|
28
|
+
sourceId = fillExtrusionLayer.getSourceId();
|
|
29
|
+
sourceLayerId = fillExtrusionLayer.getSourceLayer();
|
|
30
|
+
} else if (layer instanceof FillLayer) {
|
|
31
|
+
FillLayer fillLayer = (FillLayer)layer;
|
|
32
|
+
sourceId = fillLayer.getSourceId();
|
|
33
|
+
sourceLayerId = fillLayer.getSourceLayer();
|
|
34
|
+
} else if (layer instanceof HeatmapLayer) {
|
|
35
|
+
HeatmapLayer heatmapLayer = (HeatmapLayer)layer;
|
|
36
|
+
sourceId = heatmapLayer.getSourceId();
|
|
37
|
+
sourceLayerId = heatmapLayer.getSourceLayer();
|
|
38
|
+
} else if (layer instanceof HillshadeLayer) {
|
|
39
|
+
HillshadeLayer hillshadeLayer = (HillshadeLayer)layer;
|
|
40
|
+
sourceId = hillshadeLayer.getSourceId();
|
|
41
|
+
sourceLayerId = null;
|
|
42
|
+
} else if (layer instanceof LineLayer) {
|
|
43
|
+
LineLayer lineLayer = (LineLayer)layer;
|
|
44
|
+
sourceId = lineLayer.getSourceId();
|
|
45
|
+
sourceLayerId = lineLayer.getSourceLayer();
|
|
46
|
+
} else if (layer instanceof RasterLayer) {
|
|
47
|
+
RasterLayer rasterLayer = (RasterLayer) layer;
|
|
48
|
+
sourceId = rasterLayer.getSourceId();
|
|
49
|
+
sourceLayerId = null;
|
|
50
|
+
} else if (layer instanceof SymbolLayer) {
|
|
51
|
+
SymbolLayer symbolLayer = (SymbolLayer)layer;
|
|
52
|
+
sourceId = symbolLayer.getSourceId();
|
|
53
|
+
sourceLayerId = symbolLayer.getSourceLayer();
|
|
54
|
+
} else {
|
|
55
|
+
sourceId = "";
|
|
56
|
+
sourceLayerId = null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.mapview;
|
|
2
|
+
|
|
3
|
+
import android.content.Context;
|
|
4
|
+
import com.mapbox.mapboxsdk.maps.MapboxMapOptions;
|
|
5
|
+
/**
|
|
6
|
+
* Created by hernanmateo on 12/11/18.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
@SuppressWarnings({"MissingPermission"})
|
|
10
|
+
public class RCTMGLAndroidTextureMapView extends RCTMGLMapView {
|
|
11
|
+
public static final String LOG_TAG = "RCTMGLAndroidTextureMapView";
|
|
12
|
+
|
|
13
|
+
public RCTMGLAndroidTextureMapView(Context context, RCTMGLAndroidTextureMapViewManager manager, MapboxMapOptions options) {
|
|
14
|
+
super(context, manager, options);
|
|
15
|
+
}
|
|
16
|
+
}
|