react-native-maps 1.21.0-alpha.9 → 1.21.0-alpha.91

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