@rnmapbox/maps 10.0.0-beta.40 → 10.0.0-beta.41
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/src/main/java-v10/com/mapbox/rctmgl/components/AbstractMapFeature.kt +10 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.kt +135 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.kt +68 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +498 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.kt +114 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserLocation.java +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/UserTrackingMode.java +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTSource.kt +14 -9
- package/ios/RCTMGL-v10/RCTMGLCamera.swift +11 -1
- package/package.json +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractMapFeature.java +0 -15
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.java +0 -167
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.java +0 -73
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.java +0 -662
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCameraManager.java +0 -102
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import com.facebook.react.views.view.ReactViewGroup
|
|
5
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
6
|
+
|
|
7
|
+
abstract class AbstractMapFeature(context: Context?) : ReactViewGroup(context) {
|
|
8
|
+
abstract fun addToMap(mapView: RCTMGLMapView)
|
|
9
|
+
abstract fun removeFromMap(mapView: RCTMGLMapView)
|
|
10
|
+
}
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateItem.kt
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.camera
|
|
2
|
+
|
|
3
|
+
import android.animation.Animator
|
|
4
|
+
import com.mapbox.maps.plugin.animation.MapAnimationOptions
|
|
5
|
+
import com.mapbox.maps.MapboxMap
|
|
6
|
+
import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
|
|
7
|
+
import com.mapbox.rctmgl.components.camera.CameraStop
|
|
8
|
+
import com.mapbox.rctmgl.components.camera.RCTMGLCamera
|
|
9
|
+
import com.mapbox.maps.CameraOptions
|
|
10
|
+
import android.view.animation.LinearInterpolator
|
|
11
|
+
import android.view.animation.AccelerateDecelerateInterpolator
|
|
12
|
+
import com.mapbox.rctmgl.components.camera.CameraUpdateQueue.OnCompleteAllListener
|
|
13
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
14
|
+
import com.mapbox.rctmgl.components.camera.CameraUpdateItem
|
|
15
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
16
|
+
import com.mapbox.rctmgl.components.AbstractEventEmitter
|
|
17
|
+
import com.mapbox.rctmgl.components.camera.RCTMGLCameraManager
|
|
18
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
19
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
20
|
+
import com.facebook.react.bridge.ReadableMap
|
|
21
|
+
import com.mapbox.maps.plugin.animation.MapAnimationOptions.Companion.mapAnimationOptions
|
|
22
|
+
import com.mapbox.maps.plugin.animation.easeTo
|
|
23
|
+
import com.mapbox.maps.plugin.animation.flyTo
|
|
24
|
+
import com.mapbox.rctmgl.components.camera.constants.CameraMode
|
|
25
|
+
import java.lang.ref.WeakReference
|
|
26
|
+
import java.util.concurrent.ExecutionException
|
|
27
|
+
import java.util.concurrent.RunnableFuture
|
|
28
|
+
import java.util.concurrent.TimeUnit
|
|
29
|
+
import java.util.concurrent.TimeoutException
|
|
30
|
+
|
|
31
|
+
class CameraUpdateItem(
|
|
32
|
+
map: MapboxMap,
|
|
33
|
+
private val mCameraUpdate: CameraOptions,
|
|
34
|
+
val duration: Int,
|
|
35
|
+
private val mCallback: Animator.AnimatorListener?,
|
|
36
|
+
@param:CameraMode.Mode private val mCameraMode: Int
|
|
37
|
+
) : RunnableFuture<Void?> {
|
|
38
|
+
private var isCameraActionFinished = false
|
|
39
|
+
private var isCameraActionCancelled = false
|
|
40
|
+
private val mMap: WeakReference<MapboxMap>
|
|
41
|
+
|
|
42
|
+
internal enum class CallbackMode {
|
|
43
|
+
START, END, CANCEL, REPEAT
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
init {
|
|
47
|
+
mMap = WeakReference(map)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
override fun run() {
|
|
51
|
+
val callback: Animator.AnimatorListener = object : Animator.AnimatorListener {
|
|
52
|
+
override fun onAnimationStart(animator: Animator) {
|
|
53
|
+
isCameraActionCancelled = false
|
|
54
|
+
isCameraActionFinished = false
|
|
55
|
+
mCallback?.onAnimationStart(animator)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
override fun onAnimationEnd(animator: Animator) {
|
|
59
|
+
isCameraActionCancelled = false
|
|
60
|
+
isCameraActionFinished = true
|
|
61
|
+
mCallback?.onAnimationEnd(animator)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
override fun onAnimationCancel(animator: Animator) {
|
|
65
|
+
isCameraActionCancelled = true
|
|
66
|
+
isCameraActionFinished = false
|
|
67
|
+
mCallback?.onAnimationCancel(animator)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
override fun onAnimationRepeat(animator: Animator) {
|
|
71
|
+
isCameraActionCancelled = false
|
|
72
|
+
isCameraActionFinished = false
|
|
73
|
+
mCallback?.onAnimationRepeat(animator)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
val map = mMap.get()
|
|
77
|
+
if (map == null) {
|
|
78
|
+
isCameraActionCancelled = true
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
val animationOptions = MapAnimationOptions.Builder().apply {
|
|
82
|
+
animatorListener(callback)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// animateCamera / easeCamera only allows positive duration
|
|
86
|
+
if (duration == 0 || mCameraMode == CameraMode.NONE) {
|
|
87
|
+
map.flyTo(mCameraUpdate, animationOptions.apply {
|
|
88
|
+
duration(0)
|
|
89
|
+
animatorListener(callback)
|
|
90
|
+
}.build())
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// On iOS a duration of -1 means default or dynamic duration (based on flight-path length)
|
|
94
|
+
// On Android we can fallback to Mapbox's default duration as there is no such API
|
|
95
|
+
if (duration > 0) {
|
|
96
|
+
animationOptions.apply { duration(duration.toLong()) }
|
|
97
|
+
}
|
|
98
|
+
if (mCameraMode == CameraMode.FLIGHT) {
|
|
99
|
+
map.flyTo(mCameraUpdate, animationOptions.build())
|
|
100
|
+
} else if (mCameraMode == CameraMode.LINEAR) {
|
|
101
|
+
map.easeTo(
|
|
102
|
+
mCameraUpdate,
|
|
103
|
+
animationOptions.apply { interpolator(LinearInterpolator()) }.build()
|
|
104
|
+
)
|
|
105
|
+
} else if (mCameraMode == CameraMode.EASE) {
|
|
106
|
+
map.easeTo(
|
|
107
|
+
mCameraUpdate,
|
|
108
|
+
animationOptions.apply{ interpolator(AccelerateDecelerateInterpolator()) }.build()
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
null
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
override fun cancel(mayInterruptIfRunning: Boolean): Boolean {
|
|
115
|
+
return false
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
override fun isCancelled(): Boolean {
|
|
119
|
+
return isCameraActionCancelled
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
override fun isDone(): Boolean {
|
|
123
|
+
return isCameraActionFinished
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@Throws(InterruptedException::class, ExecutionException::class)
|
|
127
|
+
override fun get(): Void? {
|
|
128
|
+
return null
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@Throws(InterruptedException::class, ExecutionException::class, TimeoutException::class)
|
|
132
|
+
override fun get(timeout: Long, unit: TimeUnit): Void? {
|
|
133
|
+
return null
|
|
134
|
+
}
|
|
135
|
+
}
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/CameraUpdateQueue.kt
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.components.camera
|
|
2
|
+
|
|
3
|
+
import com.mapbox.rctmgl.components.camera.CameraStop.Companion.fromReadableMap
|
|
4
|
+
import com.mapbox.maps.MapboxMap
|
|
5
|
+
import com.mapbox.maps.CameraOptions
|
|
6
|
+
import com.mapbox.maps.plugin.animation.CameraAnimationsPlugin
|
|
7
|
+
import android.view.animation.LinearInterpolator
|
|
8
|
+
import android.view.animation.AccelerateDecelerateInterpolator
|
|
9
|
+
import com.mapbox.rctmgl.components.camera.CameraStop
|
|
10
|
+
import com.mapbox.rctmgl.components.camera.CameraUpdateQueue.OnCompleteAllListener
|
|
11
|
+
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
12
|
+
import com.mapbox.rctmgl.components.camera.CameraUpdateItem
|
|
13
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
14
|
+
import com.mapbox.rctmgl.components.AbstractEventEmitter
|
|
15
|
+
import com.mapbox.rctmgl.components.camera.RCTMGLCamera
|
|
16
|
+
import com.mapbox.rctmgl.components.camera.RCTMGLCameraManager
|
|
17
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
18
|
+
import com.facebook.react.uimanager.annotations.ReactProp
|
|
19
|
+
import com.facebook.react.bridge.ReadableMap
|
|
20
|
+
import java.util.*
|
|
21
|
+
|
|
22
|
+
class CameraUpdateQueue {
|
|
23
|
+
private var mQueue: Queue<CameraStop>
|
|
24
|
+
private var mCompleteListener: OnCompleteAllListener? = null
|
|
25
|
+
|
|
26
|
+
interface OnCompleteAllListener {
|
|
27
|
+
fun onCompleteAll()
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
init {
|
|
31
|
+
mQueue = LinkedList()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fun offer(item: CameraStop) {
|
|
35
|
+
mQueue.offer(item)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fun size(): Int {
|
|
39
|
+
return mQueue.size
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
val isEmpty: Boolean
|
|
43
|
+
get() = mQueue.isEmpty()
|
|
44
|
+
|
|
45
|
+
fun flush() {
|
|
46
|
+
while (mQueue.size > 0) {
|
|
47
|
+
mQueue.remove()
|
|
48
|
+
}
|
|
49
|
+
mQueue = LinkedList()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
fun setOnCompleteAllListener(listener: OnCompleteAllListener?) {
|
|
53
|
+
mCompleteListener = listener
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fun execute(map: RCTMGLMapView?) {
|
|
57
|
+
if (mQueue.isEmpty()) {
|
|
58
|
+
if (mCompleteListener != null) {
|
|
59
|
+
mCompleteListener!!.onCompleteAll()
|
|
60
|
+
}
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
val stop = mQueue.poll() ?: return
|
|
64
|
+
val item = stop.toCameraUpdate(map!!)
|
|
65
|
+
item.run()
|
|
66
|
+
execute(map)
|
|
67
|
+
}
|
|
68
|
+
}
|