@rnmapbox/maps 10.0.0-rc.0 → 10.0.0-rc.10
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/README.md +2 -2
- package/android/rctmgl/build.gradle +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.kt +75 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/annotation/RCTMGLMarkerViewManager.kt +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/camera/RCTMGLCamera.kt +92 -9
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/images/RCTMGLImagesManager.kt +2 -2
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/location/LocationComponentManager.kt +3 -2
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.kt +23 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +86 -17
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.kt +24 -8
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLRasterSourceManager.kt +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLTileSourceManager.kt +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/styles/sources/RCTMGLVectorSourceManager.kt +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AbstractEvent.kt +49 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/IEvent.kt +17 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/LocationEvent.kt +11 -16
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.kt +10 -10
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventTypes.kt +44 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLLocationModule.kt +36 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLModule.kt +4 -3
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/modules/RCTMGLOfflineModule.kt +474 -405
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/FeatureCollection.kt +10 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/Geometry.kt +22 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/JSONObject.kt +78 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/ReadableArray.kt +1 -1
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/extensions/Value.kt +9 -0
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/utils/writeableMapArrayOf.kt +41 -0
- package/ios/RCTMGL-v10/RCTMGLCamera.swift +1 -6
- package/ios/RCTMGL-v10/RCTMGLImages.swift +0 -1
- package/ios/RCTMGL-v10/RCTMGLLocationModule.m +2 -2
- package/ios/RCTMGL-v10/RCTMGLMapView.swift +7 -1
- package/ios/RCTMGL-v10/RCTMGLOfflineModule.swift +283 -307
- package/ios/install.md +7 -0
- package/lib/commonjs/components/MapView.js +12 -2
- package/lib/commonjs/components/MapView.js.map +1 -1
- package/lib/commonjs/components/NativeUserLocation.js.map +1 -1
- package/lib/commonjs/components/Terrain.js +1 -2
- package/lib/commonjs/components/Terrain.js.map +1 -1
- package/lib/commonjs/components/VectorSource.js +2 -0
- package/lib/commonjs/components/VectorSource.js.map +1 -1
- package/lib/commonjs/modules/location/locationManager.js +4 -0
- package/lib/commonjs/modules/location/locationManager.js.map +1 -1
- package/lib/module/components/MapView.js +12 -2
- package/lib/module/components/MapView.js.map +1 -1
- package/lib/module/components/NativeUserLocation.js.map +1 -1
- package/lib/module/components/Terrain.js +1 -2
- package/lib/module/components/Terrain.js.map +1 -1
- package/lib/module/components/VectorSource.js +3 -0
- package/lib/module/components/VectorSource.js.map +1 -1
- package/lib/module/modules/location/locationManager.js +4 -0
- package/lib/module/modules/location/locationManager.js.map +1 -1
- package/lib/typescript/components/MapView.d.ts +7 -1
- package/lib/typescript/components/MapView.d.ts.map +1 -1
- package/lib/typescript/components/NativeUserLocation.d.ts.map +1 -1
- package/lib/typescript/components/Terrain.d.ts.map +1 -1
- package/package.json +1 -1
- package/plugin/install.md +17 -0
- package/rnmapbox-maps.podspec +1 -1
- package/src/components/MapView.tsx +11 -3
- package/src/components/NativeUserLocation.tsx +5 -3
- package/src/components/Terrain.tsx +3 -5
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.java +0 -82
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapView.java +0 -16
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.java +0 -31
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/AbstractEvent.java +0 -62
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/IEvent.java +0 -18
- package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/constants/EventTypes.java +0 -51
|
@@ -8,7 +8,7 @@ import com.facebook.react.uimanager.annotations.ReactProp
|
|
|
8
8
|
import com.mapbox.rctmgl.components.AbstractEventEmitter
|
|
9
9
|
|
|
10
10
|
abstract class RCTMGLTileSourceManager<T : RCTMGLTileSource<*>?> internal constructor(
|
|
11
|
-
reactApplicationContext: ReactApplicationContext
|
|
11
|
+
reactApplicationContext: ReactApplicationContext
|
|
12
12
|
) : AbstractEventEmitter<T>(reactApplicationContext) {
|
|
13
13
|
override fun getChildAt(source: T, childPosition: Int): View {
|
|
14
14
|
return source!!.getChildAt(childPosition)
|
|
@@ -11,7 +11,7 @@ import com.mapbox.rctmgl.utils.ConvertUtils
|
|
|
11
11
|
import com.mapbox.rctmgl.utils.ExpressionParser
|
|
12
12
|
import javax.annotation.Nonnull
|
|
13
13
|
|
|
14
|
-
class RCTMGLVectorSourceManager(reactApplicationContext: ReactApplicationContext
|
|
14
|
+
class RCTMGLVectorSourceManager(reactApplicationContext: ReactApplicationContext) :
|
|
15
15
|
RCTMGLTileSourceManager<RCTMGLVectorSource?>(reactApplicationContext) {
|
|
16
16
|
@Nonnull
|
|
17
17
|
override fun getName(): String {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.events
|
|
2
|
+
|
|
3
|
+
import android.view.View
|
|
4
|
+
import com.facebook.react.bridge.Arguments
|
|
5
|
+
import com.facebook.react.bridge.WritableMap
|
|
6
|
+
|
|
7
|
+
abstract class AbstractEvent(view: View?, private val mEventType: String) : IEvent {
|
|
8
|
+
private var mTagID = 0
|
|
9
|
+
private val mTimestamp: Long
|
|
10
|
+
|
|
11
|
+
constructor(eventType: String) : this(null, eventType) {}
|
|
12
|
+
|
|
13
|
+
init {
|
|
14
|
+
if (view != null) {
|
|
15
|
+
mTagID = view.id
|
|
16
|
+
}
|
|
17
|
+
mTimestamp = System.currentTimeMillis()
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override val iD
|
|
21
|
+
get() = mTagID
|
|
22
|
+
|
|
23
|
+
override val type
|
|
24
|
+
get() = mEventType
|
|
25
|
+
|
|
26
|
+
override fun equals(event: IEvent): Boolean {
|
|
27
|
+
return key == event.key && mEventType == event.type
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override val payload
|
|
31
|
+
get() = Arguments.createMap()
|
|
32
|
+
|
|
33
|
+
override val timestamp
|
|
34
|
+
get() = mTimestamp
|
|
35
|
+
|
|
36
|
+
override fun toJSON(): WritableMap {
|
|
37
|
+
val map = Arguments.createMap()
|
|
38
|
+
map.putString("type", type)
|
|
39
|
+
val payloadClone = Arguments.createMap()
|
|
40
|
+
payloadClone.merge(payload)
|
|
41
|
+
map.putMap("payload", payloadClone)
|
|
42
|
+
return map
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override fun canCoalesce(): Boolean {
|
|
46
|
+
// default behavior of com.facebook.react.uimanager.events.Event
|
|
47
|
+
return true
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.events
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Created by nickitaliano on 8/23/17.
|
|
7
|
+
*/
|
|
8
|
+
interface IEvent {
|
|
9
|
+
val iD: Int
|
|
10
|
+
val key: String?
|
|
11
|
+
val type: String?
|
|
12
|
+
val timestamp: Long
|
|
13
|
+
fun equals(event: IEvent): Boolean
|
|
14
|
+
fun canCoalesce(): Boolean
|
|
15
|
+
val payload: WritableMap
|
|
16
|
+
fun toJSON(): WritableMap
|
|
17
|
+
}
|
|
@@ -3,10 +3,8 @@ package com.mapbox.rctmgl.events
|
|
|
3
3
|
import android.location.Location
|
|
4
4
|
import com.facebook.react.bridge.Arguments
|
|
5
5
|
import com.mapbox.rctmgl.components.mapview.RCTMGLMapView
|
|
6
|
-
import com.mapbox.rctmgl.events.IEvent
|
|
7
6
|
import com.mapbox.rctmgl.events.constants.EventKeys
|
|
8
7
|
import com.mapbox.rctmgl.events.constants.EventTypes
|
|
9
|
-
import com.mapbox.rctmgl.events.LocationEvent
|
|
10
8
|
import com.facebook.react.bridge.WritableMap
|
|
11
9
|
import com.facebook.react.bridge.WritableNativeMap
|
|
12
10
|
import java.util.*
|
|
@@ -20,21 +18,17 @@ class LocationEvent(private val location: Location, private val mapView: RCTMGLM
|
|
|
20
18
|
|
|
21
19
|
constructor(location: Location) : this(location, null) {}
|
|
22
20
|
|
|
23
|
-
override
|
|
24
|
-
|
|
25
|
-
}
|
|
21
|
+
override val iD
|
|
22
|
+
get() = mapView?.id ?: -1
|
|
26
23
|
|
|
27
|
-
override
|
|
28
|
-
|
|
29
|
-
}
|
|
24
|
+
override val key
|
|
25
|
+
get() = EventKeys.USER_LOCATION_UPDATE
|
|
30
26
|
|
|
31
|
-
override
|
|
32
|
-
|
|
33
|
-
}
|
|
27
|
+
override val type
|
|
28
|
+
get() = EventTypes.USER_LOCATION_UPDATED
|
|
34
29
|
|
|
35
|
-
override
|
|
36
|
-
|
|
37
|
-
}
|
|
30
|
+
override val timestamp
|
|
31
|
+
get() = System.currentTimeMillis()
|
|
38
32
|
|
|
39
33
|
override fun equals(event: IEvent): Boolean {
|
|
40
34
|
val other = event as LocationEvent
|
|
@@ -45,14 +39,15 @@ class LocationEvent(private val location: Location, private val mapView: RCTMGLM
|
|
|
45
39
|
return uUID == event.uUID
|
|
46
40
|
}
|
|
47
41
|
|
|
48
|
-
override
|
|
42
|
+
override val payload: WritableMap
|
|
43
|
+
get() {
|
|
49
44
|
val positionProperties: WritableMap = WritableNativeMap()
|
|
50
45
|
val coords: WritableMap = WritableNativeMap()
|
|
51
46
|
coords.putDouble("longitude", location.longitude)
|
|
52
47
|
coords.putDouble("latitude", location.latitude)
|
|
53
48
|
coords.putDouble("altitude", location.altitude)
|
|
54
49
|
coords.putDouble("accuracy", location.accuracy.toDouble())
|
|
55
|
-
// A better solution will be to pull the heading from the compass engine,
|
|
50
|
+
// A better solution will be to pull the heading from the compass engine,
|
|
56
51
|
// unfortunately the api is not publicly available in the mapbox sdk
|
|
57
52
|
coords.putDouble("heading", location.bearing.toDouble())
|
|
58
53
|
coords.putDouble("course", location.bearing.toDouble())
|
package/android/rctmgl/src/main/java-v10/com/mapbox/rctmgl/events/MapUserTrackingModeEvent.kt
CHANGED
|
@@ -7,15 +7,15 @@ import com.mapbox.rctmgl.components.location.UserTrackingMode
|
|
|
7
7
|
import com.mapbox.rctmgl.events.constants.EventKeys
|
|
8
8
|
import com.mapbox.rctmgl.events.constants.EventTypes
|
|
9
9
|
|
|
10
|
-
class MapUserTrackingModeEvent(view: View?, val userTrackingMode: Int) : AbstractEvent(view, EventTypes.MAP_USER_TRACKING_MODE_CHANGE) {
|
|
11
|
-
override
|
|
12
|
-
|
|
13
|
-
}
|
|
10
|
+
class MapUserTrackingModeEvent(view: View?, val userTrackingMode: Int, val basePayload: WritableMap? = null) : AbstractEvent(view, EventTypes.MAP_USER_TRACKING_MODE_CHANGE) {
|
|
11
|
+
override val key
|
|
12
|
+
get() = EventKeys.MAP_USER_TRACKING_MODE_CHANGE;
|
|
14
13
|
|
|
15
|
-
override
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
override val payload : WritableMap
|
|
15
|
+
get() = {
|
|
16
|
+
val payload = basePayload?.copy() ?: Arguments.createMap()
|
|
17
|
+
payload.putBoolean("followUserLocation", userTrackingMode != UserTrackingMode.NONE)
|
|
18
|
+
payload.putString("followUserMode", UserTrackingMode.toString(userTrackingMode))
|
|
19
|
+
payload
|
|
20
|
+
}.invoke()
|
|
21
21
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
package com.mapbox.rctmgl.events.constants
|
|
2
|
+
|
|
3
|
+
object EventTypes {
|
|
4
|
+
// map event types
|
|
5
|
+
const val MAP_CLICK = "press"
|
|
6
|
+
const val MAP_LONG_CLICK = "longpress"
|
|
7
|
+
const val MAP_USER_TRACKING_MODE_CHANGE = "usertrackingmodechange"
|
|
8
|
+
const val REGION_WILL_CHANGE = "regionwillchange"
|
|
9
|
+
const val REGION_IS_CHANGING = "regionischanging" // deprecated
|
|
10
|
+
const val CAMERA_CHANGED = "camerachanged"
|
|
11
|
+
const val REGION_DID_CHANGE = "regiondidchange"
|
|
12
|
+
const val MAP_IDLE = "mapidle"
|
|
13
|
+
const val USER_LOCATION_UPDATED = "userlocationdupdated"
|
|
14
|
+
const val WILL_START_LOADING_MAP = "willstartloadingmap"
|
|
15
|
+
const val DID_FINISH_LOADING_MAP = "didfinishloadingmap"
|
|
16
|
+
const val DID_FAIL_LOADING_MAP = "didfailloadingmap"
|
|
17
|
+
const val WILL_START_RENDERING_FRAME = "willstartrenderingframe"
|
|
18
|
+
const val DID_FINISH_RENDERING_FRAME = "didfinishrenderingframe"
|
|
19
|
+
const val DID_FINISH_RENDERING_FRAME_FULLY = "didfinishrenderingframefully"
|
|
20
|
+
const val WILL_START_RENDERING_MAP = "willstartrenderingmap"
|
|
21
|
+
const val DID_FINISH_RENDERING_MAP = "didfinishrenderingmap"
|
|
22
|
+
const val DID_FINISH_RENDERING_MAP_FULLY = "didfinishrenderingmapfully"
|
|
23
|
+
const val DID_FINISH_LOADING_STYLE = "didfinishloadingstyle"
|
|
24
|
+
|
|
25
|
+
// point annotation event types
|
|
26
|
+
const val ANNOTATION_SELECTED = "annotationselected"
|
|
27
|
+
const val ANNOTATION_DESELECTED = "annotationdeselected"
|
|
28
|
+
const val ANNOTATION_DRAG_START = "annotationdragstart"
|
|
29
|
+
const val ANNOTATION_DRAG = "annotationdrag"
|
|
30
|
+
const val ANNOTATION_DRAG_END = "annotationdragend"
|
|
31
|
+
|
|
32
|
+
// offline event types
|
|
33
|
+
const val OFFLINE_ERROR = "offlineerror"
|
|
34
|
+
const val OFFLINE_TILE_LIMIT = "offlinetilelimit"
|
|
35
|
+
const val OFFLINE_STATUS = "offlinestatus"
|
|
36
|
+
|
|
37
|
+
// shape source event types
|
|
38
|
+
const val SHAPE_SOURCE_LAYER_CLICK = "shapesourcelayerpress"
|
|
39
|
+
const val VECTOR_SOURCE_LAYER_CLICK = "vectorsourcelayerpress"
|
|
40
|
+
const val RASTER_SOURCE_LAYER_CLICK = "rastersourcelayerpress"
|
|
41
|
+
|
|
42
|
+
// image missing event type
|
|
43
|
+
const val IMAGES_MISSING = "imagesmissing"
|
|
44
|
+
}
|
|
@@ -12,6 +12,9 @@ import com.mapbox.rctmgl.events.EventEmitter
|
|
|
12
12
|
import com.mapbox.rctmgl.location.LocationManager.Companion.getInstance
|
|
13
13
|
import java.lang.Exception
|
|
14
14
|
|
|
15
|
+
data class LocationEventThrottle(var waitBetweenEvents: Double? = null, var lastSentTimestamp: Long? = null) {
|
|
16
|
+
}
|
|
17
|
+
|
|
15
18
|
@ReactModule(name = RCTMGLLocationModule.REACT_CLASS)
|
|
16
19
|
class RCTMGLLocationModule(reactContext: ReactApplicationContext) :
|
|
17
20
|
ReactContextBaseJavaModule(reactContext) {
|
|
@@ -19,6 +22,7 @@ class RCTMGLLocationModule(reactContext: ReactApplicationContext) :
|
|
|
19
22
|
private var mMinDisplacement = 0f
|
|
20
23
|
private val locationManager: LocationManager? = getInstance(reactContext)
|
|
21
24
|
private var mLastLocation: Location? = null
|
|
25
|
+
private var locationEventThrottle: LocationEventThrottle = LocationEventThrottle()
|
|
22
26
|
|
|
23
27
|
private val lifecycleEventListener: LifecycleEventListener = object : LifecycleEventListener {
|
|
24
28
|
override fun onHostResume() {
|
|
@@ -52,7 +56,7 @@ class RCTMGLLocationModule(reactContext: ReactApplicationContext) :
|
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
mLastLocation = location
|
|
55
|
-
if (changed && (location != null)) {
|
|
59
|
+
if (changed && (location != null) && shouldSendLocationEvent()) {
|
|
56
60
|
val locationEvent = LocationEvent(location)
|
|
57
61
|
val emitter = EventEmitter.getModuleEmitter(reactApplicationContext)
|
|
58
62
|
emitter?.emit(LOCATION_UPDATE, locationEvent.payload)
|
|
@@ -145,6 +149,37 @@ class RCTMGLLocationModule(reactContext: ReactApplicationContext) :
|
|
|
145
149
|
mLastLocation = null
|
|
146
150
|
}
|
|
147
151
|
|
|
152
|
+
// region Location event throttle
|
|
153
|
+
@ReactMethod
|
|
154
|
+
fun setLocationEventThrottle(throttleValue: Double) {
|
|
155
|
+
if (throttleValue > 0) {
|
|
156
|
+
locationEventThrottle.waitBetweenEvents = throttleValue;
|
|
157
|
+
} else {
|
|
158
|
+
locationEventThrottle.waitBetweenEvents = null
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
fun shouldSendLocationEvent(): Boolean {
|
|
163
|
+
val waitBetweenEvents = locationEventThrottle.waitBetweenEvents
|
|
164
|
+
if (waitBetweenEvents == null) {
|
|
165
|
+
return true
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
val currentTimestamp = System.nanoTime()
|
|
169
|
+
val lastSentTimestamp = locationEventThrottle.lastSentTimestamp
|
|
170
|
+
if (lastSentTimestamp == null) {
|
|
171
|
+
return true
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if ((currentTimestamp - lastSentTimestamp) > 1000.0*waitBetweenEvents) {
|
|
175
|
+
return true
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return false
|
|
179
|
+
}
|
|
180
|
+
// endregion
|
|
181
|
+
|
|
182
|
+
|
|
148
183
|
companion object {
|
|
149
184
|
const val REACT_CLASS = "RCTMGLLocationModule"
|
|
150
185
|
const val LOCATION_UPDATE = "MapboxUserLocationUpdate"
|
|
@@ -87,9 +87,10 @@ class RCTMGLModule(private val mReactContext: ReactApplicationContext) : ReactCo
|
|
|
87
87
|
|
|
88
88
|
// offline region download states
|
|
89
89
|
val offlinePackDownloadStates: MutableMap<String, String> = HashMap()
|
|
90
|
-
offlinePackDownloadStates["Inactive"] =
|
|
91
|
-
offlinePackDownloadStates["Active"] =
|
|
92
|
-
offlinePackDownloadStates["Complete"] =
|
|
90
|
+
offlinePackDownloadStates["Inactive"] = TileRegionPackState.INACTIVE.rawValue
|
|
91
|
+
offlinePackDownloadStates["Active"] = TileRegionPackState.ACTIVE.rawValue
|
|
92
|
+
offlinePackDownloadStates["Complete"] = TileRegionPackState.COMPLETE.rawValue
|
|
93
|
+
offlinePackDownloadStates["Unknown"] = TileRegionPackState.UNKNOWN.rawValue
|
|
93
94
|
|
|
94
95
|
// offline module callback names
|
|
95
96
|
val offlineModuleCallbackNames: MutableMap<String, String> = HashMap()
|