react-native-maps 1.21.0-alpha.6 → 1.21.0-alpha.61

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 (133) hide show
  1. package/android/build.gradle +35 -11
  2. package/android/generated/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
  3. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +199 -0
  4. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +71 -0
  5. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +103 -0
  6. package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
  7. package/android/generated/jni/CMakeLists.txt +36 -0
  8. package/android/generated/jni/RNMapsSpecs-generated.cpp +68 -0
  9. package/android/generated/jni/RNMapsSpecs.h +31 -0
  10. package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +25 -0
  11. package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +27 -0
  12. package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +896 -0
  13. package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +765 -0
  14. package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.cpp +146 -0
  15. package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.h +1047 -0
  16. package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
  17. package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +264 -0
  18. package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +20 -0
  19. package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +65 -0
  20. package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
  21. package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.h +65 -0
  22. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  23. package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
  24. package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +586 -0
  25. package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +176 -0
  26. package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +25 -2
  27. package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
  28. package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
  29. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
  30. package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
  31. package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
  32. package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
  33. package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
  34. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
  35. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
  36. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
  37. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
  38. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
  39. package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
  40. package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
  41. package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
  42. package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
  43. package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
  44. package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
  45. package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +18 -2
  46. package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
  47. package/android/src/main/java/com/rnmaps/maps/MapMarker.java +53 -1
  48. package/android/src/main/java/com/rnmaps/maps/MapView.java +1613 -1346
  49. package/ios/AirGoogleMaps/AIRGoogleMap.h +8 -2
  50. package/ios/AirGoogleMaps/AIRGoogleMap.m +243 -55
  51. package/ios/AirGoogleMaps/AIRGoogleMapCircle.h +0 -1
  52. package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
  53. package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.h +13 -0
  54. package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.m +10 -0
  55. package/ios/AirGoogleMaps/AIRGoogleMapManager.h +7 -0
  56. package/ios/AirGoogleMaps/AIRGoogleMapManager.m +30 -119
  57. package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +2 -0
  58. package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +347 -243
  59. package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +0 -1
  60. package/ios/AirGoogleMaps/AIRGoogleMapOverlay.h +0 -1
  61. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +5 -4
  62. package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +32 -2
  63. package/ios/AirGoogleMaps/AIRGoogleMapPolygonManager.m +3 -3
  64. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +3 -2
  65. package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +2 -3
  66. package/ios/AirGoogleMaps/AIRGoogleMapPolylineManager.m +2 -2
  67. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
  68. package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +2 -2
  69. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.h +3 -0
  70. package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +18 -0
  71. package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +26 -0
  72. package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +629 -0
  73. package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +25 -0
  74. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
  75. package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
  76. package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +25 -0
  77. package/ios/AirMaps/AIRMap.h +8 -5
  78. package/ios/AirMaps/AIRMap.m +292 -141
  79. package/ios/AirMaps/AIRMapManager.m +12 -21
  80. package/ios/AirMaps/AIRMapMarker.h +1 -0
  81. package/ios/AirMaps/AIRMapMarker.m +165 -103
  82. package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
  83. package/ios/AirMaps/RCTConvert+AirMap.h +4 -0
  84. package/ios/AirMaps/RCTConvert+AirMap.m +2 -0
  85. package/ios/AirMaps/RNMapsAirModule.h +4 -1
  86. package/ios/AirMaps/RNMapsAirModule.mm +42 -172
  87. package/ios/AirMaps/RNMapsAirModuleDelegate.h +24 -0
  88. package/ios/AirMaps/RNMapsHostVewDelegate.h +17 -0
  89. package/ios/AirMaps/RNMapsMapView.h +6 -3
  90. package/ios/AirMaps/RNMapsMapView.mm +346 -332
  91. package/ios/AirMaps/RNMapsMarkerView.h +24 -0
  92. package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
  93. package/ios/AirMaps/RNMapsMarkerViewManager.mm +21 -0
  94. package/ios/AirMaps/UIView +AirMap.m +20 -0
  95. package/ios/AirMaps/UIView+AirMap.h +11 -0
  96. package/ios/AirMaps.xcodeproj/project.pbxproj +60 -0
  97. package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +25 -0
  98. package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +27 -0
  99. package/ios/generated/RNMapsSpecs/EventEmitters.cpp +896 -0
  100. package/ios/generated/RNMapsSpecs/EventEmitters.h +765 -0
  101. package/ios/generated/RNMapsSpecs/Props.cpp +146 -0
  102. package/ios/generated/RNMapsSpecs/Props.h +1047 -0
  103. package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +549 -0
  104. package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
  105. package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +134 -0
  106. package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +20 -0
  107. package/ios/generated/RNMapsSpecs/ShadowNodes.h +65 -0
  108. package/ios/generated/RNMapsSpecs/States.cpp +16 -0
  109. package/ios/generated/RNMapsSpecs/States.h +65 -0
  110. package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
  111. package/ios/generated/RNMapsSpecsJSI.h +264 -0
  112. package/lib/MapMarker.d.ts +15 -2
  113. package/lib/MapMarker.js +53 -9
  114. package/lib/MapMarkerNativeComponent.js +0 -2
  115. package/lib/MapOverlay.d.ts +1 -1
  116. package/lib/MapOverlay.js +2 -8
  117. package/lib/MapView.d.ts +6 -23
  118. package/lib/MapView.js +61 -80
  119. package/lib/{FabricMapView.d.ts → createFabricMap.d.ts} +7 -6
  120. package/lib/createFabricMap.js +175 -0
  121. package/lib/decorateMapComponent.js +17 -0
  122. package/lib/specs/NativeAirMapsModule.d.ts +2 -2
  123. package/lib/specs/NativeComponentGoogleMapView.d.ts +713 -0
  124. package/lib/specs/NativeComponentGoogleMapView.js +21 -0
  125. package/lib/specs/NativeComponentGooglePolygon.d.ts +75 -0
  126. package/lib/specs/NativeComponentGooglePolygon.js +9 -0
  127. package/lib/specs/NativeComponentMapView.d.ts +21 -45
  128. package/lib/specs/NativeComponentMapView.js +1 -3
  129. package/lib/specs/NativeComponentMarker.d.ts +258 -0
  130. package/lib/specs/NativeComponentMarker.js +19 -0
  131. package/package.json +13 -7
  132. package/react-native-maps.podspec +2 -1
  133. package/lib/FabricMapView.js +0 -175
@@ -0,0 +1,586 @@
1
+ package com.rnmaps.fabric;
2
+
3
+
4
+ import static com.rnmaps.maps.MapManager.MY_LOCATION_PRIORITY;
5
+
6
+ import android.util.Log;
7
+ import android.view.View;
8
+
9
+ import androidx.annotation.NonNull;
10
+ import androidx.annotation.Nullable;
11
+
12
+ import org.json.JSONArray;
13
+ import org.json.JSONException;
14
+ import org.json.JSONObject;
15
+
16
+ import com.facebook.react.bridge.ReactApplicationContext;
17
+ import com.facebook.react.bridge.ReadableMap;
18
+ import com.facebook.react.bridge.WritableArray;
19
+ import com.facebook.react.bridge.WritableMap;
20
+ import com.facebook.react.module.annotations.ReactModule;
21
+ import com.facebook.react.uimanager.LayoutShadowNode;
22
+ import com.facebook.react.uimanager.ReactStylesDiffMap;
23
+ import com.facebook.react.uimanager.StateWrapper;
24
+ import com.facebook.react.uimanager.ThemedReactContext;
25
+ import com.facebook.react.uimanager.ViewGroupManager;
26
+ import com.facebook.react.uimanager.ViewManagerDelegate;
27
+ import com.facebook.react.viewmanagers.RNMapsMapViewManagerInterface;
28
+ import com.facebook.react.viewmanagers.RNMapsMapViewManagerDelegate;
29
+ import com.google.android.gms.maps.GoogleMap;
30
+ import com.google.android.gms.maps.GoogleMapOptions;
31
+ import com.google.android.gms.maps.MapsInitializer;
32
+ import com.google.android.gms.maps.model.CameraPosition;
33
+ import com.google.android.gms.maps.model.LatLng;
34
+ import com.google.android.gms.maps.model.LatLngBounds;
35
+ import com.google.android.gms.maps.model.MapColorScheme;
36
+ import com.rnmaps.maps.MapView;
37
+ import com.rnmaps.maps.SizeReportingShadowNode;
38
+
39
+ import java.util.Map;
40
+
41
+ @ReactModule(name = MapViewManager.REACT_CLASS)
42
+ public class MapViewManager extends ViewGroupManager<MapView> implements RNMapsMapViewManagerInterface<MapView> {
43
+
44
+ private static boolean rendererInitialized = false;
45
+ private final RNMapsMapViewManagerDelegate<MapView, MapViewManager> delegate =
46
+ new RNMapsMapViewManagerDelegate<>(this);
47
+
48
+
49
+ public MapViewManager(ReactApplicationContext context) {
50
+ super(context);
51
+ }
52
+
53
+
54
+ @Override
55
+ public ViewManagerDelegate<MapView> getDelegate() {
56
+ return delegate;
57
+ }
58
+
59
+ @Override
60
+ public String getName() {
61
+ return REACT_CLASS;
62
+ }
63
+
64
+ @Override
65
+ public MapView createViewInstance(ThemedReactContext context) {
66
+ return new MapView(context, new GoogleMapOptions());
67
+ }
68
+
69
+ @Override
70
+ protected void setupViewRecycling() {
71
+ // override parent to block recycling / allow reliable GoogleMapsOptions passing
72
+ }
73
+
74
+ private GoogleMapOptions optionsForInitialProps(ReactStylesDiffMap initialProps){
75
+ GoogleMapOptions options = new GoogleMapOptions();
76
+ if (initialProps != null) {
77
+ setGoogleRenderer(null, initialProps.getString("googleRenderer"));
78
+ if (initialProps.hasKey("liteMode")) {
79
+ options.liteMode(initialProps.getBoolean("liteMode", false));
80
+ }
81
+ if (initialProps.hasKey("googleMapId")) {
82
+ String googleMapId = initialProps.getString("googleMapId");
83
+ options.mapId(googleMapId);
84
+ }
85
+ if (initialProps.getMap("initialCamera") != null) {
86
+ ReadableMap initialCamera = initialProps.getMap("initialCamera");
87
+ CameraPosition camera = MapView.cameraPositionFromMap(initialCamera);
88
+ if (camera != null) {
89
+ options.camera(camera);
90
+ }
91
+ }
92
+ if (initialProps.hasKey("mapType")) {
93
+ if (initialProps.getString("mapType") != null) {
94
+ options.mapType(mapTypeFromStrValue(initialProps.getString("mapType")));
95
+ }
96
+ }
97
+ if (initialProps.hasKey("minZoom")) {
98
+ if (initialProps.getInt("minZoom", 0) != 0) {
99
+ options.minZoomPreference(initialProps.getInt("minZoom", 0));
100
+ }
101
+ }
102
+ if (initialProps.hasKey("maxZoom")) {
103
+ if (initialProps.getInt("maxZoom", 0) != 0) {
104
+ options.maxZoomPreference(initialProps.getInt("maxZoom", 0));
105
+ }
106
+ }
107
+ if (initialProps.hasKey("userInterfaceStyle")){
108
+ String style = initialProps.getString("userInterfaceStyle");
109
+ if ("system".equals(style)) {
110
+ options.mapColorScheme(MapColorScheme.FOLLOW_SYSTEM);
111
+ } else if ("light".equals(style)){
112
+ options.mapColorScheme(MapColorScheme.LIGHT);
113
+ } else if ("dark".equals(style)){
114
+ options.mapColorScheme(MapColorScheme.DARK);
115
+ }
116
+ }
117
+ if (initialProps.hasKey("pitchEnabled")) {
118
+ options.tiltGesturesEnabled(initialProps.getBoolean("pitchEnabled", true));
119
+ }
120
+ if (initialProps.hasKey("rotateEnabled")) {
121
+ options.rotateGesturesEnabled(initialProps.getBoolean("rotateEnabled", true));
122
+ }
123
+ if (initialProps.hasKey("scrollDuringRotateOrZoomEnabled")) {
124
+ options.scrollGesturesEnabledDuringRotateOrZoom(initialProps.getBoolean("scrollDuringRotateOrZoomEnabled", true));
125
+ }
126
+ if (initialProps.hasKey("scrollEnabled")) {
127
+ options.scrollGesturesEnabled(initialProps.getBoolean("scrollEnabled", true));
128
+ }
129
+ if (initialProps.hasKey("showsCompass")) {
130
+ options.compassEnabled(initialProps.getBoolean("showsCompass", true));
131
+ }
132
+ if (initialProps.hasKey("toolbarEnabled")) {
133
+ options.mapToolbarEnabled(initialProps.getBoolean("toolbarEnabled", true));
134
+ }
135
+ if (initialProps.hasKey("zoomControlEnabled")) {
136
+ options.zoomControlsEnabled(initialProps.getBoolean("zoomControlEnabled", true));
137
+ }
138
+ if (initialProps.hasKey("zoomEnabled")) {
139
+ options.zoomGesturesEnabled(initialProps.getBoolean("zoomEnabled", true));
140
+ }
141
+ }
142
+ return options;
143
+ }
144
+ @Override
145
+ protected MapView createViewInstance(int reactTag, @NonNull ThemedReactContext reactContext, @Nullable ReactStylesDiffMap initialProps, @Nullable StateWrapper stateWrapper) {
146
+ MapView view = null;
147
+ view = new MapView(reactContext, optionsForInitialProps(initialProps));
148
+ view.setId(reactTag);
149
+ this.addEventEmitters(reactContext, view);
150
+ if (initialProps != null) {
151
+ this.updateProperties(view, initialProps);
152
+ }
153
+ if (stateWrapper != null) {
154
+ Object extraData = this.updateState(view, initialProps, stateWrapper);
155
+ if (extraData != null) {
156
+ this.updateExtraData(view, extraData);
157
+ }
158
+ }
159
+ return view;
160
+ }
161
+
162
+
163
+ public static final String REACT_CLASS = "RNMapsMapView";
164
+
165
+ @Nullable
166
+ @Override
167
+ public Map<String, Object> getExportedCustomBubblingEventTypeConstants() {
168
+ return MapView.getExportedCustomBubblingEventTypeConstants();
169
+ }
170
+
171
+
172
+ @Override
173
+ public LayoutShadowNode createShadowNodeInstance() {
174
+ // A custom shadow node is needed in order to pass back the width/height of the map to the
175
+ // view manager so that it can start applying camera moves with bounds.
176
+ return new SizeReportingShadowNode();
177
+ }
178
+
179
+ @Nullable
180
+ @Override
181
+ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
182
+ return MapView.getExportedCustomDirectEventTypeConstants();
183
+ }
184
+
185
+ @Override
186
+ public void setCacheEnabled(MapView view, boolean value) {
187
+ view.setCacheEnabled(value);
188
+ }
189
+
190
+ @Override
191
+ public void setCamera(MapView view, @Nullable ReadableMap value) {
192
+ view.setCamera(value);
193
+ }
194
+
195
+ @Override
196
+ public void setCompassOffset(MapView view, @Nullable ReadableMap value) {
197
+ // not supported
198
+ }
199
+
200
+ @Override
201
+ public void setFollowsUserLocation(MapView view, boolean value) {
202
+ // not supported
203
+ }
204
+
205
+ @Override
206
+ public void setPoiClickEnabled(MapView view, boolean value) {
207
+ view.setPoiClickEnabled(value);
208
+ }
209
+
210
+ @Override
211
+ public void setInitialCamera(MapView view, @Nullable ReadableMap value) {
212
+ CameraPosition camera = MapView.cameraPositionFromMap(value);
213
+ if (camera != null) {
214
+ view.setInitialCameraSet(true);
215
+ }
216
+ }
217
+
218
+
219
+ @Override
220
+ public void setInitialRegion(MapView view, @Nullable ReadableMap value) {
221
+ view.setInitialRegion(value);
222
+ }
223
+
224
+ @Override
225
+ public void setKmlSrc(MapView view, @Nullable String value) {
226
+ view.setKmlSrc(value);
227
+ }
228
+
229
+ @Override
230
+ public void setLegalLabelInsets(MapView view, @Nullable ReadableMap value) {
231
+ // not supported
232
+ }
233
+
234
+ @Override
235
+ public void setLiteMode(MapView view, boolean value) {
236
+ // do nothing (initialProp)
237
+ }
238
+
239
+ @Override
240
+ public void setGoogleMapId(MapView view, @Nullable String value) {
241
+ // do nothing (initialProp)
242
+ }
243
+
244
+ @Override
245
+ public void setGoogleRenderer(MapView view, @Nullable String value) {
246
+ if (!rendererInitialized) {
247
+ MapsInitializer.Renderer renderer = MapsInitializer.Renderer.LATEST;
248
+ if ("LEGACY".equals(value)) {
249
+ renderer = MapsInitializer.Renderer.LEGACY;
250
+ }
251
+ MapsInitializer.initialize(getReactApplicationContext(), renderer, r -> Log.d("AirMapRenderer", "Init with renderer: " + r));
252
+ rendererInitialized = true;
253
+ }
254
+
255
+ }
256
+
257
+ @Override
258
+ public void setLoadingBackgroundColor(MapView view, @Nullable Integer value) {
259
+ view.setLoadingBackgroundColor(value);
260
+ }
261
+
262
+ @Override
263
+ public void setLoadingEnabled(MapView view, boolean value) {
264
+ view.setLoadingEnabled(value);
265
+ }
266
+
267
+ @Override
268
+ public void setLoadingIndicatorColor(MapView view, @Nullable Integer value) {
269
+ view.setLoadingIndicatorColor(value);
270
+ }
271
+
272
+ @Override
273
+ public void setMapPadding(MapView view, @Nullable ReadableMap padding) {
274
+ int left = 0;
275
+ int top = 0;
276
+ int right = 0;
277
+ int bottom = 0;
278
+ double density = (double) view.getResources().getDisplayMetrics().density;
279
+
280
+ if (padding != null) {
281
+ if (padding.hasKey("left")) {
282
+ left = (int) (padding.getDouble("left") * density);
283
+ }
284
+
285
+ if (padding.hasKey("top")) {
286
+ top = (int) (padding.getDouble("top") * density);
287
+ }
288
+
289
+ if (padding.hasKey("right")) {
290
+ right = (int) (padding.getDouble("right") * density);
291
+ }
292
+
293
+ if (padding.hasKey("bottom")) {
294
+ bottom = (int) (padding.getDouble("bottom") * density);
295
+ }
296
+ }
297
+
298
+ view.applyBaseMapPadding(left, top, right, bottom);
299
+ view.map.setPadding(left, top, right, bottom);
300
+ }
301
+
302
+ @Override
303
+ public void addView(MapView parent, View child, int index) {
304
+ parent.addFeature(child, index);
305
+ }
306
+
307
+ @Override
308
+ public void setMapType(MapView view, @Nullable String value) {
309
+ view.setMapType(mapTypeFromStrValue(value));
310
+ }
311
+
312
+ private static int mapTypeFromStrValue(String value) {
313
+ int mapType;
314
+ //hybrid | none | satellite | standard | terrain
315
+ if ("hybrid".equals(value)) {
316
+ mapType = GoogleMap.MAP_TYPE_HYBRID;
317
+ } else if ("none".equals(value)) {
318
+ mapType = GoogleMap.MAP_TYPE_NONE;
319
+ } else if ("satellite".equals(value)) {
320
+ mapType = GoogleMap.MAP_TYPE_SATELLITE;
321
+ } else if ("standard".equals(value)) {
322
+ mapType = GoogleMap.MAP_TYPE_NORMAL;
323
+ } else if ("terrain".equals(value)) {
324
+ mapType = GoogleMap.MAP_TYPE_TERRAIN;
325
+ } else {
326
+ mapType = GoogleMap.MAP_TYPE_NORMAL;
327
+ }
328
+ return mapType;
329
+ }
330
+
331
+ @Override
332
+ public void setMaxDelta(MapView view, double value) {
333
+ // not supported
334
+ }
335
+
336
+ @Override
337
+ public void setMaxZoom(MapView view, float value) {
338
+ view.setMaxZoomLevel(value);
339
+ }
340
+
341
+ @Override
342
+ public void setMinDelta(MapView view, double value) {
343
+ // not supported
344
+ }
345
+
346
+ @Override
347
+ public void setMinZoom(MapView view, float value) {
348
+ view.setMinZoomLevel(value);
349
+ }
350
+
351
+ @Override
352
+ public void setMoveOnMarkerPress(MapView view, boolean value) {
353
+ view.setMoveOnMarkerPress(value);
354
+ }
355
+
356
+ @Override
357
+ public void setHandlePanDrag(MapView view, boolean value) {
358
+ view.setHandlePanDrag(value);
359
+ }
360
+
361
+ @Override
362
+ public void setPaddingAdjustmentBehavior(MapView view, @Nullable String value) {
363
+ // not supported
364
+ }
365
+
366
+ @Override
367
+ public void setPitchEnabled(MapView view, boolean value) {
368
+ view.setPitchEnabled(value);
369
+ }
370
+
371
+ @Override
372
+ public void setRegion(MapView view, @Nullable ReadableMap value) {
373
+ view.setRegion(value);
374
+ }
375
+
376
+ @Override
377
+ public void setRotateEnabled(MapView view, boolean value) {
378
+ view.setRotateEnabled(value);
379
+ }
380
+
381
+ @Override
382
+ public void setScrollDuringRotateOrZoomEnabled(MapView view, boolean value) {
383
+ view.setScrollDuringRotateOrZoomEnabled(value);
384
+ }
385
+
386
+ @Override
387
+ public void setScrollEnabled(MapView view, boolean value) {
388
+ view.setScrollEnabled(value);
389
+ }
390
+
391
+ @Override
392
+ public void setShowsBuildings(MapView view, boolean value) {
393
+ view.setShowBuildings(value);
394
+ }
395
+
396
+ @Override
397
+ public void setShowsCompass(MapView view, boolean value) {
398
+ view.setShowsCompass(value);
399
+ }
400
+
401
+ @Override
402
+ public void setShowsIndoorLevelPicker(MapView view, boolean value) {
403
+ view.setShowsIndoorLevelPicker(value);
404
+ }
405
+
406
+ @Override
407
+ public void setShowsIndoors(MapView view, boolean value) {
408
+ view.setShowIndoors(value);
409
+ }
410
+
411
+ @Override
412
+ public void setShowsMyLocationButton(MapView view, boolean value) {
413
+ view.setShowsMyLocationButton(value);
414
+ }
415
+
416
+ @Override
417
+ public void setShowsScale(MapView view, boolean value) {
418
+ // not supported
419
+ }
420
+
421
+ @Override
422
+ public void setShowsUserLocation(MapView view, boolean value) {
423
+ view.setShowsUserLocation(value);
424
+ }
425
+
426
+ @Override
427
+ public void setTintColor(MapView view, @Nullable Integer value) {
428
+ // not supported
429
+ }
430
+
431
+ @Override
432
+ public void setToolbarEnabled(MapView view, boolean value) {
433
+ view.setToolbarEnabled(value);
434
+ }
435
+
436
+ @Override
437
+ public void setUserInterfaceStyle(MapView view, @Nullable String value) {
438
+ // do nothing (initialProp)
439
+ }
440
+
441
+ @Override
442
+ public void setUserLocationAnnotationTitle(MapView view, @Nullable String value) {
443
+ // not supported
444
+ }
445
+
446
+ @Override
447
+ public void setUserLocationCalloutEnabled(MapView view, boolean value) {
448
+ // not supported
449
+ }
450
+
451
+ @Override
452
+ public void setUserLocationFastestInterval(MapView view, int value) {
453
+ view.setUserLocationFastestInterval(value);
454
+ }
455
+
456
+ @Override
457
+ public void setUserLocationPriority(MapView view, @Nullable String value) {
458
+ view.setUserLocationPriority(MY_LOCATION_PRIORITY.get(value));
459
+ }
460
+
461
+ @Override
462
+ public void setUserLocationUpdateInterval(MapView view, int value) {
463
+ view.setUserLocationUpdateInterval(value);
464
+ }
465
+
466
+ @Override
467
+ public void setZoomControlEnabled(MapView view, boolean value) {
468
+ view.setZoomControlEnabled(value);
469
+ }
470
+
471
+ @Override
472
+ public void setZoomEnabled(MapView view, boolean value) {
473
+ view.setZoomEnabled(value);
474
+ }
475
+
476
+ @Override
477
+ public void setZoomTapEnabled(MapView view, boolean value) {
478
+ // not supported
479
+ }
480
+
481
+ @Override
482
+ public void setCameraZoomRange(MapView view, @Nullable ReadableMap value) {
483
+ // not supported
484
+ }
485
+
486
+ @Override
487
+ public void animateToRegion(MapView view, String regionJSON, int duration) {
488
+ try {
489
+ JSONObject region = new JSONObject(regionJSON);
490
+ double lng = region.getDouble("longitude");
491
+ double lat = region.getDouble("latitude");
492
+ double lngDelta = region.getDouble("longitudeDelta");
493
+ double latDelta = region.getDouble("latitudeDelta");
494
+ LatLngBounds bounds = new LatLngBounds(
495
+ new LatLng(lat - latDelta / 2, lng - lngDelta / 2), // southwest
496
+ new LatLng(lat + latDelta / 2, lng + lngDelta / 2) // northeast
497
+ );
498
+ view.animateToRegion(bounds, duration);
499
+ } catch (JSONException e) {
500
+ throw new RuntimeException(e);
501
+ }
502
+
503
+ }
504
+
505
+ @Override
506
+ public void setCamera(MapView view, String cameraJSON) {
507
+ try {
508
+ JSONObject camera = new JSONObject(cameraJSON);
509
+ CameraPosition position = view.cameraPositionFromJSON(camera);
510
+ view.moveToCamera(position);
511
+ } catch (JSONException e) {
512
+ Log.e("MapViewManager", "parse camera exception " + e);
513
+ }
514
+ }
515
+
516
+ @Override
517
+ public void animateCamera(MapView view, String cameraJSON, int duration) {
518
+ try {
519
+ JSONObject camera = new JSONObject(cameraJSON);
520
+ CameraPosition position = view.cameraPositionFromJSON(camera);
521
+ view.animateToCamera(position, duration);
522
+ } catch (JSONException e) {
523
+ Log.e("MapViewManager", "parse camera exception " + e);
524
+ }
525
+ }
526
+
527
+ @Override
528
+ public void fitToElements(MapView view, String edgePaddingJSON, boolean animated) {
529
+ try {
530
+ WritableMap map = null;
531
+ if (edgePaddingJSON != null) {
532
+ JSONObject jsonObject = new JSONObject(edgePaddingJSON);
533
+ map = JSONUtil.convertJsonToWritable(jsonObject);
534
+ }
535
+ view.fitToElements(map, animated);
536
+ } catch (JSONException e){
537
+ Log.e("MapViewManager", "parse edgePaddingJSON exception " + e);
538
+ }
539
+
540
+ }
541
+
542
+ @Override
543
+ public void fitToSuppliedMarkers(MapView view, String markersJSON, String edgePaddingJSON, boolean animated) {
544
+ try {
545
+ WritableArray markers = null;
546
+ if (markersJSON != null) {
547
+ JSONArray array = new JSONArray(markersJSON);
548
+ markers = JSONUtil.convertJsonArrayToWritable(array);
549
+ }
550
+ WritableMap edgePadding = null;
551
+ if (edgePaddingJSON != null) {
552
+ JSONObject jsonObject = new JSONObject(edgePaddingJSON);
553
+ edgePadding = JSONUtil.convertJsonToWritable(jsonObject);
554
+ }
555
+ view.fitToSuppliedMarkers(markers, edgePadding, animated);
556
+ } catch (JSONException e) {
557
+ throw new RuntimeException(e);
558
+ }
559
+
560
+ }
561
+
562
+ @Override
563
+ public void fitToCoordinates(MapView view, String coordinatesJSON, String edgePaddingJSON, boolean animated) {
564
+ try {
565
+ WritableArray coordinates = null;
566
+ if (coordinatesJSON != null) {
567
+ JSONArray array = new JSONArray(coordinatesJSON);
568
+ coordinates = JSONUtil.convertJsonArrayToWritable(array);
569
+ }
570
+ WritableMap edgePadding = null;
571
+ if (edgePaddingJSON != null) {
572
+ JSONObject jsonObject = new JSONObject(edgePaddingJSON);
573
+ edgePadding = JSONUtil.convertJsonToWritable(jsonObject);
574
+ }
575
+ view.fitToCoordinates(coordinates, edgePadding, animated);
576
+ } catch (JSONException e) {
577
+ throw new RuntimeException(e);
578
+ }
579
+ }
580
+
581
+ @Override
582
+ public void onDropViewInstance(MapView view) {
583
+ super.onDropViewInstance(view);
584
+ view.onDestroy();
585
+ }
586
+ }