@rnmapbox/maps 10.0.0-beta.69 → 10.0.0-beta.71
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/rctmgl/build.gradle +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.kt +0 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +78 -53
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.kt +16 -13
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/LocationComponentManager.kt +125 -83
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocation.kt +33 -7
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.kt +32 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.kt +42 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +114 -38
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.kt +23 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.kt +21 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/LocationManager.kt +64 -25
- package/index.d.ts +14 -62
- package/ios/RCTMGL-v10/MGLModule.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLAtmosphere.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLBackgroundLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLCamera.swift +52 -26
- package/ios/RCTMGL-v10/RCTMGLCameraManager.m +5 -2
- package/ios/RCTMGL-v10/RCTMGLCircleLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLEvent.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLFillExtrustionLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLFillLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLHeatmapLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLImages.swift +54 -8
- package/ios/RCTMGL-v10/RCTMGLLayer.swift +4 -0
- package/ios/RCTMGL-v10/RCTMGLLight.swift +5 -3
- package/ios/RCTMGL-v10/RCTMGLLineLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLLocationModule.m +4 -0
- package/ios/RCTMGL-v10/RCTMGLLocationModule.swift +101 -5
- package/ios/RCTMGL-v10/RCTMGLMapView.swift +15 -2
- package/ios/RCTMGL-v10/RCTMGLRasterLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLSingletonLayer.swift +4 -0
- package/ios/RCTMGL-v10/RCTMGLSkyLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLStyle.swift +58 -123
- package/ios/RCTMGL-v10/RCTMGLStyleValue.swift +51 -5
- package/ios/RCTMGL-v10/RCTMGLSymbolLayer.swift +1 -0
- package/ios/RCTMGL-v10/RCTMGLTerrain.swift +1 -0
- package/ios/install.md +1 -1
- package/javascript/components/Camera.tsx +7 -3
- package/javascript/components/Images.tsx +133 -0
- package/javascript/components/MapView.js +22 -2
- package/javascript/modules/location/locationManager.ts +227 -0
- package/javascript/utils/MapboxStyles.d.ts +3 -3
- package/javascript/utils/styleMap.ts +2 -2
- package/lib/commonjs/classes/AnimatedCoordinatesArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js +2 -5
- package/lib/commonjs/classes/AnimatedExtractCoordinateFromArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedPoint.js.map +1 -1
- package/lib/commonjs/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
- package/lib/commonjs/classes/AnimatedShape.js.map +1 -1
- package/lib/commonjs/classes/index.d.js.map +1 -1
- package/lib/commonjs/classes/index.js.map +1 -1
- package/lib/commonjs/components/AbstractLayer.js +6 -10
- package/lib/commonjs/components/AbstractLayer.js.map +1 -1
- package/lib/commonjs/components/AbstractSource.js +3 -10
- package/lib/commonjs/components/AbstractSource.js.map +1 -1
- package/lib/commonjs/components/Atmosphere.js.map +1 -1
- package/lib/commonjs/components/BackgroundLayer.js +3 -6
- package/lib/commonjs/components/BackgroundLayer.js.map +1 -1
- package/lib/commonjs/components/Callout.js +27 -30
- package/lib/commonjs/components/Callout.js.map +1 -1
- package/lib/commonjs/components/Camera.js +3 -1
- package/lib/commonjs/components/Camera.js.map +1 -1
- package/lib/commonjs/components/CircleLayer.js +3 -6
- package/lib/commonjs/components/CircleLayer.js.map +1 -1
- package/lib/commonjs/components/FillExtrusionLayer.js +3 -6
- package/lib/commonjs/components/FillExtrusionLayer.js.map +1 -1
- package/lib/commonjs/components/FillLayer.js +3 -6
- package/lib/commonjs/components/FillLayer.js.map +1 -1
- package/lib/commonjs/components/HeadingIndicator.js.map +1 -1
- package/lib/commonjs/components/HeatmapLayer.js +3 -6
- package/lib/commonjs/components/HeatmapLayer.js.map +1 -1
- package/lib/commonjs/components/ImageSource.js +16 -19
- package/lib/commonjs/components/ImageSource.js.map +1 -1
- package/lib/commonjs/components/Images.js +3 -34
- package/lib/commonjs/components/Images.js.map +1 -1
- package/lib/commonjs/components/Light.js +7 -10
- package/lib/commonjs/components/Light.js.map +1 -1
- package/lib/commonjs/components/LineLayer.js +3 -6
- package/lib/commonjs/components/LineLayer.js.map +1 -1
- package/lib/commonjs/components/MapView.js +241 -227
- package/lib/commonjs/components/MapView.js.map +1 -1
- package/lib/commonjs/components/MarkerView.js +9 -16
- package/lib/commonjs/components/MarkerView.js.map +1 -1
- package/lib/commonjs/components/NativeBridgeComponent.js +0 -7
- package/lib/commonjs/components/NativeBridgeComponent.js.map +1 -1
- package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
- package/lib/commonjs/components/PointAnnotation.js +8 -11
- package/lib/commonjs/components/PointAnnotation.js.map +1 -1
- package/lib/commonjs/components/RasterDemSource.js +36 -39
- package/lib/commonjs/components/RasterDemSource.js.map +1 -1
- package/lib/commonjs/components/RasterLayer.js +3 -6
- package/lib/commonjs/components/RasterLayer.js.map +1 -1
- package/lib/commonjs/components/RasterSource.js +45 -48
- package/lib/commonjs/components/RasterSource.js.map +1 -1
- package/lib/commonjs/components/ShapeSource.js +4 -7
- package/lib/commonjs/components/ShapeSource.js.map +1 -1
- package/lib/commonjs/components/SkyLayer.js +3 -6
- package/lib/commonjs/components/SkyLayer.js.map +1 -1
- package/lib/commonjs/components/Style.js.map +1 -1
- package/lib/commonjs/components/SymbolLayer.js +3 -6
- package/lib/commonjs/components/SymbolLayer.js.map +1 -1
- package/lib/commonjs/components/Terrain.js.map +1 -1
- package/lib/commonjs/components/UserLocation.js +65 -69
- package/lib/commonjs/components/UserLocation.js.map +1 -1
- package/lib/commonjs/components/VectorSource.js +63 -66
- package/lib/commonjs/components/VectorSource.js.map +1 -1
- package/lib/commonjs/components/annotations/Annotation.js +16 -19
- package/lib/commonjs/components/annotations/Annotation.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/modules/location/locationManager.js +37 -9
- package/lib/commonjs/modules/location/locationManager.js.map +1 -1
- package/lib/commonjs/modules/offline/OfflineCreatePackOptions.js.map +1 -1
- package/lib/commonjs/modules/offline/OfflinePack.js.map +1 -1
- package/lib/commonjs/modules/offline/offlineManager.js.map +1 -1
- package/lib/commonjs/modules/snapshot/SnapshotOptions.js.map +1 -1
- package/lib/commonjs/modules/snapshot/snapshotManager.js.map +1 -1
- package/lib/commonjs/requestAndroidLocationPermissions.js.map +1 -1
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/commonjs/utils/BridgeValue.js +0 -4
- package/lib/commonjs/utils/BridgeValue.js.map +1 -1
- package/lib/commonjs/utils/Logger.js +1 -4
- package/lib/commonjs/utils/Logger.js.map +1 -1
- package/lib/commonjs/utils/MapboxStyles.d.js.map +1 -1
- package/lib/commonjs/utils/StyleValue.js.map +1 -1
- package/lib/commonjs/utils/animated/Animated.js.map +1 -1
- package/lib/commonjs/utils/deprecation.js.map +1 -1
- package/lib/commonjs/utils/filterUtils.js.map +1 -1
- package/lib/commonjs/utils/geoUtils.d.js.map +1 -1
- package/lib/commonjs/utils/geoUtils.js.map +1 -1
- package/lib/commonjs/utils/getAnnotationsLayerID.js.map +1 -1
- package/lib/commonjs/utils/index.d.js.map +1 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/styleMap.js +2 -2
- package/lib/commonjs/utils/styleMap.js.map +1 -1
- package/lib/commonjs/web/MapContext.js.map +1 -1
- package/lib/commonjs/web/MapboxModule.js.map +1 -1
- package/lib/commonjs/web/UnimplementedComponent.js.map +1 -1
- package/lib/commonjs/web/components/Camera.js +2 -9
- package/lib/commonjs/web/components/Camera.js.map +1 -1
- package/lib/commonjs/web/components/MapView.js +5 -11
- package/lib/commonjs/web/components/MapView.js.map +1 -1
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/commonjs/web/utils/Logger.js +3 -7
- package/lib/commonjs/web/utils/Logger.js.map +1 -1
- package/lib/module/classes/AnimatedCoordinatesArray.js.map +1 -1
- package/lib/module/classes/AnimatedExtractCoordinateFromArray.js +2 -5
- package/lib/module/classes/AnimatedExtractCoordinateFromArray.js.map +1 -1
- package/lib/module/classes/AnimatedPoint.js.map +1 -1
- package/lib/module/classes/AnimatedRouteCoordinatesArray.js.map +1 -1
- package/lib/module/classes/AnimatedShape.js.map +1 -1
- package/lib/module/classes/index.d.js.map +1 -1
- package/lib/module/classes/index.js.map +1 -1
- package/lib/module/components/AbstractLayer.js +4 -10
- package/lib/module/components/AbstractLayer.js.map +1 -1
- package/lib/module/components/AbstractSource.js +3 -10
- package/lib/module/components/AbstractSource.js.map +1 -1
- package/lib/module/components/Atmosphere.js.map +1 -1
- package/lib/module/components/BackgroundLayer.js +3 -6
- package/lib/module/components/BackgroundLayer.js.map +1 -1
- package/lib/module/components/Callout.js +27 -30
- package/lib/module/components/Callout.js.map +1 -1
- package/lib/module/components/Camera.js +3 -1
- package/lib/module/components/Camera.js.map +1 -1
- package/lib/module/components/CircleLayer.js +3 -6
- package/lib/module/components/CircleLayer.js.map +1 -1
- package/lib/module/components/FillExtrusionLayer.js +3 -6
- package/lib/module/components/FillExtrusionLayer.js.map +1 -1
- package/lib/module/components/FillLayer.js +3 -6
- package/lib/module/components/FillLayer.js.map +1 -1
- package/lib/module/components/HeadingIndicator.js.map +1 -1
- package/lib/module/components/HeatmapLayer.js +3 -6
- package/lib/module/components/HeatmapLayer.js.map +1 -1
- package/lib/module/components/ImageSource.js +16 -19
- package/lib/module/components/ImageSource.js.map +1 -1
- package/lib/module/components/Images.js +3 -34
- package/lib/module/components/Images.js.map +1 -1
- package/lib/module/components/Light.js +7 -10
- package/lib/module/components/Light.js.map +1 -1
- package/lib/module/components/LineLayer.js +3 -6
- package/lib/module/components/LineLayer.js.map +1 -1
- package/lib/module/components/MapView.js +241 -227
- package/lib/module/components/MapView.js.map +1 -1
- package/lib/module/components/MarkerView.js +9 -16
- package/lib/module/components/MarkerView.js.map +1 -1
- package/lib/module/components/NativeBridgeComponent.js +0 -7
- package/lib/module/components/NativeBridgeComponent.js.map +1 -1
- package/lib/module/components/NativeUserLocation.js.map +1 -1
- package/lib/module/components/PointAnnotation.js +8 -11
- package/lib/module/components/PointAnnotation.js.map +1 -1
- package/lib/module/components/RasterDemSource.js +36 -39
- package/lib/module/components/RasterDemSource.js.map +1 -1
- package/lib/module/components/RasterLayer.js +3 -6
- package/lib/module/components/RasterLayer.js.map +1 -1
- package/lib/module/components/RasterSource.js +45 -48
- package/lib/module/components/RasterSource.js.map +1 -1
- package/lib/module/components/ShapeSource.js +4 -7
- package/lib/module/components/ShapeSource.js.map +1 -1
- package/lib/module/components/SkyLayer.js +3 -6
- package/lib/module/components/SkyLayer.js.map +1 -1
- package/lib/module/components/Style.js.map +1 -1
- package/lib/module/components/SymbolLayer.js +3 -6
- package/lib/module/components/SymbolLayer.js.map +1 -1
- package/lib/module/components/Terrain.js.map +1 -1
- package/lib/module/components/UserLocation.js +65 -69
- package/lib/module/components/UserLocation.js.map +1 -1
- package/lib/module/components/VectorSource.js +63 -66
- package/lib/module/components/VectorSource.js.map +1 -1
- package/lib/module/components/annotations/Annotation.js +16 -19
- package/lib/module/components/annotations/Annotation.js.map +1 -1
- package/lib/module/modules/location/locationManager.js +38 -9
- package/lib/module/modules/location/locationManager.js.map +1 -1
- package/lib/module/modules/offline/OfflineCreatePackOptions.js.map +1 -1
- package/lib/module/modules/offline/OfflinePack.js.map +1 -1
- package/lib/module/modules/offline/offlineManager.js.map +1 -1
- package/lib/module/modules/snapshot/SnapshotOptions.js.map +1 -1
- package/lib/module/modules/snapshot/snapshotManager.js.map +1 -1
- package/lib/module/requestAndroidLocationPermissions.js.map +1 -1
- package/lib/module/types/index.js.map +1 -1
- package/lib/module/utils/BridgeValue.js +0 -4
- package/lib/module/utils/BridgeValue.js.map +1 -1
- package/lib/module/utils/Logger.js +1 -4
- package/lib/module/utils/Logger.js.map +1 -1
- package/lib/module/utils/MapboxStyles.d.js.map +1 -1
- package/lib/module/utils/StyleValue.js.map +1 -1
- package/lib/module/utils/animated/Animated.js.map +1 -1
- package/lib/module/utils/deprecation.js.map +1 -1
- package/lib/module/utils/filterUtils.js.map +1 -1
- package/lib/module/utils/geoUtils.d.js.map +1 -1
- package/lib/module/utils/geoUtils.js.map +1 -1
- package/lib/module/utils/getAnnotationsLayerID.js.map +1 -1
- package/lib/module/utils/index.d.js.map +1 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/styleMap.js +2 -2
- package/lib/module/utils/styleMap.js.map +1 -1
- package/lib/module/web/MapContext.js.map +1 -1
- package/lib/module/web/MapboxModule.js.map +1 -1
- package/lib/module/web/UnimplementedComponent.js.map +1 -1
- package/lib/module/web/components/Camera.js +2 -9
- package/lib/module/web/components/Camera.js.map +1 -1
- package/lib/module/web/components/MapView.js +5 -11
- package/lib/module/web/components/MapView.js.map +1 -1
- package/lib/module/web/index.js.map +1 -1
- package/lib/module/web/utils/Logger.js +3 -7
- package/lib/module/web/utils/Logger.js.map +1 -1
- package/lib/typescript/components/Camera.d.ts +4 -2
- package/lib/typescript/components/Camera.d.ts.map +1 -1
- package/lib/typescript/components/Images.d.ts +57 -0
- package/lib/typescript/components/Images.d.ts.map +1 -0
- package/lib/typescript/modules/location/locationManager.d.ts +87 -0
- package/lib/typescript/modules/location/locationManager.d.ts.map +1 -0
- package/lib/typescript/utils/styleMap.d.ts +2 -2
- package/package.json +1 -1
- package/rnmapbox-maps.podspec +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RCTMGLNativeUserLocationManager.java +0 -34
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/RenderMode.kt +0 -21
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.java +0 -54
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/helpers/CameraChangeTracker.java +0 -37
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/location/UserLocationVerticalAlignment.java +0 -7
- package/javascript/components/Images.js +0 -118
- package/javascript/modules/location/locationManager.js +0 -136
|
@@ -130,7 +130,7 @@ dependencies {
|
|
|
130
130
|
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:5.1.0'
|
|
131
131
|
}
|
|
132
132
|
else if (safeExtGet("RNMapboxMapsImpl", defaultMapboxMapsImpl) == "mapbox") {
|
|
133
|
-
implementation 'com.mapbox.maps:android:10.11.
|
|
133
|
+
implementation 'com.mapbox.maps:android:10.11.1'
|
|
134
134
|
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:6.10.0'
|
|
135
135
|
implementation 'androidx.asynclayoutinflater:asynclayoutinflater:1.0.0'
|
|
136
136
|
}
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerView.kt
CHANGED
|
@@ -13,7 +13,6 @@ import com.mapbox.maps.ViewAnnotationOptions
|
|
|
13
13
|
import com.mapbox.maps.viewannotation.viewAnnotationOptions
|
|
14
14
|
import com.mapbox.rctmgl.components.AbstractMapFeature
|
|
15
15
|
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
16
|
-
import com.mapbox.rctmgl.modules.RCTMGLLogging
|
|
17
16
|
import com.mapbox.rctmgl.utils.Logger
|
|
18
17
|
import java.util.Vector
|
|
19
18
|
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt
CHANGED
|
@@ -3,50 +3,35 @@ package com.mapbox.rctmgl.components.camera
|
|
|
3
3
|
import android.animation.Animator
|
|
4
4
|
import android.content.Context
|
|
5
5
|
import android.location.Location
|
|
6
|
-
import com.
|
|
6
|
+
import com.facebook.react.bridge.ReadableMap
|
|
7
7
|
import com.mapbox.maps.plugin.gestures.gestures
|
|
8
8
|
import com.mapbox.rctmgl.location.LocationManager.Companion.getInstance
|
|
9
|
-
import com.mapbox.maps.plugin.animation.camera
|
|
10
|
-
import com.mapbox.rctmgl.utils.GeoJSONUtils.toLocation
|
|
11
|
-
import com.mapbox.maps.plugin.animation.MapAnimationOptions.Builder
|
|
12
9
|
import com.mapbox.maps.plugin.animation.flyTo
|
|
13
|
-
import com.mapbox.rctmgl.components.camera.RCTMGLCameraManager
|
|
14
10
|
import com.mapbox.rctmgl.components.AbstractMapFeature
|
|
15
11
|
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
16
|
-
import com.mapbox.rctmgl.components.camera.CameraStop
|
|
17
|
-
import com.mapbox.rctmgl.components.camera.CameraUpdateQueue
|
|
18
12
|
import com.mapbox.rctmgl.components.location.LocationComponentManager
|
|
19
13
|
import com.mapbox.rctmgl.utils.LatLngBounds
|
|
20
|
-
import com.mapbox.rctmgl.location.LocationManager.OnUserLocationChange
|
|
21
|
-
import com.mapbox.rctmgl.utils.GeoJSONUtils
|
|
22
14
|
import com.mapbox.maps.plugin.locationcomponent.OnIndicatorBearingChangedListener
|
|
23
15
|
import com.mapbox.maps.plugin.locationcomponent.OnIndicatorPositionChangedListener
|
|
24
|
-
import com.mapbox.rctmgl.components.camera.CameraUpdateItem
|
|
25
|
-
import com.mapbox.rctmgl.events.IEvent
|
|
26
|
-
import com.mapbox.rctmgl.events.MapChangeEvent
|
|
27
|
-
import com.mapbox.rctmgl.events.constants.EventTypes
|
|
28
|
-
import com.mapbox.rctmgl.components.camera.RCTMGLCamera
|
|
29
|
-
import com.mapbox.android.core.permissions.PermissionsManager
|
|
30
|
-
import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
|
|
31
16
|
import com.facebook.react.bridge.WritableMap
|
|
32
17
|
import com.facebook.react.bridge.WritableNativeMap
|
|
33
|
-
import com.mapbox.geojson.Point
|
|
34
18
|
import com.mapbox.maps.*
|
|
35
19
|
import com.mapbox.maps.plugin.PuckBearingSource
|
|
36
20
|
import com.mapbox.maps.plugin.locationcomponent.location
|
|
37
21
|
import com.mapbox.maps.plugin.locationcomponent.location2
|
|
22
|
+
import com.mapbox.maps.plugin.viewport.ViewportStatus
|
|
23
|
+
import com.mapbox.maps.plugin.viewport.ViewportStatusObserver
|
|
38
24
|
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateBearing
|
|
39
25
|
import com.mapbox.maps.plugin.viewport.data.FollowPuckViewportStateOptions
|
|
26
|
+
import com.mapbox.maps.plugin.viewport.data.ViewportStatusChangeReason
|
|
40
27
|
import com.mapbox.maps.plugin.viewport.viewport
|
|
41
28
|
import com.mapbox.rctmgl.components.camera.constants.CameraMode
|
|
42
29
|
import com.mapbox.rctmgl.components.location.*
|
|
30
|
+
import com.mapbox.rctmgl.events.MapUserTrackingModeEvent
|
|
43
31
|
import com.mapbox.rctmgl.location.*
|
|
44
|
-
import com.mapbox.rctmgl.modules.RCTMGLLogging
|
|
45
|
-
import com.mapbox.rctmgl.utils.LatLng
|
|
46
32
|
import com.mapbox.rctmgl.utils.Logger
|
|
47
33
|
|
|
48
34
|
|
|
49
|
-
|
|
50
35
|
class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCameraManager) :
|
|
51
36
|
AbstractMapFeature(
|
|
52
37
|
mContext
|
|
@@ -62,21 +47,24 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
62
47
|
private var mLocationComponentManager: LocationComponentManager? = null
|
|
63
48
|
private var mUserTrackingMode = 0
|
|
64
49
|
private var mUserTrackingState = UserTrackingState.POSSIBLE
|
|
65
|
-
private val mUserLocationVerticalAlignment = UserLocationVerticalAlignment.CENTER
|
|
66
50
|
private val mLocationManager: LocationManager?
|
|
67
51
|
private val mUserLocation: UserLocation = UserLocation()
|
|
68
52
|
private val mCenterCoordinate: ScreenCoordinate? = null
|
|
69
53
|
private val mAnimated = false
|
|
70
54
|
private val mHeading = 0.0
|
|
71
|
-
|
|
55
|
+
|
|
56
|
+
private var mFollowUserLocation = false
|
|
57
|
+
private var mFollowUserMode: String? = null
|
|
72
58
|
private var mFollowZoomLevel : Double? = null
|
|
59
|
+
private var mFollowPitch : Double? = null
|
|
73
60
|
private var mFollowHeading : Double? = null
|
|
61
|
+
private var mFollowPadding : EdgeInsets? = null
|
|
62
|
+
|
|
74
63
|
private var mZoomLevel = -1.0
|
|
75
64
|
private var mMinZoomLevel : Double? = null
|
|
76
65
|
private var mMaxZoomLevel : Double? = null
|
|
77
66
|
private var mMaxBounds: LatLngBounds? = null
|
|
78
|
-
|
|
79
|
-
private var mFollowUserMode: String? = null
|
|
67
|
+
|
|
80
68
|
|
|
81
69
|
private val mLocationBearingChangedListener = OnIndicatorBearingChangedListener { v ->
|
|
82
70
|
if (mFollowUserLocation) {
|
|
@@ -113,7 +101,8 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
113
101
|
setInitialCamera()
|
|
114
102
|
updateMaxBounds()
|
|
115
103
|
mCameraStop?.let { updateCamera(it) }
|
|
116
|
-
|
|
104
|
+
_observeViewportState(mapView)
|
|
105
|
+
_updateViewportState()
|
|
117
106
|
}
|
|
118
107
|
|
|
119
108
|
override fun removeFromMap(mapView: RCTMGLMapView) {
|
|
@@ -131,9 +120,14 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
131
120
|
mDefaultStop = stop
|
|
132
121
|
}
|
|
133
122
|
|
|
134
|
-
fun
|
|
135
|
-
|
|
136
|
-
_updateViewportState()
|
|
123
|
+
fun setFollowUserMode(mode: String?) {
|
|
124
|
+
mFollowUserMode = mode
|
|
125
|
+
_updateViewportState()
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
fun setFollowUserLocation(value: Boolean) {
|
|
129
|
+
mFollowUserLocation = value
|
|
130
|
+
_updateViewportState()
|
|
137
131
|
}
|
|
138
132
|
|
|
139
133
|
fun setFollowZoomLevel(zoomLevel: Double) {
|
|
@@ -141,11 +135,30 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
141
135
|
_updateViewportState();
|
|
142
136
|
}
|
|
143
137
|
|
|
138
|
+
fun setFollowPitch(pitch: Double) {
|
|
139
|
+
mFollowPitch = pitch
|
|
140
|
+
_updateViewportState();
|
|
141
|
+
}
|
|
142
|
+
|
|
144
143
|
fun setFollowHeading(heading: Double) {
|
|
145
144
|
mFollowHeading = heading
|
|
146
145
|
_updateViewportState();
|
|
147
146
|
}
|
|
148
147
|
|
|
148
|
+
fun setFollowPadding(padding: ReadableMap) {
|
|
149
|
+
// scale padding by pixel ratio
|
|
150
|
+
val metrics = context.resources.displayMetrics
|
|
151
|
+
val edgeInsets = EdgeInsets(
|
|
152
|
+
if (padding.hasKey("paddingTop")) padding.getDouble("paddingTop") * metrics.density else 0.0,
|
|
153
|
+
if (padding.hasKey("paddingLeft")) padding.getDouble("paddingLeft") * metrics.density else 0.0,
|
|
154
|
+
if (padding.hasKey("paddingBottom")) padding.getDouble("paddingBottom") * metrics.density else 0.0,
|
|
155
|
+
if (padding.hasKey("paddingRight")) padding.getDouble("paddingRight") * metrics.density else 0.0,
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
mFollowPadding = edgeInsets
|
|
159
|
+
_updateViewportState();
|
|
160
|
+
}
|
|
161
|
+
|
|
149
162
|
fun setMaxBounds(bounds: LatLngBounds?) {
|
|
150
163
|
mMaxBounds = bounds
|
|
151
164
|
updateMaxBounds()
|
|
@@ -182,14 +195,6 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
182
195
|
mCameraUpdateQueue.execute(mMapView)
|
|
183
196
|
}
|
|
184
197
|
|
|
185
|
-
private fun updateUserTrackingMode(userTrackingMode: Int) {
|
|
186
|
-
/* v10todo
|
|
187
|
-
mUserLocation.setTrackingMode(userTrackingMode);
|
|
188
|
-
IEvent event = new MapUserTrackingModeEvent(this, userTrackingMode);
|
|
189
|
-
mManager.handleEvent(event);
|
|
190
|
-
*/
|
|
191
|
-
}
|
|
192
|
-
|
|
193
198
|
private fun updateUserLocation(isAnimated: Boolean) {
|
|
194
199
|
|
|
195
200
|
}
|
|
@@ -224,7 +229,7 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
224
229
|
if (mLocationComponentManager == null) {
|
|
225
230
|
mLocationComponentManager = mMapView!!.locationComponentManager
|
|
226
231
|
}
|
|
227
|
-
mLocationComponentManager!!.update(
|
|
232
|
+
mLocationComponentManager!!.update()
|
|
228
233
|
}
|
|
229
234
|
|
|
230
235
|
fun setMinZoomLevel(zoomLevel: Double?) {
|
|
@@ -269,7 +274,7 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
269
274
|
fun setUserTrackingMode(userTrackingMode: Int) {
|
|
270
275
|
val oldTrackingMode = mUserTrackingMode
|
|
271
276
|
mUserTrackingMode = userTrackingMode
|
|
272
|
-
|
|
277
|
+
mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, userTrackingMode))
|
|
273
278
|
when (mUserTrackingMode) {
|
|
274
279
|
UserTrackingMode.NONE -> mUserTrackingState = UserTrackingState.POSSIBLE
|
|
275
280
|
UserTrackingMode.FOLLOW, UserTrackingMode.FollowWithCourse, UserTrackingMode.FollowWithHeading -> if (oldTrackingMode == UserTrackingMode.NONE) {
|
|
@@ -281,15 +286,33 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
281
286
|
}
|
|
282
287
|
}
|
|
283
288
|
|
|
284
|
-
fun
|
|
285
|
-
|
|
286
|
-
|
|
289
|
+
fun _observeViewportState(mapView: MapView) {
|
|
290
|
+
mapView.viewport.addStatusObserver(object: ViewportStatusObserver {
|
|
291
|
+
override fun onViewportStatusChanged(
|
|
292
|
+
from: ViewportStatus,
|
|
293
|
+
to: ViewportStatus,
|
|
294
|
+
reason: ViewportStatusChangeReason
|
|
295
|
+
) {
|
|
296
|
+
if (to == ViewportStatus.Idle) {
|
|
297
|
+
mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, UserTrackingMode.NONE))
|
|
298
|
+
} else if (to is ViewportStatus.Transition) {
|
|
299
|
+
|
|
300
|
+
} else if (to is ViewportStatus.State){
|
|
301
|
+
//mManager.handleEvent(MapUserTrackingModeEvent(this@RCTMGLCamera, UserTrackingMode.FOLLOW))
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
})
|
|
287
305
|
}
|
|
288
306
|
|
|
289
307
|
fun _updateViewportState() {
|
|
290
308
|
mMapView?.let {
|
|
291
309
|
val map = it
|
|
292
310
|
val viewport = map.viewport;
|
|
311
|
+
|
|
312
|
+
if (mLocationComponentManager == null) {
|
|
313
|
+
mLocationComponentManager = it.locationComponentManager
|
|
314
|
+
}
|
|
315
|
+
|
|
293
316
|
if (mFollowUserLocation == false) {
|
|
294
317
|
viewport.idle()
|
|
295
318
|
mLocationComponentManager?.setFollowLocation(false)
|
|
@@ -298,10 +321,10 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
298
321
|
|
|
299
322
|
mLocationComponentManager?.setFollowLocation(true)
|
|
300
323
|
mLocationManager?.let {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
324
|
+
val provider = map.location.getLocationProvider()
|
|
325
|
+
if (provider != null) {
|
|
326
|
+
it.provider = provider
|
|
327
|
+
}
|
|
305
328
|
}
|
|
306
329
|
|
|
307
330
|
val location = map.location2
|
|
@@ -334,15 +357,22 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
334
357
|
}
|
|
335
358
|
}
|
|
336
359
|
|
|
360
|
+
when(val it=mFollowZoomLevel) {
|
|
361
|
+
null -> followOptions.zoom(cameraState.zoom)
|
|
362
|
+
else -> followOptions.zoom(it)
|
|
363
|
+
}
|
|
364
|
+
|
|
337
365
|
when(val it=mFollowPitch) {
|
|
338
366
|
null -> followOptions.pitch(cameraState.pitch)
|
|
339
367
|
else -> followOptions.pitch(it)
|
|
340
368
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
369
|
+
|
|
370
|
+
when(val it=mFollowPadding) {
|
|
371
|
+
null -> followOptions.padding(cameraState.padding)
|
|
372
|
+
else -> followOptions.padding(it)
|
|
344
373
|
}
|
|
345
374
|
|
|
375
|
+
|
|
346
376
|
val followState = viewport.makeFollowPuckViewportState(followOptions.build())
|
|
347
377
|
viewport.transitionTo(followState)
|
|
348
378
|
}
|
|
@@ -353,11 +383,6 @@ class RCTMGLCamera(private val mContext: Context, private val mManager: RCTMGLCa
|
|
|
353
383
|
}
|
|
354
384
|
}
|
|
355
385
|
|
|
356
|
-
fun setFollowUserMode(mode: String?) {
|
|
357
|
-
mFollowUserMode = mode
|
|
358
|
-
_updateViewportState()
|
|
359
|
-
}
|
|
360
|
-
|
|
361
386
|
private fun updatedFollowUserMode() {
|
|
362
387
|
if (mFollowUserLocation) {
|
|
363
388
|
setUserTrackingMode(UserTrackingMode.fromString(mFollowUserMode))
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.kt
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
package com.mapbox.rctmgl.components.camera
|
|
2
|
-
|
|
3
2
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
3
|
import com.facebook.react.bridge.ReadableMap
|
|
5
4
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
@@ -10,7 +9,6 @@ import com.mapbox.rctmgl.components.camera.CameraStop.Companion.fromReadableMap
|
|
|
10
9
|
import com.mapbox.rctmgl.utils.GeoJSONUtils.toLatLngBounds
|
|
11
10
|
|
|
12
11
|
|
|
13
|
-
//import com.mapbox.rctmgl.utils.GeoJSONUtils;
|
|
14
12
|
class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
|
|
15
13
|
AbstractEventEmitter<RCTMGLCamera?>(
|
|
16
14
|
mContext
|
|
@@ -54,6 +52,16 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
|
|
|
54
52
|
camera.setZoomLevel(zoomLevel)
|
|
55
53
|
}
|
|
56
54
|
|
|
55
|
+
@ReactProp(name = "minZoomLevel")
|
|
56
|
+
fun setMinZoomLevel(camera: RCTMGLCamera, value: Double) {
|
|
57
|
+
camera.setMinZoomLevel(value)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@ReactProp(name = "maxZoomLevel")
|
|
61
|
+
fun setMaxZoomLevel(camera: RCTMGLCamera, value: Double) {
|
|
62
|
+
camera.setMaxZoomLevel(value)
|
|
63
|
+
}
|
|
64
|
+
|
|
57
65
|
@ReactProp(name = "followUserLocation")
|
|
58
66
|
fun setFollowUserLocation(camera: RCTMGLCamera, value: Boolean) {
|
|
59
67
|
camera.setFollowUserLocation(value)
|
|
@@ -64,14 +72,9 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
|
|
|
64
72
|
camera.setFollowUserMode(value)
|
|
65
73
|
}
|
|
66
74
|
|
|
67
|
-
@ReactProp(name = "
|
|
68
|
-
fun
|
|
69
|
-
camera.
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
@ReactProp(name = "maxZoomLevel")
|
|
73
|
-
fun setMaxZoomLevel(camera: RCTMGLCamera, value: Double) {
|
|
74
|
-
camera.setMaxZoomLevel(value)
|
|
75
|
+
@ReactProp(name = "followZoomLevel")
|
|
76
|
+
fun setFollowZoomLevel(camera: RCTMGLCamera, value: Double) {
|
|
77
|
+
camera.setFollowZoomLevel(value)
|
|
75
78
|
}
|
|
76
79
|
|
|
77
80
|
@ReactProp(name = "followPitch")
|
|
@@ -84,9 +87,9 @@ class RCTMGLCameraManager(private val mContext: ReactApplicationContext) :
|
|
|
84
87
|
camera.setFollowHeading(value)
|
|
85
88
|
}
|
|
86
89
|
|
|
87
|
-
@ReactProp(name = "
|
|
88
|
-
fun
|
|
89
|
-
camera.
|
|
90
|
+
@ReactProp(name = "followPadding")
|
|
91
|
+
fun setFollowPadding(camera: RCTMGLCamera, value: ReadableMap) {
|
|
92
|
+
camera.setFollowPadding(value)
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
@ReactProp(name = "maxBounds")
|
|
@@ -2,124 +2,166 @@ package com.mapbox.rctmgl.components.location
|
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.graphics.Color
|
|
5
|
+
import android.graphics.drawable.Drawable
|
|
5
6
|
import android.graphics.drawable.VectorDrawable
|
|
6
7
|
import androidx.appcompat.content.res.AppCompatResources
|
|
8
|
+
import androidx.lifecycle.Lifecycle
|
|
7
9
|
import com.mapbox.maps.plugin.locationcomponent.location
|
|
8
10
|
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
9
|
-
import com.mapbox.maps.Style
|
|
10
11
|
import com.mapbox.maps.plugin.LocationPuck2D
|
|
12
|
+
import com.mapbox.maps.plugin.PuckBearingSource
|
|
13
|
+
import com.mapbox.maps.plugin.lifecycle.lifecycle
|
|
11
14
|
import com.mapbox.rctmgl.R
|
|
12
15
|
import com.mapbox.rctmgl.location.LocationManager
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* The LocationComponent on android implements display of user's current location.
|
|
16
|
-
* But viewport seems to be tied to it in the sense that if location is not
|
|
19
|
+
* But viewport seems to be tied to it in the sense that if location is not enabled then it's viewport user tracking is not working.
|
|
17
20
|
* LocationComponentManager attempts to separate that, so that Camera can ask for location tracking independent of display of user current location.
|
|
18
21
|
* And NativeUserLocation can ask for display of user's current location - independent of Camera's user tracking.
|
|
19
22
|
*/
|
|
20
23
|
class LocationComponentManager(mapView: RCTMGLMapView, context: Context) {
|
|
21
|
-
private var mShowNativeUserLocation = false
|
|
22
|
-
private var mFollowLocation = false
|
|
23
24
|
var mMapView = mapView
|
|
24
25
|
var mContext = context
|
|
25
|
-
var mState = State(
|
|
26
|
-
|
|
26
|
+
private var mState = State(showUserLocation=false, followUserLocation=false, hidden=false, tintColor= null, bearingImage = null, puckBearingSource =null)
|
|
27
|
+
|
|
28
|
+
private var mLocationManager: LocationManager = LocationManager.getInstance(context)
|
|
29
|
+
|
|
30
|
+
private var mNeedsFullUpdate = true
|
|
31
|
+
|
|
32
|
+
private var mLocationManagerStarted = false
|
|
27
33
|
|
|
28
34
|
data class State(
|
|
29
|
-
val
|
|
35
|
+
val showUserLocation: Boolean,
|
|
36
|
+
val followUserLocation: Boolean,
|
|
30
37
|
val hidden: Boolean, // in case it isn't native
|
|
31
38
|
val tintColor: Int?, // tint of location puck
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
_applyChanges()
|
|
39
|
+
var bearingImage: Drawable?, // bearing image (background)
|
|
40
|
+
var puckBearingSource: PuckBearingSource? // bearing source
|
|
41
|
+
) {
|
|
42
|
+
val enabled: Boolean
|
|
43
|
+
get() = showUserLocation || followUserLocation
|
|
38
44
|
}
|
|
39
45
|
|
|
40
|
-
fun
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
fun update(newStateCallback: (currentState: State) -> State) {
|
|
47
|
+
val newState = newStateCallback(mState);
|
|
48
|
+
if (newState != mState) {
|
|
49
|
+
applyStateChanges(mState, newState)
|
|
50
|
+
mState = newState
|
|
51
|
+
}
|
|
44
52
|
}
|
|
45
53
|
|
|
46
|
-
fun
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
private fun applyStateChanges(oldState: State, newState: State) {
|
|
55
|
+
mMapView.let {
|
|
56
|
+
val needsFullUpdate = mNeedsFullUpdate
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
applyStateChanges(it, oldState, newState, needsFullUpdate)
|
|
59
|
+
|
|
60
|
+
mNeedsFullUpdate = false
|
|
61
|
+
}
|
|
52
62
|
}
|
|
53
63
|
|
|
54
|
-
fun
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
topImage = drawable
|
|
86
|
-
}
|
|
87
|
-
defaultLocationPuck.topImage = topImage
|
|
88
|
-
val bearingImage = AppCompatResources.getDrawable(
|
|
89
|
-
mContext!!, R.drawable.mapbox_user_stroke_icon
|
|
90
|
-
)
|
|
91
|
-
defaultLocationPuck.bearingImage = bearingImage
|
|
92
|
-
val shadowImage = AppCompatResources.getDrawable(
|
|
93
|
-
mContext!!, R.drawable.mapbox_user_icon_shadow
|
|
94
|
-
)
|
|
95
|
-
defaultLocationPuck.shadowImage = shadowImage
|
|
96
|
-
locationPuck = defaultLocationPuck
|
|
97
|
-
pulsingEnabled = true
|
|
98
|
-
if (tintColor != null) {
|
|
99
|
-
pulsingColor = tintColor
|
|
100
|
-
} else {
|
|
101
|
-
pulsingColor = mapboxBlueColor
|
|
102
|
-
}
|
|
103
|
-
}
|
|
64
|
+
private fun applyStateChanges(map: RCTMGLMapView, oldState: State, newState: State, fullUpdate: Boolean) {
|
|
65
|
+
if (map.getLifecycleState() != Lifecycle.State.STARTED) {
|
|
66
|
+
// In case lifecycle was already stopped, so we're part of shutdown, do not call updateSettings as it'll just restart
|
|
67
|
+
// the loationComponent that will not be stopped. See https://github.com/mapbox/mapbox-maps-android/issues/2017
|
|
68
|
+
if (!newState.enabled) {
|
|
69
|
+
stopLocationManager()
|
|
70
|
+
}
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
map.location.updateSettings {
|
|
74
|
+
enabled = newState.enabled
|
|
75
|
+
|
|
76
|
+
if (fullUpdate || (newState.hidden != oldState.hidden) || (newState.tintColor != oldState.tintColor) || (newState.bearingImage != oldState.bearingImage)) {
|
|
77
|
+
if (newState.hidden) {
|
|
78
|
+
var emptyLocationPuck = LocationPuck2D()
|
|
79
|
+
val empty = AppCompatResources.getDrawable(mContext, R.drawable.empty)
|
|
80
|
+
emptyLocationPuck.bearingImage = empty
|
|
81
|
+
emptyLocationPuck.shadowImage = empty
|
|
82
|
+
emptyLocationPuck.topImage = empty
|
|
83
|
+
//emptyLocationPuck.opacity = 0.0
|
|
84
|
+
locationPuck = emptyLocationPuck
|
|
85
|
+
pulsingEnabled = false
|
|
86
|
+
} else {
|
|
87
|
+
val mapboxBlueColor = Color.parseColor("#4A90E2")
|
|
88
|
+
val tintColor = newState.tintColor
|
|
89
|
+
val defaultLocationPuck = LocationPuck2D()
|
|
90
|
+
var topImage = AppCompatResources.getDrawable(mContext, R.drawable.mapbox_user_icon)
|
|
91
|
+
if (tintColor != null) {
|
|
92
|
+
val drawable = topImage as VectorDrawable?
|
|
93
|
+
drawable!!.setTint(tintColor)
|
|
94
|
+
topImage = drawable
|
|
104
95
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
96
|
+
defaultLocationPuck.topImage = topImage
|
|
97
|
+
val defaultBearingImage = AppCompatResources.getDrawable(
|
|
98
|
+
mContext, R.drawable.mapbox_user_stroke_icon
|
|
99
|
+
);
|
|
100
|
+
defaultLocationPuck.bearingImage = newState.bearingImage ?: defaultBearingImage
|
|
101
|
+
val shadowImage = AppCompatResources.getDrawable(
|
|
102
|
+
mContext, R.drawable.mapbox_user_icon_shadow
|
|
103
|
+
)
|
|
104
|
+
defaultLocationPuck.shadowImage = shadowImage
|
|
105
|
+
locationPuck = defaultLocationPuck
|
|
106
|
+
pulsingEnabled = true
|
|
107
|
+
if (tintColor != null) {
|
|
108
|
+
pulsingColor = tintColor
|
|
114
109
|
} else {
|
|
115
|
-
|
|
110
|
+
pulsingColor = mapboxBlueColor
|
|
116
111
|
}
|
|
117
112
|
}
|
|
113
|
+
}
|
|
118
114
|
|
|
119
|
-
|
|
115
|
+
if (fullUpdate || newState.enabled != mState.enabled) {
|
|
116
|
+
if (newState.enabled) {
|
|
117
|
+
startLocationManager()
|
|
118
|
+
useMapLocationProvider(map)
|
|
119
|
+
} else {
|
|
120
|
+
stopLocationManager()
|
|
121
|
+
}
|
|
120
122
|
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
private fun startLocationManager() {
|
|
127
|
+
if (!mLocationManagerStarted) {
|
|
128
|
+
mLocationManager.startCounted()
|
|
129
|
+
mLocationManagerStarted = true
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private fun stopLocationManager() {
|
|
134
|
+
if (mLocationManagerStarted) {
|
|
135
|
+
mLocationManager.stopCounted()
|
|
136
|
+
mLocationManagerStarted = false
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private fun useMapLocationProvider(mapView: RCTMGLMapView) {
|
|
141
|
+
val provider = mapView.location.getLocationProvider()
|
|
142
|
+
if (provider != null) {
|
|
143
|
+
mLocationManager.provider = provider
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
121
147
|
|
|
148
|
+
fun showNativeUserLocation(showUserLocation: Boolean) {
|
|
149
|
+
update {
|
|
150
|
+
it.copy(showUserLocation = showUserLocation)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
122
153
|
|
|
154
|
+
fun setFollowLocation(followUserLocation: Boolean) {
|
|
155
|
+
update {
|
|
156
|
+
it.copy(followUserLocation = followUserLocation)
|
|
123
157
|
}
|
|
124
158
|
}
|
|
159
|
+
|
|
160
|
+
fun update() {
|
|
161
|
+
update { it }
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
fun onDestroy() {
|
|
165
|
+
stopLocationManager();
|
|
166
|
+
}
|
|
125
167
|
}
|
|
@@ -2,25 +2,33 @@ package com.mapbox.rctmgl.components.location
|
|
|
2
2
|
|
|
3
3
|
import android.annotation.SuppressLint
|
|
4
4
|
import android.content.Context
|
|
5
|
+
import androidx.appcompat.content.res.AppCompatResources
|
|
5
6
|
import com.mapbox.rctmgl.components.mapview.OnMapReadyCallback
|
|
6
7
|
import com.mapbox.maps.MapboxMap
|
|
7
8
|
import com.mapbox.android.core.permissions.PermissionsManager
|
|
8
9
|
import com.mapbox.maps.Style
|
|
10
|
+
import com.mapbox.maps.plugin.PuckBearingSource
|
|
11
|
+
import com.mapbox.rctmgl.R
|
|
9
12
|
import com.mapbox.rctmgl.components.AbstractMapFeature
|
|
10
13
|
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
11
14
|
|
|
12
|
-
class
|
|
15
|
+
enum class RenderMode {
|
|
16
|
+
GPS, COMPASS, NORMAL
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
class RCTMGLNativeUserLocation(context: Context) : AbstractMapFeature(context), OnMapReadyCallback, Style.OnStyleLoaded {
|
|
13
20
|
private var mEnabled = true
|
|
14
21
|
private var mMap: MapboxMap? = null
|
|
22
|
+
private var mRenderMode : RenderMode = RenderMode.NORMAL;
|
|
23
|
+
private var mContext : Context = context
|
|
15
24
|
|
|
16
|
-
private var mRenderMode : RenderMode = RenderMode.COMPASS
|
|
17
25
|
override fun addToMap(mapView: RCTMGLMapView) {
|
|
18
26
|
super.addToMap(mapView)
|
|
19
27
|
mEnabled = true
|
|
20
28
|
mapView.getMapboxMap()
|
|
21
29
|
mapView.getMapAsync(this)
|
|
22
|
-
setRenderMode(mRenderMode)
|
|
23
30
|
mMapView?.locationComponentManager?.showNativeUserLocation(true)
|
|
31
|
+
applyChanges()
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
override fun removeFromMap(mapView: RCTMGLMapView) {
|
|
@@ -34,6 +42,12 @@ class RCTMGLNativeUserLocation(context: Context?) : AbstractMapFeature(context),
|
|
|
34
42
|
override fun onMapReady(mapboxMap: MapboxMap) {
|
|
35
43
|
mMap = mapboxMap
|
|
36
44
|
mapboxMap.getStyle(this)
|
|
45
|
+
applyChanges()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
fun setAndroidRenderMode(renderMode: RenderMode) {
|
|
49
|
+
mRenderMode = renderMode;
|
|
50
|
+
applyChanges();
|
|
37
51
|
}
|
|
38
52
|
|
|
39
53
|
@SuppressLint("MissingPermission")
|
|
@@ -43,12 +57,24 @@ class RCTMGLNativeUserLocation(context: Context?) : AbstractMapFeature(context),
|
|
|
43
57
|
return
|
|
44
58
|
}
|
|
45
59
|
|
|
46
|
-
mMapView?.locationComponentManager?.update(
|
|
60
|
+
mMapView?.locationComponentManager?.update()
|
|
47
61
|
mMapView?.locationComponentManager?.showNativeUserLocation(mEnabled)
|
|
48
62
|
}
|
|
49
63
|
|
|
50
|
-
fun
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
fun applyChanges() {
|
|
65
|
+
mMapView?.locationComponentManager?.let {
|
|
66
|
+
// emulate https://docs.mapbox.com/android/legacy/maps/guides/location-component/
|
|
67
|
+
when (mRenderMode) {
|
|
68
|
+
RenderMode.NORMAL ->
|
|
69
|
+
it.update { it.copy(bearingImage = null, puckBearingSource = null)}
|
|
70
|
+
RenderMode.GPS -> it.update {
|
|
71
|
+
it.copy(bearingImage = AppCompatResources.getDrawable(
|
|
72
|
+
mContext, R.drawable.mapbox_user_bearing_icon
|
|
73
|
+
), puckBearingSource = PuckBearingSource.COURSE) }
|
|
74
|
+
RenderMode.COMPASS -> it.update{ it.copy(bearingImage= AppCompatResources.getDrawable(
|
|
75
|
+
mContext, R.drawable.mapbox_user_puck_icon
|
|
76
|
+
), puckBearingSource = PuckBearingSource.HEADING) }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
53
79
|
}
|
|
54
80
|
}
|