@rnmapbox/maps 10.0.15-rc.0 → 10.1.0-beta.2

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.
Files changed (89) hide show
  1. package/android/build.gradle +20 -0
  2. package/android/src/main/java-v10/com/mapbox/rctmgl/RCTMGLPackage.java +109 -12
  3. package/android/src/main/java-v10/com/mapbox/rctmgl/components/AbstractEventEmitter.kt +2 -3
  4. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/NativeMapViewModule.kt +193 -0
  5. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLAndroidTextureMapViewManager.kt +16 -2
  6. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapView.kt +1 -1
  7. package/android/src/main/java-v10/com/mapbox/rctmgl/components/mapview/RCTMGLMapViewManager.kt +75 -160
  8. package/android/src/main/java-v10/com/mapbox/rctmgl/components/styles/layers/RCTLayer.kt +3 -3
  9. package/android/src/main/java-v10/com/mapbox/rctmgl/mapbox/Light.kt +6 -0
  10. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXAndroidTextureMapViewManagerDelegate.java +89 -0
  11. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXAndroidTextureMapViewManagerInterface.java +37 -0
  12. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXMapViewManagerDelegate.java +89 -0
  13. package/android/src/main/old-arch/com/facebook/react/viewmanagers/MBXMapViewManagerInterface.java +37 -0
  14. package/android/src/main/old-arch/com/mapbox/rctmgl/NativeMapViewModuleSpec.java +88 -0
  15. package/ios/RCTMGL-v10/CustomHttpHeaders.swift +18 -0
  16. package/ios/RCTMGL-v10/MBXMapViewComponentView.h +18 -0
  17. package/ios/RCTMGL-v10/MBXMapViewComponentView.mm +203 -0
  18. package/ios/RCTMGL-v10/MBXMapViewManager.m +37 -0
  19. package/ios/RCTMGL-v10/MBXMapViewManager.swift +250 -0
  20. package/ios/RCTMGL-v10/MBXMapViewModule.h +18 -0
  21. package/ios/RCTMGL-v10/MBXMapViewModule.mm +167 -0
  22. package/ios/RCTMGL-v10/MGLModule.swift +15 -1
  23. package/ios/RCTMGL-v10/MGLSnapshotModule.swift +7 -1
  24. package/ios/RCTMGL-v10/RCTMGLAtmosphere.swift +4 -0
  25. package/ios/RCTMGL-v10/RCTMGLBackgroundLayer.swift +2 -1
  26. package/ios/RCTMGL-v10/RCTMGLCamera.swift +23 -0
  27. package/ios/RCTMGL-v10/RCTMGLCircleLayer.swift +4 -0
  28. package/ios/RCTMGL-v10/RCTMGLFillExtrustionLayer.swift +4 -0
  29. package/ios/RCTMGL-v10/RCTMGLFillLayer.swift +4 -0
  30. package/ios/RCTMGL-v10/RCTMGLHeatmapLayer.swift +4 -1
  31. package/ios/RCTMGL-v10/RCTMGLImageSource.swift +4 -0
  32. package/ios/RCTMGL-v10/RCTMGLImages.swift +14 -2
  33. package/ios/RCTMGL-v10/RCTMGLLayer.swift +35 -11
  34. package/ios/RCTMGL-v10/RCTMGLLight.swift +14 -4
  35. package/ios/RCTMGL-v10/RCTMGLLineLayer.swift +4 -0
  36. package/ios/RCTMGL-v10/RCTMGLLocationModule.swift +65 -12
  37. package/ios/RCTMGL-v10/RCTMGLLocationModuleV11.swift +32 -0
  38. package/ios/RCTMGL-v10/RCTMGLMapView.swift +115 -27
  39. package/ios/RCTMGL-v10/RCTMGLNativeUserLocation.swift +4 -0
  40. package/ios/RCTMGL-v10/RCTMGLOfflineModule.swift +17 -0
  41. package/ios/RCTMGL-v10/RCTMGLRasterDemSource.swift +4 -0
  42. package/ios/RCTMGL-v10/RCTMGLRasterLayer.swift +4 -0
  43. package/ios/RCTMGL-v10/RCTMGLRasterSource.swift +4 -0
  44. package/ios/RCTMGL-v10/RCTMGLShapeSource.swift +65 -3
  45. package/ios/RCTMGL-v10/RCTMGLSource.swift +4 -0
  46. package/ios/RCTMGL-v10/RCTMGLStyleValue.swift +60 -1
  47. package/ios/RCTMGL-v10/RCTMGLSymbolLayer.swift +4 -0
  48. package/ios/RCTMGL-v10/RCTMGLVectorSource.swift +4 -0
  49. package/ios/RCTMGL-v10/rnmapbox_maps.h +1 -0
  50. package/lib/commonjs/components/MapView.js +47 -11
  51. package/lib/commonjs/components/MapView.js.map +1 -1
  52. package/lib/commonjs/specs/MBXAndroidTextureMapViewNativeComponent.js +13 -0
  53. package/lib/commonjs/specs/MBXAndroidTextureMapViewNativeComponent.js.map +1 -0
  54. package/lib/commonjs/specs/MBXMapViewNativeComponent.js +11 -0
  55. package/lib/commonjs/specs/MBXMapViewNativeComponent.js.map +1 -0
  56. package/lib/commonjs/specs/NativeMapViewModule.js +11 -0
  57. package/lib/commonjs/specs/NativeMapViewModule.js.map +1 -0
  58. package/lib/commonjs/specs/codegenUtils.js +2 -0
  59. package/lib/commonjs/specs/codegenUtils.js.map +1 -0
  60. package/lib/module/components/MapView.js +47 -10
  61. package/lib/module/components/MapView.js.map +1 -1
  62. package/lib/module/specs/MBXAndroidTextureMapViewNativeComponent.js +5 -0
  63. package/lib/module/specs/MBXAndroidTextureMapViewNativeComponent.js.map +1 -0
  64. package/lib/module/specs/MBXMapViewNativeComponent.js +3 -0
  65. package/lib/module/specs/MBXMapViewNativeComponent.js.map +1 -0
  66. package/lib/module/specs/NativeMapViewModule.js +5 -0
  67. package/lib/module/specs/NativeMapViewModule.js.map +1 -0
  68. package/lib/module/specs/codegenUtils.js +2 -0
  69. package/lib/module/specs/codegenUtils.js.map +1 -0
  70. package/lib/typescript/components/MapView.d.ts +13 -3
  71. package/lib/typescript/components/MapView.d.ts.map +1 -1
  72. package/lib/typescript/specs/MBXAndroidTextureMapViewNativeComponent.d.ts +52 -0
  73. package/lib/typescript/specs/MBXAndroidTextureMapViewNativeComponent.d.ts.map +1 -0
  74. package/lib/typescript/specs/MBXMapViewNativeComponent.d.ts +52 -0
  75. package/lib/typescript/specs/MBXMapViewNativeComponent.d.ts.map +1 -0
  76. package/lib/typescript/specs/NativeMapViewModule.d.ts +21 -0
  77. package/lib/typescript/specs/NativeMapViewModule.d.ts.map +1 -0
  78. package/lib/typescript/specs/codegenUtils.d.ts +2 -0
  79. package/lib/typescript/specs/codegenUtils.d.ts.map +1 -0
  80. package/package.json +9 -1
  81. package/rnmapbox-maps.podspec +22 -4
  82. package/setup-jest.js +16 -0
  83. package/src/components/MapView.tsx +56 -12
  84. package/src/specs/MBXAndroidTextureMapViewNativeComponent.ts +63 -0
  85. package/src/specs/MBXMapViewNativeComponent.ts +63 -0
  86. package/src/specs/NativeMapViewModule.ts +54 -0
  87. package/src/specs/codegenUtils.ts +4 -0
  88. package/ios/RCTMGL-v10/RCTMGLMapViewManager.m +0 -107
  89. package/ios/RCTMGL-v10/RCTMGLMapViewManager.swift +0 -285
@@ -0,0 +1,54 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
3
+ import { Int32 } from 'react-native/Libraries/Types/CodegenTypes';
4
+ import { TurboModuleRegistry } from 'react-native';
5
+
6
+ export interface Spec extends TurboModule {
7
+ takeSnap: (viewRef: Int32 | null, writeToDisk: boolean) => Promise<Object>;
8
+ queryTerrainElevation: (
9
+ viewRef: Int32 | null,
10
+ coordinates: ReadonlyArray<number>,
11
+ ) => Promise<Object>;
12
+ setSourceVisibility: (
13
+ viewRef: Int32 | null,
14
+ visible: boolean,
15
+ sourceId: string,
16
+ sourceLayerId: string,
17
+ ) => Promise<Object>;
18
+ getCenter: (viewRef: Int32 | null) => Promise<Object>;
19
+ getCoordinateFromView: (
20
+ viewRef: Int32 | null,
21
+ atPoint: ReadonlyArray<number>,
22
+ ) => Promise<Object>;
23
+ getPointInView: (
24
+ viewRef: Int32 | null,
25
+ atCoordinate: ReadonlyArray<number>,
26
+ ) => Promise<Object>;
27
+ getZoom: (viewRef: Int32 | null) => Promise<Object>;
28
+ getVisibleBounds: (viewRef: Int32 | null) => Promise<Object>;
29
+ queryRenderedFeaturesAtPoint: (
30
+ viewRef: Int32 | null,
31
+ atPoint: ReadonlyArray<number>,
32
+ withFilter: ReadonlyArray<Object>,
33
+ withLayerIDs: ReadonlyArray<string>,
34
+ ) => Promise<Object>;
35
+ queryRenderedFeaturesInRect: (
36
+ viewRef: Int32 | null,
37
+ withBBox: ReadonlyArray<number>,
38
+ withFilter: ReadonlyArray<Object>,
39
+ withLayerIDs: ReadonlyArray<string>,
40
+ ) => Promise<Object>;
41
+ setHandledMapChangedEvents: (
42
+ viewRef: Int32 | null,
43
+ events: ReadonlyArray<string>,
44
+ ) => Promise<Object>;
45
+ clearData: (viewRef: Int32 | null) => Promise<Object>;
46
+ querySourceFeatures: (
47
+ viewRef: Int32 | null,
48
+ sourceId: string,
49
+ withFilter: ReadonlyArray<Object>,
50
+ withSourceLayerIDs: ReadonlyArray<string>,
51
+ ) => Promise<Object>;
52
+ }
53
+
54
+ export default TurboModuleRegistry.getEnforcing<Spec>('MBXMapViewModule');
@@ -0,0 +1,4 @@
1
+ // codegen will generate folly::dynamic in place of this type, but it's not exported by RN
2
+ // since codegen doesn't really follow imports, this way we can trick it into generating the correct type
3
+ // while keeping typescript happy
4
+ export type UnsafeMixed = any;
@@ -1,107 +0,0 @@
1
- #import <React/RCTBridgeModule.h>
2
- #import <React/RCTViewManager.h>
3
-
4
- @interface RCT_EXTERN_REMAP_MODULE(RCTMGLMapView, RCTMGLMapViewManager, RCTViewManager)
5
-
6
- RCT_EXPORT_VIEW_PROPERTY(onCameraChanged, RCTDirectEventBlock)
7
-
8
- RCT_REMAP_VIEW_PROPERTY(attributionEnabled, reactAttributionEnabled, BOOL)
9
- RCT_REMAP_VIEW_PROPERTY(attributionPosition, reactAttributionPosition, NSDictionary)
10
-
11
- RCT_REMAP_VIEW_PROPERTY(logoEnabled, reactLogoEnabled, BOOL)
12
- RCT_REMAP_VIEW_PROPERTY(logoPosition, reactLogoPosition, NSDictionary)
13
-
14
- RCT_REMAP_VIEW_PROPERTY(compassEnabled, reactCompassEnabled, BOOL)
15
- RCT_REMAP_VIEW_PROPERTY(compassFadeWhenNorth, reactCompassFadeWhenNorth, BOOL)
16
- RCT_REMAP_VIEW_PROPERTY(compassPosition, reactCompassPosition, NSDictionary)
17
- RCT_REMAP_VIEW_PROPERTY(compassViewPosition, reactCompassViewPosition, NSInteger)
18
- RCT_REMAP_VIEW_PROPERTY(compassViewMargins, reactCompassViewMargins, CGPoint)
19
- RCT_REMAP_VIEW_PROPERTY(compassImage, reactCompassImage, NSString)
20
-
21
- RCT_REMAP_VIEW_PROPERTY(scaleBarEnabled, reactScaleBarEnabled, BOOL)
22
- RCT_REMAP_VIEW_PROPERTY(scaleBarPosition, reactScaleBarPosition, NSDictionary)
23
-
24
- RCT_REMAP_VIEW_PROPERTY(zoomEnabled, reactZoomEnabled, BOOL)
25
- RCT_REMAP_VIEW_PROPERTY(scrollEnabled, reactScrollEnabled, BOOL)
26
- RCT_REMAP_VIEW_PROPERTY(rotateEnabled, reactRotateEnabled, BOOL)
27
- RCT_REMAP_VIEW_PROPERTY(pitchEnabled, reactPitchEnabled, BOOL)
28
-
29
- RCT_REMAP_VIEW_PROPERTY(projection, reactProjection, NSString)
30
- RCT_REMAP_VIEW_PROPERTY(localizeLabels, reactLocalizeLabels, NSDictionary)
31
-
32
- RCT_REMAP_VIEW_PROPERTY(styleURL, reactStyleURL, NSString)
33
- RCT_REMAP_VIEW_PROPERTY(onPress, reactOnPress, RCTBubblingEventBlock)
34
- RCT_REMAP_VIEW_PROPERTY(onLongPress, reactOnLongPress, RCTBubblingEventBlock)
35
- RCT_REMAP_VIEW_PROPERTY(onMapChange, reactOnMapChange, RCTBubblingEventBlock)
36
-
37
- RCT_EXTERN_METHOD(takeSnap:(nonnull NSNumber*)reactTag
38
- writeToDisk:(BOOL)writeToDisk
39
- resolver:(RCTPromiseResolveBlock)resolve
40
- rejecter:(RCTPromiseRejectBlock)reject)
41
-
42
- RCT_EXTERN_METHOD(queryTerrainElevation:(nonnull NSNumber*)reactTag
43
- coordinates: (nonnull NSArray<NSNumber>*)coordinates
44
- resolver:(RCTPromiseResolveBlock)resolve
45
- rejecter:(RCTPromiseRejectBlock)reject)
46
-
47
- RCT_EXTERN_METHOD(setSourceVisibility:(nonnull NSNumber *)reactTag
48
- visible:(BOOL)visible
49
- sourceId:(nonnull NSString*)sourceId
50
- sourceLayerId:(nullable NSString*)sourceLayerId
51
- resolver:(RCTPromiseResolveBlock)resolve
52
- rejecter:(RCTPromiseRejectBlock)reject)
53
-
54
- RCT_EXTERN_METHOD(getCenter:(nonnull NSNumber*)reactTag
55
- resolver:(RCTPromiseResolveBlock)resolve
56
- rejecter:(RCTPromiseRejectBlock)reject)
57
-
58
- RCT_EXTERN_METHOD(getCoordinateFromView:(nonnull NSNumber*)reactTag
59
- atPoint:(CGPoint)point
60
- resolver:(RCTPromiseResolveBlock)resolve
61
- rejecter:(RCTPromiseRejectBlock)reject)
62
-
63
- RCT_EXTERN_METHOD(getPointInView:(nonnull NSNumber*)reactTag
64
- atCoordinate:(NSArray<NSNumber*>*)coordinate
65
- resolver:(RCTPromiseResolveBlock)resolve
66
- rejecter:(RCTPromiseRejectBlock)reject)
67
-
68
- RCT_EXTERN_METHOD(getZoom:(nonnull NSNumber*)reactTag
69
- resolver:(RCTPromiseResolveBlock)resolve
70
- rejecter:(RCTPromiseRejectBlock)reject)
71
-
72
- RCT_EXTERN_METHOD(getVisibleBounds:(nonnull NSNumber*)reactTag
73
- resolver:(RCTPromiseResolveBlock)resolve
74
- rejecter:(RCTPromiseRejectBlock)reject)
75
-
76
- RCT_EXTERN_METHOD(queryRenderedFeaturesAtPoint:(nonnull NSNumber*)reactTag
77
- atPoint:(NSArray<NSNumber*>*)point
78
- withFilter:(NSArray*)filter
79
- withLayerIDs:(NSArray<NSString*>*)layerIDs
80
- resolver:(RCTPromiseResolveBlock)resolve
81
- rejecter:(RCTPromiseRejectBlock)reject)
82
-
83
- RCT_EXTERN_METHOD(queryRenderedFeaturesInRect:(nonnull NSNumber*)reactTag
84
- withBBox:(NSArray<NSNumber*>*)bbox
85
- withFilter:(NSArray*)filter
86
- withLayerIDs:(NSArray<NSString*>*)layerIDs
87
- resolver:(RCTPromiseResolveBlock)resolve
88
- rejecter:(RCTPromiseRejectBlock)reject)
89
-
90
- RCT_EXTERN_METHOD(querySourceFeatures:(nonnull NSNumber*)reactTag
91
- withSourceId:(NSString*)sourceId
92
- withFilter:(NSArray)filter
93
- withSourceLayerIds:(NSArray<NSString*>*)sourceLayerIds
94
- resolver:(RCTPromiseResolveBlock)resolve
95
- rejecter:(RCTPromiseRejectBlock)reject)
96
-
97
- RCT_EXTERN_METHOD(setHandledMapChangedEvents:(nonnull NSNumber*)reactTag
98
- events:(NSArray<NSString*>*)events
99
- resolver:(RCTPromiseResolveBlock)resolve
100
- rejecter:(RCTPromiseRejectBlock)reject)
101
-
102
- RCT_EXTERN_METHOD(clearData: (nonnull NSNumber*)reactTag
103
- resolver:(RCTPromiseResolveBlock)resolve
104
- rejecter:(RCTPromiseRejectBlock)reject
105
- )
106
-
107
- @end
@@ -1,285 +0,0 @@
1
- import MapboxMaps
2
-
3
- @objc(RCTMGLMapViewManager)
4
- class RCTMGLMapViewManager: RCTViewManager {
5
- @objc
6
- override static func requiresMainQueueSetup() -> Bool {
7
- return true
8
- }
9
-
10
- func defaultFrame() -> CGRect {
11
- return UIScreen.main.bounds
12
- }
13
-
14
- override func view() -> UIView! {
15
- let result = RCTMGLMapView(frame: self.defaultFrame(), eventDispatcher: self.bridge.eventDispatcher())
16
- return result
17
- }
18
- }
19
-
20
- // MARK: helpers
21
-
22
- extension RCTMGLMapViewManager {
23
- func withMapView(
24
- _ reactTag: NSNumber,
25
- name: String,
26
- rejecter: @escaping RCTPromiseRejectBlock,
27
- fn: @escaping (_: RCTMGLMapView) -> Void) -> Void
28
- {
29
- self.bridge.uiManager.addUIBlock { (manager, viewRegistry) in
30
- let view = viewRegistry![reactTag]
31
-
32
- guard let view = view, let view = view as? RCTMGLMapView else {
33
- RCTMGLLogError("Invalid react tag, could not find RCTMGLMapView");
34
- rejecter(name, "Unknown find reactTag: \(reactTag)", nil)
35
- return;
36
- }
37
-
38
- fn(view)
39
- }
40
- }
41
-
42
- func withMapboxMap(
43
- _ reactTag: NSNumber,
44
- name: String,
45
- rejecter: @escaping RCTPromiseRejectBlock,
46
- fn: @escaping (_: MapboxMap) -> Void) -> Void
47
- {
48
- withMapView(reactTag, name: name, rejecter: rejecter) { view in
49
- guard let mapboxMap = view.mapboxMap else {
50
- RCTMGLLogError("MapboxMap is not yet available");
51
- rejecter(name, "Map not loaded yet", nil)
52
- return;
53
- }
54
-
55
- fn(mapboxMap)
56
- }
57
- }
58
- }
59
-
60
- // MARK: - react methods
61
-
62
- extension RCTMGLMapViewManager {
63
- @objc
64
- func takeSnap(_ reactTag: NSNumber,
65
- writeToDisk: Bool,
66
- resolver: @escaping RCTPromiseResolveBlock,
67
- rejecter: @escaping RCTPromiseRejectBlock
68
- ) -> Void {
69
- withMapView(reactTag, name:"takeSnap", rejecter: rejecter) { view in
70
- let uri = view.takeSnap(writeToDisk: writeToDisk)
71
- resolver(["uri": uri.absoluteString])
72
- }
73
- }
74
-
75
- @objc
76
- func queryTerrainElevation(_ reactTag: NSNumber,
77
- coordinates: [NSNumber],
78
- resolver: @escaping RCTPromiseResolveBlock,
79
- rejecter: @escaping RCTPromiseRejectBlock
80
- ) -> Void {
81
- withMapView(reactTag, name:"queryTerrainElevation", rejecter: rejecter) { view in
82
- let result = view.queryTerrainElevation(coordinates: coordinates)
83
- if let result = result {
84
- resolver(["data": NSNumber(value: result)])
85
- } else {
86
- resolver(nil)
87
- }
88
- }
89
- }
90
-
91
- @objc
92
- func setSourceVisibility(_ reactTag: NSNumber,
93
- visible: Bool,
94
- sourceId: String,
95
- sourceLayerId: String?,
96
- resolver: @escaping RCTPromiseResolveBlock,
97
- rejecter: @escaping RCTPromiseRejectBlock) -> Void {
98
- withMapView(reactTag, name:"setSourceVisibility", rejecter: rejecter) { view in
99
- view.setSourceVisibility(visible, sourceId: sourceId, sourceLayerId:sourceLayerId)
100
- resolver(nil)
101
- }
102
- }
103
-
104
- @objc
105
- func getCenter(_ reactTag: NSNumber,
106
- resolver: @escaping RCTPromiseResolveBlock,
107
- rejecter: @escaping RCTPromiseRejectBlock) -> Void {
108
- withMapboxMap(reactTag, name:"getCenter", rejecter: rejecter) { mapboxMap in
109
- resolver(["center": [
110
- mapboxMap.cameraState.center.longitude,
111
- mapboxMap.cameraState.center.latitude
112
- ]])
113
- }
114
- }
115
-
116
- @objc
117
- func getCoordinateFromView(
118
- _ reactTag: NSNumber,
119
- atPoint point: CGPoint,
120
- resolver: @escaping RCTPromiseResolveBlock,
121
- rejecter: @escaping RCTPromiseRejectBlock) {
122
- withMapboxMap(reactTag, name:"getCoordinateFromView", rejecter: rejecter) { mapboxMap in
123
- let coordinates = mapboxMap.coordinate(for: point)
124
- resolver(["coordinateFromView": [coordinates.longitude, coordinates.latitude]])
125
- }
126
- }
127
-
128
- @objc
129
- func getPointInView(
130
- _ reactTag: NSNumber,
131
- atCoordinate coordinate: [NSNumber],
132
- resolver: @escaping RCTPromiseResolveBlock,
133
- rejecter: @escaping RCTPromiseRejectBlock) {
134
- withMapboxMap(reactTag, name:"getPointInView", rejecter: rejecter) { mapboxMap in
135
- let coordinate = CLLocationCoordinate2DMake(coordinate[1].doubleValue, coordinate[0].doubleValue)
136
- let point = mapboxMap.point(for: coordinate)
137
- resolver(["pointInView": [(point.x), (point.y)]])
138
- }
139
- }
140
-
141
- @objc
142
- func setHandledMapChangedEvents(
143
- _ reactTag: NSNumber,
144
- events: [String],
145
- resolver: @escaping RCTPromiseResolveBlock,
146
- rejecter: @escaping RCTPromiseRejectBlock) {
147
- withMapView(reactTag, name:"setHandledMapChangedEvents", rejecter: rejecter) { mapView in
148
- mapView.handleMapChangedEvents = Set(events.compactMap {
149
- RCTMGLEvent.EventType(rawValue: $0)
150
- })
151
- resolver(nil);
152
- }
153
- }
154
-
155
- @objc
156
- func getZoom(
157
- _ reactTag: NSNumber,
158
- resolver: @escaping RCTPromiseResolveBlock,
159
- rejecter: @escaping RCTPromiseRejectBlock) {
160
- withMapboxMap(reactTag, name:"getZoom", rejecter: rejecter) { mapboxMap in
161
- resolver(["zoom": mapboxMap.cameraState.zoom])
162
- }
163
- }
164
-
165
- @objc
166
- func getVisibleBounds(
167
- _ reactTag: NSNumber,
168
- resolver: @escaping RCTPromiseResolveBlock,
169
- rejecter: @escaping RCTPromiseRejectBlock) {
170
- withMapView(reactTag, name:"getVisibleBounds", rejecter: rejecter) { mapView in
171
- resolver(["visibleBounds": mapView.mapboxMap.coordinateBounds(for: mapView.bounds).toArray()])
172
- }
173
- }
174
- }
175
-
176
- // MARK: - queryRenderedFeatures
177
-
178
- extension RCTMGLMapViewManager {
179
- @objc
180
- func queryRenderedFeaturesAtPoint(
181
- _ reactTag: NSNumber,
182
- atPoint point: [NSNumber],
183
- withFilter filter: [Any]?,
184
- withLayerIDs layerIDs: [String]?,
185
- resolver: @escaping RCTPromiseResolveBlock,
186
- rejecter: @escaping RCTPromiseRejectBlock) -> Void {
187
- withMapboxMap(reactTag, name:"queryRenderedFeaturesAtPoint", rejecter: rejecter) { mapboxMap in
188
- let point = CGPoint(x: CGFloat(point[0].floatValue), y: CGFloat(point[1].floatValue))
189
-
190
- logged("queryRenderedFeaturesAtPoint.option", rejecter: rejecter) {
191
- let options = try RenderedQueryOptions(layerIds: (layerIDs ?? []).isEmpty ? nil : layerIDs, filter: filter?.asExpression())
192
-
193
- mapboxMap.queryRenderedFeatures(with: point, options: options) { result in
194
- switch result {
195
- case .success(let features):
196
- resolver([
197
- "data": ["type": "FeatureCollection", "features": features.compactMap { queriedFeature in
198
- logged("queryRenderedFeaturesAtPoint.feature.toJSON") { try queriedFeature.feature.toJSON() }
199
- }]
200
- ])
201
- case .failure(let error):
202
- rejecter("queryRenderedFeaturesAtPoint","failed to query features", error)
203
- }
204
- }
205
- }
206
- }
207
- }
208
-
209
- @objc
210
- func queryRenderedFeaturesInRect(
211
- _ reactTag: NSNumber,
212
- withBBox bbox: [NSNumber],
213
- withFilter filter: [Any]?,
214
- withLayerIDs layerIDs: [String]?,
215
- resolver: @escaping RCTPromiseResolveBlock,
216
- rejecter: @escaping RCTPromiseRejectBlock) -> Void {
217
- withMapView(reactTag, name:"queryRenderedFeaturesInRect", rejecter: rejecter) { mapView in
218
- let top = bbox.isEmpty ? 0.0 : CGFloat(bbox[0].floatValue)
219
- let right = bbox.isEmpty ? 0.0 : CGFloat(bbox[1].floatValue)
220
- let bottom = bbox.isEmpty ? 0.0 : CGFloat(bbox[2].floatValue)
221
- let left = bbox.isEmpty ? 0.0 : CGFloat(bbox[3].floatValue)
222
- let rect = bbox.isEmpty ? CGRect(x: 0.0, y: 0.0, width: mapView.bounds.size.width, height: mapView.bounds.size.height) : CGRect(x: [left,right].min()!, y: [top,bottom].min()!, width: abs(right-left), height: abs(bottom-top))
223
- logged("queryRenderedFeaturesInRect.option", rejecter: rejecter) {
224
- let options = try RenderedQueryOptions(layerIds: layerIDs?.isEmpty ?? true ? nil : layerIDs, filter: filter?.asExpression())
225
- mapView.mapboxMap.queryRenderedFeatures(with: rect, options: options) { result in
226
- switch result {
227
- case .success(let features):
228
- resolver([
229
- "data": ["type": "FeatureCollection", "features": features.compactMap { queriedFeature in
230
- logged("queryRenderedFeaturesInRect.queriedfeature.map") { try queriedFeature.feature.toJSON() }
231
- }]
232
- ])
233
- case .failure(let error):
234
- rejecter("queryRenderedFeaturesInRect","failed to query features", error)
235
- }
236
- }
237
- }
238
- }
239
- }
240
-
241
- @objc
242
- func querySourceFeatures(
243
- _ reactTag: NSNumber,
244
- withSourceId sourceId: String,
245
- withFilter filter: [Any]?,
246
- withSourceLayerIds sourceLayerIds: [String]?,
247
- resolver: @escaping RCTPromiseResolveBlock,
248
- rejecter: @escaping RCTPromiseRejectBlock) -> Void {
249
- withMapView(reactTag, name:"querySourceFeatures", rejecter: rejecter) { mapView in
250
- let sourceLayerIds = sourceLayerIds?.isEmpty ?? true ? nil : sourceLayerIds
251
- logged("querySourceFeatures.option", rejecter: rejecter) {
252
- let options = SourceQueryOptions(sourceLayerIds: sourceLayerIds, filter: filter ?? Exp(arguments: []))
253
- mapView.mapboxMap.querySourceFeatures(for: sourceId, options: options) { result in
254
- switch result {
255
- case .success(let features):
256
- resolver([
257
- "data": ["type": "FeatureCollection", "features": features.compactMap { queriedFeature in
258
- logged("querySourceFeatures.queriedfeature.map") { try queriedFeature.feature.toJSON() }
259
- }] as [String : Any]
260
- ])
261
- case .failure(let error):
262
- rejecter("querySourceFeatures", "failed to query source features: \(error.localizedDescription)", error)
263
- }
264
- }
265
- }
266
- }
267
- }
268
-
269
- @objc
270
- func clearData(
271
- _ reactTag: NSNumber,
272
- resolver: @escaping RCTPromiseResolveBlock,
273
- rejecter: @escaping RCTPromiseRejectBlock
274
- ) {
275
- withMapView(reactTag, name:"clearDataPath", rejecter: rejecter) { mapView in
276
- mapView.mapboxMap.clearData { error in
277
- if let error = error {
278
- rejecter("clearData","failed to clearData: \(error.localizedDescription)", error)
279
- } else {
280
- resolver(nil)
281
- }
282
- }
283
- }
284
- }
285
- }