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

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