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.
- package/android/build.gradle +32 -8
- package/android/generated/java/com/facebook/fbreact/specs/NativeAirMapsModuleSpec.java +63 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerDelegate.java +199 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMapViewManagerInterface.java +71 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerDelegate.java +103 -0
- package/android/generated/java/com/facebook/react/viewmanagers/RNMapsMarkerManagerInterface.java +39 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNMapsSpecs-generated.cpp +68 -0
- package/android/generated/jni/RNMapsSpecs.h +31 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.cpp +25 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ComponentDescriptors.h +27 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.cpp +896 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/EventEmitters.h +765 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.cpp +146 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/Props.h +1047 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI-generated.cpp +74 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/RNMapsSpecsJSI.h +264 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.cpp +20 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/ShadowNodes.h +65 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNMapsSpecs/States.h +65 -0
- package/android/src/main/java/com/rnmaps/fabric/JSONUtil.java +86 -0
- package/android/src/main/java/com/rnmaps/fabric/MapViewManager.java +577 -0
- package/android/src/main/java/com/rnmaps/fabric/MarkerManager.java +176 -0
- package/android/src/main/java/com/rnmaps/fabric/NativeAirMapsModule.java +25 -2
- package/android/src/main/java/com/rnmaps/fabric/event/OnCalloutPressEvent.java +25 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDeselectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragEndEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnDragStartEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnLongPressEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMapReadyEvent.java +29 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDeselectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEndEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerDragStartEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerPressEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnMarkerSelectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnPoiClickEvent.java +27 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnPressEvent.java +27 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnRegionChangeEvent.java +48 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnSelectEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/fabric/event/OnUserLocationChangeEvent.java +28 -0
- package/android/src/main/java/com/rnmaps/maps/MapAirModulePackage.java +18 -2
- package/android/src/main/java/com/rnmaps/maps/MapManager.java +14 -14
- package/android/src/main/java/com/rnmaps/maps/MapMarker.java +53 -1
- package/android/src/main/java/com/rnmaps/maps/MapView.java +1613 -1346
- package/ios/AirGoogleMaps/AIRGoogleMap.h +8 -2
- package/ios/AirGoogleMaps/AIRGoogleMap.m +243 -55
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.h +0 -1
- package/ios/AirGoogleMaps/AIRGoogleMapCircle.m +23 -11
- package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.h +13 -0
- package/ios/AirGoogleMaps/AIRGoogleMapCoordinate.m +10 -0
- package/ios/AirGoogleMaps/AIRGoogleMapManager.h +7 -0
- package/ios/AirGoogleMaps/AIRGoogleMapManager.m +30 -119
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.h +2 -0
- package/ios/AirGoogleMaps/AIRGoogleMapMarker.m +347 -243
- package/ios/AirGoogleMaps/AIRGoogleMapMarkerManager.m +0 -1
- package/ios/AirGoogleMaps/AIRGoogleMapOverlay.h +0 -1
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.h +5 -4
- package/ios/AirGoogleMaps/AIRGoogleMapPolygon.m +32 -2
- package/ios/AirGoogleMaps/AIRGoogleMapPolygonManager.m +3 -3
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.h +3 -2
- package/ios/AirGoogleMaps/AIRGoogleMapPolyline.m +2 -3
- package/ios/AirGoogleMaps/AIRGoogleMapPolylineManager.m +2 -2
- package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.h +1 -1
- package/ios/AirGoogleMaps/AIRGoogleMapWMSTile.m +2 -2
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.h +3 -0
- package/ios/AirGoogleMaps/RCTConvert+GMSMapViewType.m +18 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.h +26 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapView.mm +629 -0
- package/ios/AirGoogleMaps/RNMapsGoogleMapViewManager.mm +25 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.h +26 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonView.mm +217 -0
- package/ios/AirGoogleMaps/RNMapsGooglePolygonViewManager.mm +25 -0
- package/ios/AirMaps/AIRMap.h +8 -5
- package/ios/AirMaps/AIRMap.m +292 -141
- package/ios/AirMaps/AIRMapManager.m +12 -21
- package/ios/AirMaps/AIRMapMarker.h +1 -0
- package/ios/AirMaps/AIRMapMarker.m +165 -103
- package/ios/AirMaps/Callout/SMCalloutView.m +1 -1
- package/ios/AirMaps/RCTConvert+AirMap.h +4 -0
- package/ios/AirMaps/RCTConvert+AirMap.m +2 -0
- package/ios/AirMaps/RNMapsAirModule.h +4 -1
- package/ios/AirMaps/RNMapsAirModule.mm +42 -172
- package/ios/AirMaps/RNMapsAirModuleDelegate.h +24 -0
- package/ios/AirMaps/RNMapsHostVewDelegate.h +17 -0
- package/ios/AirMaps/RNMapsMapView.h +6 -3
- package/ios/AirMaps/RNMapsMapView.mm +346 -332
- package/ios/AirMaps/RNMapsMarkerView.h +24 -0
- package/ios/AirMaps/RNMapsMarkerView.mm +430 -0
- package/ios/AirMaps/RNMapsMarkerViewManager.mm +21 -0
- package/ios/AirMaps/UIView +AirMap.m +20 -0
- package/ios/AirMaps/UIView+AirMap.h +11 -0
- package/ios/AirMaps.xcodeproj/project.pbxproj +60 -0
- package/ios/generated/RNMapsSpecs/ComponentDescriptors.cpp +25 -0
- package/ios/generated/RNMapsSpecs/ComponentDescriptors.h +27 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.cpp +896 -0
- package/ios/generated/RNMapsSpecs/EventEmitters.h +765 -0
- package/ios/generated/RNMapsSpecs/Props.cpp +146 -0
- package/ios/generated/RNMapsSpecs/Props.h +1047 -0
- package/ios/generated/RNMapsSpecs/RCTComponentViewHelpers.h +549 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs-generated.mm +92 -0
- package/ios/generated/RNMapsSpecs/RNMapsSpecs.h +134 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.cpp +20 -0
- package/ios/generated/RNMapsSpecs/ShadowNodes.h +65 -0
- package/ios/generated/RNMapsSpecs/States.cpp +16 -0
- package/ios/generated/RNMapsSpecs/States.h +65 -0
- package/ios/generated/RNMapsSpecsJSI-generated.cpp +74 -0
- package/ios/generated/RNMapsSpecsJSI.h +264 -0
- package/lib/MapMarker.d.ts +15 -2
- package/lib/MapMarker.js +53 -9
- package/lib/MapMarkerNativeComponent.js +0 -2
- package/lib/MapOverlay.d.ts +1 -1
- package/lib/MapOverlay.js +2 -8
- package/lib/MapView.d.ts +5 -22
- package/lib/MapView.js +61 -80
- package/lib/{FabricMapView.d.ts → createFabricMap.d.ts} +7 -6
- package/lib/createFabricMap.js +175 -0
- package/lib/decorateMapComponent.js +17 -0
- package/lib/specs/NativeAirMapsModule.d.ts +2 -2
- package/lib/specs/NativeComponentGoogleMapView.d.ts +713 -0
- package/lib/specs/NativeComponentGoogleMapView.js +21 -0
- package/lib/specs/NativeComponentGooglePolygon.d.ts +75 -0
- package/lib/specs/NativeComponentGooglePolygon.js +9 -0
- package/lib/specs/NativeComponentMapView.d.ts +21 -45
- package/lib/specs/NativeComponentMapView.js +1 -3
- package/lib/specs/NativeComponentMarker.d.ts +258 -0
- package/lib/specs/NativeComponentMarker.js +19 -0
- package/package.json +13 -7
- package/react-native-maps.podspec +2 -1
- 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
|
+
}
|