@rnmapbox/maps 10.1.0-beta.15 → 10.1.0-beta.19
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/android/build.gradle +1 -0
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +22 -6
- package/android/src/main/java/com/rnmapbox/rnmbx/components/AbstractEvent.kt +24 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/AbstractEventEmitter.kt +5 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXMarkerView.kt +5 -5
- package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXMarkerViewManager.kt +3 -9
- package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXPointAnnotation.kt +5 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXPointAnnotationManager.kt +22 -8
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXCamera.kt +4 -4
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXVIewportManager.kt +55 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXViewport.kt +259 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/camera/RNMBXViewportModule.kt +66 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/ImageManager.kt +53 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImage.kt +5 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImageManager.kt +14 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImages.kt +2 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt +4 -3
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/LocationComponentManager.kt +78 -47
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProvider.kt +114 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXCustomLocationProviderManager.kt +45 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocation.kt +194 -25
- package/android/src/main/java/com/rnmapbox/rnmbx/components/location/RNMBXNativeUserLocationManager.kt +82 -7
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +0 -7
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapView.kt +12 -8
- package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/RNMBXMapViewManager.kt +9 -8
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyle.kt +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSource.kt +5 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXShapeSourceManager.kt +18 -5
- package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/sources/RNMBXVectorSourceManager.kt +5 -4
- package/android/src/main/java/com/rnmapbox/rnmbx/events/AndroidCallbackEvent.java +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/events/FeatureClickEvent.java +3 -3
- package/android/src/main/java/com/rnmapbox/rnmbx/events/IEvent.kt +1 -4
- package/android/src/main/java/com/rnmapbox/rnmbx/events/ImageMissingEvent.java +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/events/LocationEvent.kt +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/events/MapChangeEvent.kt +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/events/MapClickEvent.java +2 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/events/MapUserTrackingModeEvent.kt +4 -4
- package/android/src/main/java/com/rnmapbox/rnmbx/events/PointAnnotationClickEvent.java +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/events/PointAnnotationDragEvent.java +3 -3
- package/android/src/main/java/com/rnmapbox/rnmbx/events/constants/EventKeys.kt +44 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/BitmapUtils.kt +3 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/DownloadMapImageTask.kt +5 -2
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/PropertyChanges.kt +1 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableArray.kt +21 -1
- package/android/src/main/java/com/rnmapbox/rnmbx/utils/extensions/ReadableMap.kt +34 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/Annotation.kt +29 -1
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/Cancelable.kt +15 -0
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/Image.kt +17 -1
- package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/Location.kt +6 -9
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/Annotation.kt +29 -1
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/Cancelable.kt +3 -0
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/Image.kt +21 -1
- package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/Location.kt +2 -2
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXCustomLocationProviderManagerDelegate.java +32 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXCustomLocationProviderManagerInterface.java +17 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXNativeUserLocationManagerDelegate.java +20 -2
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXNativeUserLocationManagerInterface.java +7 -1
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXViewportManagerDelegate.java +35 -0
- package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXViewportManagerInterface.java +18 -0
- package/android/src/main/old-arch/com/rnmapbox/rnmbx/NativeRNMBXViewportModuleSpec.java +49 -0
- package/ios/RNMBX/ImageManager.swift +41 -0
- package/ios/RNMBX/RNMBXAtmosphereComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXBackgroundLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXCalloutComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXCamera.swift +4 -4
- package/ios/RNMBX/RNMBXCameraComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXCircleLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXCustomLocationProvider.swift +269 -0
- package/ios/RNMBX/RNMBXCustomLocationProviderComponentView.h +15 -0
- package/ios/RNMBX/RNMBXCustomLocationProviderComponentView.mm +67 -0
- package/ios/RNMBX/RNMBXCustomLocationProviderVIewManager.swift +13 -0
- package/ios/RNMBX/RNMBXCustomLocationProviderViewManager.m +9 -0
- package/ios/RNMBX/RNMBXFabricPropConvert.h +41 -0
- package/ios/RNMBX/RNMBXFabricPropConvert.mm +131 -0
- package/ios/RNMBX/RNMBXFillExtrusionLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXFillLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXHeatmapLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXImageComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXImageModule.mm +2 -2
- package/ios/RNMBX/RNMBXImageSourceComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXImages.swift +22 -6
- package/ios/RNMBX/RNMBXImagesComponentView.mm +19 -1
- package/ios/RNMBX/RNMBXLightComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXLineLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXLocationModule.swift +25 -14
- package/ios/RNMBX/RNMBXLocationModuleV11.swift +81 -14
- package/ios/RNMBX/RNMBXLogging.swift +8 -0
- package/ios/RNMBX/RNMBXMapView.swift +327 -136
- package/ios/RNMBX/RNMBXMapViewComponentView.mm +3 -1
- package/ios/RNMBX/RNMBXMapViewManager.swift +0 -1
- package/ios/RNMBX/RNMBXMapViewModule.mm +0 -1
- package/ios/RNMBX/RNMBXMarkerView.swift +1 -2
- package/ios/RNMBX/RNMBXMarkerViewComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXNativeUserLocation.swift +217 -19
- package/ios/RNMBX/RNMBXNativeUserLocationComponentView.mm +14 -6
- package/ios/RNMBX/RNMBXNativeUserLocationViewManager.m +7 -0
- package/ios/RNMBX/RNMBXPointAnnotationComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXPointAnnotationModule.mm +2 -2
- package/ios/RNMBX/RNMBXRasterDemSourceComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXRasterLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXRasterSourceComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXShapeSourceComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXSkyLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXSymbolLayerComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXTerrainComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXUtils.swift +2 -7
- package/ios/RNMBX/RNMBXVectorSourceComponentView.mm +1 -1
- package/ios/RNMBX/RNMBXViewport.swift +220 -0
- package/ios/RNMBX/RNMBXViewportComponentView.h +17 -0
- package/ios/RNMBX/RNMBXViewportComponentView.mm +119 -0
- package/ios/RNMBX/RNMBXViewportManager.m +12 -0
- package/ios/RNMBX/RNMBXViewportManager.swift +38 -0
- package/ios/RNMBX/RNMBXViewportModule.h +18 -0
- package/ios/RNMBX/RNMBXViewportModule.mm +87 -0
- package/ios/RNMBX/Uitls/PropertyChanges.swift +57 -0
- package/ios/RNMBX/rnmapbox_maps-Swift.pre.h +3 -0
- package/lib/commonjs/Mapbox.js +24 -0
- package/lib/commonjs/Mapbox.js.map +1 -1
- package/lib/commonjs/classes/AnimatedCoordinatesArray.js +4 -4
- package/lib/commonjs/classes/AnimatedCoordinatesArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedPoint.js +9 -14
- package/lib/commonjs/classes/AnimatedPoint.js.map +1 -1
- package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js +1 -2
- package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
- package/lib/commonjs/components/Annotation.js +1 -2
- package/lib/commonjs/components/Annotation.js.map +1 -1
- package/lib/commonjs/components/Camera.js +5 -11
- package/lib/commonjs/components/Camera.js.map +1 -1
- package/lib/commonjs/components/CustomLocationProvider.js +16 -0
- package/lib/commonjs/components/CustomLocationProvider.js.map +1 -0
- package/lib/commonjs/components/HeadingIndicator.js +3 -4
- package/lib/commonjs/components/HeadingIndicator.js.map +1 -1
- package/lib/commonjs/components/Image.js +7 -8
- package/lib/commonjs/components/Image.js.map +1 -1
- package/lib/commonjs/components/MapView.js +6 -15
- package/lib/commonjs/components/MapView.js.map +1 -1
- package/lib/commonjs/components/NativeBridgeComponent.js +3 -4
- package/lib/commonjs/components/NativeBridgeComponent.js.map +1 -1
- package/lib/commonjs/components/NativeUserLocation.js +23 -1
- package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
- package/lib/commonjs/components/UserLocation.js +3 -4
- package/lib/commonjs/components/UserLocation.js.map +1 -1
- package/lib/commonjs/components/Viewport.js +105 -0
- package/lib/commonjs/components/Viewport.js.map +1 -0
- package/lib/commonjs/modules/location/locationManager.js +1 -2
- package/lib/commonjs/modules/location/locationManager.js.map +1 -1
- package/lib/commonjs/modules/snapshot/SnapshotOptions.js +1 -2
- package/lib/commonjs/modules/snapshot/SnapshotOptions.js.map +1 -1
- package/lib/commonjs/modules/snapshot/snapshotManager.js +1 -2
- package/lib/commonjs/modules/snapshot/snapshotManager.js.map +1 -1
- package/lib/commonjs/specs/NativeRNMBXViewportModule.js +10 -0
- package/lib/commonjs/specs/NativeRNMBXViewportModule.js.map +1 -0
- package/lib/commonjs/specs/RNMBXCustomLocationProviderNativeComponent.js +11 -0
- package/lib/commonjs/specs/RNMBXCustomLocationProviderNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/RNMBXNativeUserLocationNativeComponent.js +1 -0
- package/lib/commonjs/specs/RNMBXNativeUserLocationNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/RNMBXViewportNativeComponent.js +36 -0
- package/lib/commonjs/specs/RNMBXViewportNativeComponent.js.map +1 -0
- package/lib/commonjs/utils/deprecation.js +3 -4
- package/lib/commonjs/utils/deprecation.js.map +1 -1
- package/lib/commonjs/utils/geoUtils.js +1 -3
- package/lib/commonjs/utils/geoUtils.js.map +1 -1
- package/lib/commonjs/utils/index.js +2 -4
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web/components/Camera.js +1 -3
- package/lib/commonjs/web/components/Camera.js.map +1 -1
- package/lib/module/Mapbox.js +3 -0
- package/lib/module/Mapbox.js.map +1 -1
- package/lib/module/classes/AnimatedCoordinatesArray.js +4 -4
- package/lib/module/classes/AnimatedCoordinatesArray.js.map +1 -1
- package/lib/module/classes/AnimatedPoint.js +9 -14
- package/lib/module/classes/AnimatedPoint.js.map +1 -1
- package/lib/module/classes/AnimatedRouteCoordinatesArray.js +1 -2
- package/lib/module/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
- package/lib/module/components/Annotation.js +1 -2
- package/lib/module/components/Annotation.js.map +1 -1
- package/lib/module/components/Camera.js +5 -11
- package/lib/module/components/Camera.js.map +1 -1
- package/lib/module/components/CustomLocationProvider.js +7 -0
- package/lib/module/components/CustomLocationProvider.js.map +1 -0
- package/lib/module/components/HeadingIndicator.js +3 -4
- package/lib/module/components/HeadingIndicator.js.map +1 -1
- package/lib/module/components/Image.js +7 -8
- package/lib/module/components/Image.js.map +1 -1
- package/lib/module/components/MapView.js +6 -15
- package/lib/module/components/MapView.js.map +1 -1
- package/lib/module/components/NativeBridgeComponent.js +3 -4
- package/lib/module/components/NativeBridgeComponent.js.map +1 -1
- package/lib/module/components/NativeUserLocation.js +24 -2
- package/lib/module/components/NativeUserLocation.js.map +1 -1
- package/lib/module/components/UserLocation.js +3 -4
- package/lib/module/components/UserLocation.js.map +1 -1
- package/lib/module/components/Viewport.js +96 -0
- package/lib/module/components/Viewport.js.map +1 -0
- package/lib/module/modules/location/locationManager.js +1 -2
- package/lib/module/modules/location/locationManager.js.map +1 -1
- package/lib/module/modules/snapshot/SnapshotOptions.js +1 -2
- package/lib/module/modules/snapshot/SnapshotOptions.js.map +1 -1
- package/lib/module/modules/snapshot/snapshotManager.js +1 -2
- package/lib/module/modules/snapshot/snapshotManager.js.map +1 -1
- package/lib/module/specs/NativeRNMBXViewportModule.js +6 -0
- package/lib/module/specs/NativeRNMBXViewportModule.js.map +1 -0
- package/lib/module/specs/RNMBXCustomLocationProviderNativeComponent.js +6 -0
- package/lib/module/specs/RNMBXCustomLocationProviderNativeComponent.js.map +1 -0
- package/lib/module/specs/RNMBXNativeUserLocationNativeComponent.js +3 -0
- package/lib/module/specs/RNMBXNativeUserLocationNativeComponent.js.map +1 -1
- package/lib/module/specs/RNMBXViewportNativeComponent.js +31 -0
- package/lib/module/specs/RNMBXViewportNativeComponent.js.map +1 -0
- package/lib/module/utils/deprecation.js +3 -4
- package/lib/module/utils/deprecation.js.map +1 -1
- package/lib/module/utils/geoUtils.js +1 -3
- package/lib/module/utils/geoUtils.js.map +1 -1
- package/lib/module/utils/index.js +2 -4
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web/components/Camera.js +1 -3
- package/lib/module/web/components/Camera.js.map +1 -1
- package/lib/typescript/src/Mapbox.d.ts +3 -0
- package/lib/typescript/src/Mapbox.d.ts.map +1 -1
- package/lib/typescript/src/components/Camera.d.ts +1 -2
- package/lib/typescript/src/components/Camera.d.ts.map +1 -1
- package/lib/typescript/src/components/CustomLocationProvider.d.ts +8 -0
- package/lib/typescript/src/components/CustomLocationProvider.d.ts.map +1 -0
- package/lib/typescript/src/components/NativeUserLocation.d.ts +40 -0
- package/lib/typescript/src/components/NativeUserLocation.d.ts.map +1 -1
- package/lib/typescript/src/components/UserLocation.d.ts +1 -0
- package/lib/typescript/src/components/UserLocation.d.ts.map +1 -1
- package/lib/typescript/src/components/Viewport.d.ts +68 -0
- package/lib/typescript/src/components/Viewport.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeRNMBXViewportModule.d.ts +36 -0
- package/lib/typescript/src/specs/NativeRNMBXViewportModule.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXCustomLocationProviderNativeComponent.d.ts +10 -0
- package/lib/typescript/src/specs/RNMBXCustomLocationProviderNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/RNMBXNativeUserLocationNativeComponent.d.ts +11 -2
- package/lib/typescript/src/specs/RNMBXNativeUserLocationNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/RNMBXViewportNativeComponent.d.ts +47 -0
- package/lib/typescript/src/specs/RNMBXViewportNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/types/Position.d.ts +3 -0
- package/lib/typescript/src/types/Position.d.ts.map +1 -1
- package/package.json +2 -1
- package/rnmapbox-maps.podspec +1 -1
- package/setup-jest.js +6 -0
- package/src/Mapbox.ts +3 -0
- package/src/components/Camera.tsx +1 -2
- package/src/components/CustomLocationProvider.tsx +14 -0
- package/src/components/NativeUserLocation.tsx +69 -2
- package/src/components/UserLocation.tsx +1 -0
- package/src/components/Viewport.tsx +250 -0
- package/src/specs/NativeRNMBXViewportModule.ts +41 -0
- package/src/specs/RNMBXCustomLocationProviderNativeComponent.ts +17 -0
- package/src/specs/RNMBXNativeUserLocationNativeComponent.ts +15 -2
- package/src/specs/RNMBXViewportNativeComponent.ts +102 -0
- package/src/types/Position.ts +3 -0
- package/android/src/main/java/com/rnmapbox/rnmbx/components/AbstractEvent.java +0 -35
- package/android/src/main/java/com/rnmapbox/rnmbx/events/constants/EventKeys.java +0 -39
package/android/build.gradle
CHANGED
|
@@ -43,6 +43,7 @@ if (safeExtGet("RNMapboxMapsImpl", defaultMapboxMapsImpl) == "mapbox") {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
android {
|
|
46
|
+
namespace = "com.rnmapbox.rnmbx"
|
|
46
47
|
if (safeExtGet("RNMapboxMapsImpl", defaultMapboxMapsImpl) == "maplibre") {
|
|
47
48
|
msg = '@rnmapbox/maps: Maplibre implementation has been removed, set RNMapboxMapsImpl to mapbox- see https://github.com/rnmapbox/maps/wiki/Deprecated-RNMapboxImpl-Maplibre#android'
|
|
48
49
|
logger.error(msg)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
2
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
3
3
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
|
4
4
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
|
@@ -12,9 +12,13 @@ import com.rnmapbox.rnmbx.components.annotation.RNMBXMarkerViewManager
|
|
|
12
12
|
import com.rnmapbox.rnmbx.components.annotation.RNMBXPointAnnotationManager
|
|
13
13
|
import com.rnmapbox.rnmbx.components.annotation.RNMBXPointAnnotationModule
|
|
14
14
|
import com.rnmapbox.rnmbx.components.camera.RNMBXCameraManager
|
|
15
|
+
import com.rnmapbox.rnmbx.components.camera.RNMBXViewport
|
|
16
|
+
import com.rnmapbox.rnmbx.components.camera.RNMBXViewportManager
|
|
17
|
+
import com.rnmapbox.rnmbx.components.camera.RNMBXViewportModule
|
|
15
18
|
import com.rnmapbox.rnmbx.components.images.RNMBXImageManager
|
|
16
19
|
import com.rnmapbox.rnmbx.components.images.RNMBXImageModule
|
|
17
20
|
import com.rnmapbox.rnmbx.components.images.RNMBXImagesManager
|
|
21
|
+
import com.rnmapbox.rnmbx.components.location.RNMBXCustomLocationProviderManager
|
|
18
22
|
import com.rnmapbox.rnmbx.components.location.RNMBXNativeUserLocationManager
|
|
19
23
|
import com.rnmapbox.rnmbx.components.mapview.NativeMapViewModule
|
|
20
24
|
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapViewManager
|
|
@@ -50,9 +54,9 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
50
54
|
fun getViewTagResolver(context: ReactApplicationContext) : ViewTagResolver {
|
|
51
55
|
val viewTagResolver = viewTagResolver
|
|
52
56
|
if (viewTagResolver == null) {
|
|
53
|
-
val
|
|
54
|
-
this.viewTagResolver =
|
|
55
|
-
return
|
|
57
|
+
val result = ViewTagResolver(context)
|
|
58
|
+
this.viewTagResolver = result
|
|
59
|
+
return result
|
|
56
60
|
}
|
|
57
61
|
return viewTagResolver
|
|
58
62
|
}
|
|
@@ -68,6 +72,7 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
68
72
|
RNMBXSnapshotModule.REACT_CLASS -> return RNMBXSnapshotModule(reactApplicationContext)
|
|
69
73
|
RNMBXLogging.REACT_CLASS -> return RNMBXLogging(reactApplicationContext)
|
|
70
74
|
NativeMapViewModule.NAME -> return NativeMapViewModule(reactApplicationContext, getViewTagResolver(reactApplicationContext))
|
|
75
|
+
RNMBXViewportModule.NAME -> return RNMBXViewportModule(reactApplicationContext, getViewTagResolver(reactApplicationContext))
|
|
71
76
|
RNMBXShapeSourceModule.NAME -> return RNMBXShapeSourceModule(reactApplicationContext, getViewTagResolver(reactApplicationContext))
|
|
72
77
|
RNMBXImageModule.NAME -> return RNMBXImageModule(reactApplicationContext, getViewTagResolver(reactApplicationContext))
|
|
73
78
|
RNMBXPointAnnotationModule.NAME -> return RNMBXPointAnnotationModule(reactApplicationContext, getViewTagResolver(reactApplicationContext))
|
|
@@ -85,25 +90,27 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
85
90
|
|
|
86
91
|
// components
|
|
87
92
|
managers.add(RNMBXCameraManager(reactApplicationContext))
|
|
93
|
+
managers.add(RNMBXViewportManager(reactApplicationContext))
|
|
88
94
|
managers.add(RNMBXMapViewManager(reactApplicationContext, getViewTagResolver(reactApplicationContext)))
|
|
89
95
|
managers.add(RNMBXStyleImportManager(reactApplicationContext))
|
|
90
96
|
|
|
91
97
|
// annotations
|
|
92
98
|
managers.add(RNMBXMarkerViewManager(reactApplicationContext))
|
|
93
|
-
managers.add(RNMBXPointAnnotationManager(reactApplicationContext))
|
|
99
|
+
managers.add(RNMBXPointAnnotationManager(reactApplicationContext, getViewTagResolver(reactApplicationContext)))
|
|
94
100
|
managers.add(RNMBXCalloutManager())
|
|
95
101
|
managers.add(RNMBXNativeUserLocationManager())
|
|
102
|
+
managers.add(RNMBXCustomLocationProviderManager())
|
|
96
103
|
|
|
97
104
|
// sources
|
|
98
105
|
managers.add(RNMBXVectorSourceManager(reactApplicationContext))
|
|
99
|
-
managers.add(RNMBXShapeSourceManager(reactApplicationContext))
|
|
106
|
+
managers.add(RNMBXShapeSourceManager(reactApplicationContext, getViewTagResolver(reactApplicationContext)))
|
|
100
107
|
managers.add(RNMBXRasterDemSourceManager(reactApplicationContext))
|
|
101
108
|
managers.add(RNMBXRasterSourceManager(reactApplicationContext))
|
|
102
109
|
managers.add(RNMBXImageSourceManager())
|
|
103
110
|
|
|
104
111
|
// images
|
|
105
112
|
managers.add(RNMBXImagesManager(reactApplicationContext))
|
|
106
|
-
managers.add(RNMBXImageManager(reactApplicationContext))
|
|
113
|
+
managers.add(RNMBXImageManager(reactApplicationContext, getViewTagResolver(reactApplicationContext)))
|
|
107
114
|
|
|
108
115
|
// layers
|
|
109
116
|
managers.add(RNMBXFillLayerManager())
|
|
@@ -179,6 +186,15 @@ class RNMBXPackage : TurboReactPackage() {
|
|
|
179
186
|
false, // isCxxModule
|
|
180
187
|
isTurboModule // isTurboModule
|
|
181
188
|
)
|
|
189
|
+
moduleInfos[RNMBXViewportModule.NAME] = ReactModuleInfo(
|
|
190
|
+
RNMBXViewportModule.NAME,
|
|
191
|
+
RNMBXViewportModule.NAME,
|
|
192
|
+
false, // canOverrideExistingModule
|
|
193
|
+
false, // needsEagerInit
|
|
194
|
+
false, // hasConstants
|
|
195
|
+
false, // isCxxModule
|
|
196
|
+
isTurboModule // isTurboModule
|
|
197
|
+
)
|
|
182
198
|
moduleInfos[RNMBXShapeSourceModule.NAME] = ReactModuleInfo(
|
|
183
199
|
RNMBXShapeSourceModule.NAME,
|
|
184
200
|
RNMBXShapeSourceModule.NAME,
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
import com.facebook.react.uimanager.events.Event
|
|
5
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
6
|
+
|
|
7
|
+
class AbstractEvent(
|
|
8
|
+
viewId: Int,
|
|
9
|
+
private val mEventName: String,
|
|
10
|
+
private val mCanCoalesce: Boolean,
|
|
11
|
+
private val mEvent: WritableMap?
|
|
12
|
+
) : Event<AbstractEvent>(viewId) {
|
|
13
|
+
override fun getEventName(): String {
|
|
14
|
+
return mEventName
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override fun dispatch(rctEventEmitter: RCTEventEmitter) {
|
|
18
|
+
rctEventEmitter.receiveEvent(viewTag, eventName, mEvent)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override fun canCoalesce(): Boolean {
|
|
22
|
+
return mCanCoalesce
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -7,6 +7,7 @@ import com.facebook.react.common.MapBuilder
|
|
|
7
7
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
8
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
9
9
|
import com.facebook.react.uimanager.ViewGroupManager
|
|
10
|
+
import com.facebook.react.uimanager.events.Event
|
|
10
11
|
import com.facebook.react.uimanager.events.EventDispatcher
|
|
11
12
|
import com.rnmapbox.rnmbx.events.IEvent
|
|
12
13
|
|
|
@@ -27,6 +28,10 @@ abstract class AbstractEventEmitter<T : ViewGroup?>(reactApplicationContext: Rea
|
|
|
27
28
|
val activity : Activity?
|
|
28
29
|
get() = mRCTAppContext.currentActivity
|
|
29
30
|
|
|
31
|
+
fun <T : Event<T>>dispatchEvent(event: Event<T>) {
|
|
32
|
+
mEventDispatcher!!.dispatchEvent(event)
|
|
33
|
+
}
|
|
34
|
+
|
|
30
35
|
fun handleEvent(event: IEvent) {
|
|
31
36
|
val eventCacheKey = getEventCacheKey(event)
|
|
32
37
|
|
|
@@ -16,6 +16,7 @@ import com.rnmapbox.rnmbx.components.RemovalReason
|
|
|
16
16
|
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
17
17
|
import com.rnmapbox.rnmbx.utils.Logger
|
|
18
18
|
import java.util.Vector
|
|
19
|
+
import com.rnmapbox.rnmbx.v11compat.annotation.*
|
|
19
20
|
|
|
20
21
|
private data class Vec2(val dx: Double, val dy: Double)
|
|
21
22
|
|
|
@@ -169,12 +170,11 @@ class RNMBXMarkerView(context: Context?, private val mManager: RNMBXMarkerViewMa
|
|
|
169
170
|
val offset = getOffset()
|
|
170
171
|
|
|
171
172
|
val options = viewAnnotationOptions {
|
|
172
|
-
geometry(
|
|
173
|
-
width(width)
|
|
174
|
-
height(height)
|
|
173
|
+
coordinate?.let { geometry(it) }
|
|
174
|
+
width(width.toDouble())
|
|
175
|
+
height(height.toDouble())
|
|
175
176
|
allowOverlap(mAllowOverlap)
|
|
176
|
-
|
|
177
|
-
offsetY(offset.dy.toInt())
|
|
177
|
+
offsets(offset.dx, offset.dy)
|
|
178
178
|
selected(mIsSelected)
|
|
179
179
|
}
|
|
180
180
|
return options
|
package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXMarkerViewManager.kt
CHANGED
|
@@ -13,9 +13,9 @@ import com.facebook.react.uimanager.ViewManagerDelegate
|
|
|
13
13
|
import com.facebook.react.viewmanagers.RNMBXMarkerViewManagerDelegate
|
|
14
14
|
import com.facebook.react.viewmanagers.RNMBXMarkerViewManagerInterface
|
|
15
15
|
import com.mapbox.maps.ScreenCoordinate
|
|
16
|
-
import com.mapbox.maps.viewannotation.OnViewAnnotationUpdatedListener
|
|
17
16
|
import com.mapbox.maps.viewannotation.ViewAnnotationManager
|
|
18
17
|
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
18
|
+
import com.rnmapbox.rnmbx.v11compat.annotation.*
|
|
19
19
|
|
|
20
20
|
class RNMBXMarkerViewManager(reactApplicationContext: ReactApplicationContext) :
|
|
21
21
|
AbstractEventEmitter<RNMBXMarkerView>(reactApplicationContext),
|
|
@@ -69,7 +69,7 @@ class RNMBXMarkerViewManager(reactApplicationContext: ReactApplicationContext) :
|
|
|
69
69
|
fun markerViewContainerSizeFixer(mapView: RNMBXMapView, viewAnnotationManager: ViewAnnotationManager) {
|
|
70
70
|
// see https://github.com/rnmapbox/maps/issues/2376
|
|
71
71
|
viewAnnotationManager.addOnViewAnnotationUpdatedListener(object :
|
|
72
|
-
OnViewAnnotationUpdatedListener {
|
|
72
|
+
OnViewAnnotationUpdatedListener() {
|
|
73
73
|
override fun onViewAnnotationVisibilityUpdated(view: View, visible: Boolean) {
|
|
74
74
|
val parent = view.parent
|
|
75
75
|
if (parent is FrameLayout) {
|
|
@@ -79,13 +79,7 @@ class RNMBXMarkerViewManager(reactApplicationContext: ReactApplicationContext) :
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
view: View,
|
|
84
|
-
leftTopCoordinate: ScreenCoordinate,
|
|
85
|
-
width: Int,
|
|
86
|
-
height: Int
|
|
87
|
-
) {
|
|
88
|
-
}
|
|
82
|
+
|
|
89
83
|
})
|
|
90
84
|
}
|
|
91
85
|
}
|
package/android/src/main/java/com/rnmapbox/rnmbx/components/annotation/RNMBXPointAnnotation.kt
CHANGED
|
@@ -74,6 +74,11 @@ class RNMBXPointAnnotation(private val mContext: Context, private val mManager:
|
|
|
74
74
|
mMapView?.offscreenAnnotationViewContainer?.removeView(childView)
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
override fun setId(id: Int) {
|
|
78
|
+
super.setId(id)
|
|
79
|
+
mManager.tagAssigned(id)
|
|
80
|
+
}
|
|
81
|
+
|
|
77
82
|
override fun addToMap(mapView: RNMBXMapView) {
|
|
78
83
|
super.addToMap(mapView)
|
|
79
84
|
mMap = mapView.getMapboxMap()
|
|
@@ -9,10 +9,13 @@ import com.facebook.react.uimanager.annotations.ReactProp
|
|
|
9
9
|
import com.facebook.react.viewmanagers.RNMBXPointAnnotationManagerDelegate
|
|
10
10
|
import com.facebook.react.viewmanagers.RNMBXPointAnnotationManagerInterface
|
|
11
11
|
import com.rnmapbox.rnmbx.components.AbstractEventEmitter
|
|
12
|
+
import com.rnmapbox.rnmbx.components.styles.sources.RNMBXShapeSource
|
|
12
13
|
import com.rnmapbox.rnmbx.events.constants.EventKeys
|
|
14
|
+
import com.rnmapbox.rnmbx.events.constants.eventMapOf
|
|
13
15
|
import com.rnmapbox.rnmbx.utils.GeoJSONUtils.toPointGeometry
|
|
16
|
+
import com.rnmapbox.rnmbx.utils.ViewTagResolver
|
|
14
17
|
|
|
15
|
-
class RNMBXPointAnnotationManager(reactApplicationContext: ReactApplicationContext) : AbstractEventEmitter<RNMBXPointAnnotation>(reactApplicationContext),
|
|
18
|
+
class RNMBXPointAnnotationManager(reactApplicationContext: ReactApplicationContext, val viewTagResolver: ViewTagResolver) : AbstractEventEmitter<RNMBXPointAnnotation>(reactApplicationContext),
|
|
16
19
|
RNMBXPointAnnotationManagerInterface<RNMBXPointAnnotation> {
|
|
17
20
|
|
|
18
21
|
private val mDelegate: ViewManagerDelegate<RNMBXPointAnnotation>
|
|
@@ -30,13 +33,13 @@ class RNMBXPointAnnotationManager(reactApplicationContext: ReactApplicationConte
|
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
override fun customEvents(): Map<String, String> {
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
return eventMapOf(
|
|
37
|
+
EventKeys.POINT_ANNOTATION_SELECTED to "onMapboxPointAnnotationSelected",
|
|
38
|
+
EventKeys.POINT_ANNOTATION_DESELECTED to "onMapboxPointAnnotationDeselected",
|
|
39
|
+
EventKeys.POINT_ANNOTATION_DRAG_START to "onMapboxPointAnnotationDragStart",
|
|
40
|
+
EventKeys.POINT_ANNOTATION_DRAG to "onMapboxPointAnnotationDrag",
|
|
41
|
+
EventKeys.POINT_ANNOTATION_DRAG_END to "onMapboxPointAnnotationDragEnd"
|
|
42
|
+
)
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
// TODO: check why it does not work correctly
|
|
@@ -44,6 +47,17 @@ class RNMBXPointAnnotationManager(reactApplicationContext: ReactApplicationConte
|
|
|
44
47
|
return RNMBXPointAnnotation(reactContext!!, this)
|
|
45
48
|
}
|
|
46
49
|
|
|
50
|
+
override fun onDropViewInstance(view: RNMBXPointAnnotation) {
|
|
51
|
+
val reactTag = view.id
|
|
52
|
+
|
|
53
|
+
viewTagResolver.viewRemoved(reactTag)
|
|
54
|
+
super.onDropViewInstance(view)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
fun tagAssigned(reactTag: Int) {
|
|
58
|
+
return viewTagResolver.tagAssigned(reactTag)
|
|
59
|
+
}
|
|
60
|
+
|
|
47
61
|
@ReactProp(name = "id")
|
|
48
62
|
override fun setId(annotation: RNMBXPointAnnotation, id: Dynamic) {
|
|
49
63
|
annotation.iD = id.asString()
|
|
@@ -334,10 +334,10 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
|
|
|
334
334
|
if (location?.puckBearingEnabled == true) {
|
|
335
335
|
when (location.puckBearingSource) {
|
|
336
336
|
|
|
337
|
-
|
|
337
|
+
PuckBearing.HEADING -> {
|
|
338
338
|
UserTrackingMode.FollowWithHeading
|
|
339
339
|
}
|
|
340
|
-
|
|
340
|
+
PuckBearing.COURSE -> {
|
|
341
341
|
UserTrackingMode.FollowWithCourse
|
|
342
342
|
}
|
|
343
343
|
else -> {
|
|
@@ -468,12 +468,12 @@ class RNMBXCamera(private val mContext: Context, private val mManager: RNMBXCame
|
|
|
468
468
|
when (mFollowUserMode ?: "normal") {
|
|
469
469
|
"compass" -> {
|
|
470
470
|
location.puckBearingEnabled = true
|
|
471
|
-
location.puckBearingSource =
|
|
471
|
+
location.puckBearingSource = PuckBearing.HEADING
|
|
472
472
|
followOptions.bearing(FollowPuckViewportStateBearing.SyncWithLocationPuck)
|
|
473
473
|
}
|
|
474
474
|
"course" -> {
|
|
475
475
|
location.puckBearingEnabled = true
|
|
476
|
-
location.puckBearingSource =
|
|
476
|
+
location.puckBearingSource = PuckBearing.COURSE
|
|
477
477
|
followOptions.bearing(FollowPuckViewportStateBearing.SyncWithLocationPuck)
|
|
478
478
|
}
|
|
479
479
|
"normal" -> {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.camera
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.Dynamic
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.bridge.WritableArray
|
|
7
|
+
import com.facebook.react.bridge.WritableMap
|
|
8
|
+
import com.facebook.react.common.MapBuilder
|
|
9
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
10
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
11
|
+
import com.facebook.react.viewmanagers.RNMBXViewportManagerInterface
|
|
12
|
+
import com.rnmapbox.rnmbx.components.AbstractEventEmitter
|
|
13
|
+
import com.rnmapbox.rnmbx.events.constants.EventKeys
|
|
14
|
+
import com.rnmapbox.rnmbx.events.constants.eventMapOf
|
|
15
|
+
|
|
16
|
+
class RNMBXViewportManager(private val mContext: ReactApplicationContext) : AbstractEventEmitter<RNMBXViewport?>(
|
|
17
|
+
mContext
|
|
18
|
+
), RNMBXViewportManagerInterface<RNMBXViewport> {
|
|
19
|
+
|
|
20
|
+
override fun getName(): String {
|
|
21
|
+
return REACT_CLASS
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
override fun createViewInstance(reactContext: ThemedReactContext): RNMBXViewport {
|
|
25
|
+
return RNMBXViewport(reactContext, this)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@ReactProp(name = "transitionsToIdleUponUserInteraction")
|
|
29
|
+
override fun setTransitionsToIdleUponUserInteraction(view: RNMBXViewport?, value: Dynamic?) {
|
|
30
|
+
view?.transitionsToIdleUponUserInteraction = value?.asBoolean()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@ReactProp(name = "hasStatusChanged")
|
|
34
|
+
override fun setHasStatusChanged(view: RNMBXViewport?, value: Boolean) {
|
|
35
|
+
view?.hasStatusChanged = value
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//region Custom Events
|
|
39
|
+
override fun customEvents(): Map<String, String>? {
|
|
40
|
+
return eventMapOf(
|
|
41
|
+
EventKeys.VIEWPORT_STATUS_CHANGE to "onStatusChanged"
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override fun getCommandsMap(): Map<String, Int>? {
|
|
46
|
+
return mapOf(
|
|
47
|
+
"_useCommandName" to 1
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
//endregion
|
|
51
|
+
|
|
52
|
+
companion object {
|
|
53
|
+
const val REACT_CLASS = "RNMBXViewport"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
package com.rnmapbox.rnmbx.components.camera
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.util.Log
|
|
5
|
+
import androidx.annotation.RequiresPermission.Read
|
|
6
|
+
import com.facebook.react.bridge.Arguments
|
|
7
|
+
import com.facebook.react.bridge.Callback
|
|
8
|
+
import com.facebook.react.bridge.Promise
|
|
9
|
+
import com.facebook.react.bridge.ReadableMap
|
|
10
|
+
import com.facebook.react.bridge.UIManager
|
|
11
|
+
import com.facebook.react.bridge.WritableMap
|
|
12
|
+
import com.facebook.react.uimanager.UIManagerHelper
|
|
13
|
+
import com.mapbox.maps.MapView
|
|
14
|
+
import com.mapbox.maps.plugin.viewport.CompletionListener
|
|
15
|
+
import com.mapbox.maps.plugin.viewport.ViewportPlugin
|
|
16
|
+
import com.mapbox.maps.plugin.viewport.ViewportStatus
|
|
17
|
+
import com.mapbox.maps.plugin.viewport.ViewportStatusObserver
|
|
18
|
+
import com.mapbox.maps.plugin.viewport.data.DefaultViewportTransitionOptions
|
|
19
|
+
import com.mapbox.maps.plugin.viewport.data.ViewportStatusChangeReason
|
|
20
|
+
import com.mapbox.maps.plugin.viewport.state.FollowPuckViewportState
|
|
21
|
+
import com.mapbox.maps.plugin.viewport.state.OverviewViewportState
|
|
22
|
+
import com.mapbox.maps.plugin.viewport.state.ViewportState
|
|
23
|
+
import com.mapbox.maps.plugin.viewport.transition.DefaultViewportTransition
|
|
24
|
+
import com.mapbox.maps.plugin.viewport.transition.ViewportTransition
|
|
25
|
+
import com.mapbox.maps.plugin.viewport.viewport
|
|
26
|
+
import com.rnmapbox.rnmbx.components.AbstractMapFeature
|
|
27
|
+
import com.rnmapbox.rnmbx.components.mapview.RNMBXMapView
|
|
28
|
+
import com.rnmapbox.rnmbx.modules.RNMBXLogging
|
|
29
|
+
import com.rnmapbox.rnmbx.utils.Logger
|
|
30
|
+
import com.rnmapbox.rnmbx.utils.extensions.getAndLogIfNotBoolean
|
|
31
|
+
import com.rnmapbox.rnmbx.utils.extensions.getAndLogIfNotDouble
|
|
32
|
+
import com.rnmapbox.rnmbx.utils.extensions.getAndLogIfNotString
|
|
33
|
+
import com.rnmapbox.rnmbx.utils.writableMapOf
|
|
34
|
+
|
|
35
|
+
import com.facebook.react.uimanager.events.Event
|
|
36
|
+
import com.rnmapbox.rnmbx.events.constants.EventKeys
|
|
37
|
+
|
|
38
|
+
class BaseEvent(
|
|
39
|
+
private val surfaceId: Int,
|
|
40
|
+
private val viewTag: Int,
|
|
41
|
+
private val eventName: String,
|
|
42
|
+
private val eventData: WritableMap,
|
|
43
|
+
private val canCoalesce: Boolean = false
|
|
44
|
+
): Event<BaseEvent>(surfaceId, viewTag) {
|
|
45
|
+
override fun getEventName(): String {
|
|
46
|
+
return eventName
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override fun canCoalesce(): Boolean {
|
|
50
|
+
return canCoalesce
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
override fun getEventData(): WritableMap? {
|
|
54
|
+
return eventData
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
class RNMBXViewport(private val mContext: Context, private val mManager: RNMBXViewportManager) :
|
|
59
|
+
AbstractMapFeature(
|
|
60
|
+
mContext
|
|
61
|
+
) {
|
|
62
|
+
// region properties
|
|
63
|
+
var transitionsToIdleUponUserInteraction: Boolean? = null
|
|
64
|
+
set(value: Boolean?) {
|
|
65
|
+
field = value
|
|
66
|
+
if (value != null) {
|
|
67
|
+
mMapView?.let { applyTransitionsToIdleUponUserIntraction(it.mapView) }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
fun applyTransitionsToIdleUponUserIntraction(mapView: MapView) {
|
|
72
|
+
this.transitionsToIdleUponUserInteraction?.let {
|
|
73
|
+
mapView.viewport.options = mapView.viewport.options.toBuilder().transitionsToIdleUponUserInteraction(it).build()
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
var hasStatusChanged: Boolean = false
|
|
78
|
+
set(value: Boolean) {
|
|
79
|
+
field = value
|
|
80
|
+
mMapView?.let { applyHasStatusChanged(it.mapView) }
|
|
81
|
+
}
|
|
82
|
+
private var statusObserver: ViewportStatusObserver? = null
|
|
83
|
+
|
|
84
|
+
private fun applyHasStatusChanged(mapView: MapView) {
|
|
85
|
+
val viewport = mapView.viewport
|
|
86
|
+
if (hasStatusChanged) {
|
|
87
|
+
if (statusObserver == null) {
|
|
88
|
+
val statusObserver = ViewportStatusObserver { from, to, reason ->
|
|
89
|
+
val payload = writableMapOf("from" to statusToMap(from), "to" to statusToMap(to), "reason" to reasonToSrting(reason))
|
|
90
|
+
mManager.dispatchEvent(
|
|
91
|
+
BaseEvent(
|
|
92
|
+
UIManagerHelper.getSurfaceId(mContext),
|
|
93
|
+
id,
|
|
94
|
+
EventKeys.VIEWPORT_STATUS_CHANGE.value,
|
|
95
|
+
writableMapOf(
|
|
96
|
+
"type" to "statuschanged",
|
|
97
|
+
"payload" to payload
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
this.statusObserver = statusObserver
|
|
103
|
+
viewport.addStatusObserver(statusObserver)
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
statusObserver?.let {
|
|
107
|
+
viewport.removeStatusObserver(it)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// endregion
|
|
112
|
+
|
|
113
|
+
override fun addToMap(mapView: RNMBXMapView) {
|
|
114
|
+
super.addToMap(mapView)
|
|
115
|
+
applyTransitionsToIdleUponUserIntraction(mapView.mapView)
|
|
116
|
+
applyHasStatusChanged(mapView.mapView)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
fun toState(viewport: ViewportPlugin, state: ReadableMap): ViewportState? {
|
|
120
|
+
return when (val kind = state.getAndLogIfNotString("kind")) {
|
|
121
|
+
"followPuck" -> viewport.makeFollowPuckViewportState()
|
|
122
|
+
//"overview" -> return viewport.makeOverviewViewportState()
|
|
123
|
+
else -> {
|
|
124
|
+
Logger.e(LOG_TAG, "toState: unexpected state: $kind")
|
|
125
|
+
null
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
fun toDefaultViewportTransitionOptions(state: ReadableMap?): DefaultViewportTransitionOptions {
|
|
131
|
+
val builder = DefaultViewportTransitionOptions.Builder()
|
|
132
|
+
if (state?.hasKey("maxDurationMs") == true) {
|
|
133
|
+
val maxDurationMs = state.getAndLogIfNotDouble("maxDurationMs", LOG_TAG)
|
|
134
|
+
if (maxDurationMs != null) {
|
|
135
|
+
builder.maxDurationMs(maxDurationMs.toLong())
|
|
136
|
+
}
|
|
137
|
+
builder.build()
|
|
138
|
+
}
|
|
139
|
+
return builder.build()
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
fun toTransition(viewport: ViewportPlugin, state: ReadableMap?): ViewportTransition? {
|
|
143
|
+
viewport.idle()
|
|
144
|
+
return when (val kind = state?.getAndLogIfNotString("kind", LOG_TAG)) {
|
|
145
|
+
"default" -> viewport.makeDefaultViewportTransition(
|
|
146
|
+
toDefaultViewportTransitionOptions(state?.getMap("options"))
|
|
147
|
+
)
|
|
148
|
+
"immediate" -> viewport.makeImmediateViewportTransition()
|
|
149
|
+
null -> null
|
|
150
|
+
else -> {
|
|
151
|
+
Logger.e(LOG_TAG, "toTransition: unexpected transition to: $kind")
|
|
152
|
+
null
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
fun transitionTo(state: ReadableMap,
|
|
158
|
+
transition: ReadableMap?,
|
|
159
|
+
promise: Promise
|
|
160
|
+
) {
|
|
161
|
+
val mapView = mMapView
|
|
162
|
+
if (mapView == null) {
|
|
163
|
+
Logger.e(LOG_TAG, "transitionTo: mapView is null")
|
|
164
|
+
return
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
val toState = toState(mapView.mapView.viewport, state)
|
|
168
|
+
if (toState == null) {
|
|
169
|
+
Logger.e(LOG_TAG, "transitionTo: no state to transition to: $state")
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
val transition = toTransition(mapView.mapView.viewport, transition)
|
|
173
|
+
|
|
174
|
+
mapView.mapView.viewport.transitionTo(toState, transition, CompletionListener { promise.resolve(it) } )
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
fun idle() {
|
|
178
|
+
val mapView = mMapView
|
|
179
|
+
if (mapView == null) {
|
|
180
|
+
Logger.e(LOG_TAG, "transitionTo: mapView is null")
|
|
181
|
+
return
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
mapView.mapView.viewport.idle()
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private fun transitionToMap(transition: ViewportTransition): WritableMap? {
|
|
188
|
+
return when (transition) {
|
|
189
|
+
is DefaultViewportTransition -> writableMapOf("kind" to "default", "maxDurationMs" to transition.options.maxDurationMs)
|
|
190
|
+
else ->
|
|
191
|
+
if (transition.javaClass.toString().indexOf("ImmediateViewportTransition") >= 0) {
|
|
192
|
+
writableMapOf("kind" to "immediate")
|
|
193
|
+
} else {
|
|
194
|
+
writableMapOf("kind" to "unknown")
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
private fun stateToMap(state: ViewportState): WritableMap? {
|
|
200
|
+
return when (state) {
|
|
201
|
+
is FollowPuckViewportState -> writableMapOf("kind" to "followPuck")
|
|
202
|
+
is OverviewViewportState -> writableMapOf("kind" to "overview")
|
|
203
|
+
else -> {
|
|
204
|
+
writableMapOf("kind" to "custom", "impl" to state.javaClass.toString())
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
private fun statusToMap(status: ViewportStatus): WritableMap? {
|
|
210
|
+
return when (status) {
|
|
211
|
+
is ViewportStatus.Idle -> {
|
|
212
|
+
writableMapOf(
|
|
213
|
+
"kind" to "idle"
|
|
214
|
+
)
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
is ViewportStatus.State -> {
|
|
218
|
+
writableMapOf(
|
|
219
|
+
"kind" to "state",
|
|
220
|
+
"state" to stateToMap(status.state)
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
is ViewportStatus.Transition -> {
|
|
225
|
+
writableMapOf(
|
|
226
|
+
"kind" to "transition",
|
|
227
|
+
"transition" to transitionToMap(status.transition),
|
|
228
|
+
"toState" to stateToMap(status.toState)
|
|
229
|
+
)
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
private fun reasonToSrting(reason: ViewportStatusChangeReason): String {
|
|
235
|
+
return when (reason) {
|
|
236
|
+
ViewportStatusChangeReason.IDLE_REQUESTED -> "IdleRequested"
|
|
237
|
+
ViewportStatusChangeReason.TRANSITION_FAILED -> "TransitionFailed"
|
|
238
|
+
ViewportStatusChangeReason.TRANSITION_STARTED -> "TransitionStarted"
|
|
239
|
+
ViewportStatusChangeReason.USER_INTERACTION -> "UserInteraction"
|
|
240
|
+
ViewportStatusChangeReason.TRANSITION_SUCCEEDED -> "TransitionSucceeded"
|
|
241
|
+
else -> {
|
|
242
|
+
"Unknown:${reason.toString()}"
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
fun getState(): WritableMap? {
|
|
248
|
+
val mapView = mMapView
|
|
249
|
+
if (mapView == null) {
|
|
250
|
+
Logger.e(LOG_TAG, "getState: mapView is null")
|
|
251
|
+
return null
|
|
252
|
+
}
|
|
253
|
+
return statusToMap(mapView.mapView.viewport.status)
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
companion object {
|
|
257
|
+
const val LOG_TAG = "RNMBXViewport"
|
|
258
|
+
}
|
|
259
|
+
}
|