react-native-maps 1.4.0 → 1.5.0
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/README.md +63 -87
- package/android/build.gradle +3 -4
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FileUtil.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/FusedLocationSource.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReadable.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageReader.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ImageUtil.java +1 -2
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/LatLngBoundsUtils.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCallout.java → rnmaps/maps/MapCallout.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCalloutManager.java → rnmaps/maps/MapCalloutManager.java} +6 -6
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircle.java → rnmaps/maps/MapCircle.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapCircleManager.java → rnmaps/maps/MapCircleManager.java} +11 -11
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapFeature.java → rnmaps/maps/MapFeature.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolyline.java → rnmaps/maps/MapGradientPolyline.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapGradientPolylineManager.java → rnmaps/maps/MapGradientPolylineManager.java} +9 -9
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmap.java → rnmaps/maps/MapHeatmap.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapHeatmapManager.java → rnmaps/maps/MapHeatmapManager.java} +8 -8
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapLiteManager.java → rnmaps/maps/MapLiteManager.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapLocalTile.java → rnmaps/maps/MapLocalTile.java} +5 -5
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapLocalTileManager.java → rnmaps/maps/MapLocalTileManager.java} +9 -9
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapManager.java → rnmaps/maps/MapManager.java} +48 -48
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapMarker.java → rnmaps/maps/MapMarker.java} +12 -12
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapMarkerManager.java → rnmaps/maps/MapMarkerManager.java} +30 -30
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapModule.java → rnmaps/maps/MapModule.java} +10 -10
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapOverlay.java → rnmaps/maps/MapOverlay.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapOverlayManager.java → rnmaps/maps/MapOverlayManager.java} +11 -11
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygon.java → rnmaps/maps/MapPolygon.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolygonManager.java → rnmaps/maps/MapPolygonManager.java} +13 -13
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolyline.java → rnmaps/maps/MapPolyline.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapPolylineManager.java → rnmaps/maps/MapPolylineManager.java} +13 -13
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileProvider.java → rnmaps/maps/MapTileProvider.java} +10 -10
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapTileWorker.java → rnmaps/maps/MapTileWorker.java} +3 -3
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapUrlTile.java → rnmaps/maps/MapUrlTile.java} +5 -5
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapUrlTileManager.java → rnmaps/maps/MapUrlTileManager.java} +17 -17
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapView.java → rnmaps/maps/MapView.java} +62 -63
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapWMSTile.java → rnmaps/maps/MapWMSTile.java} +6 -6
- package/android/src/main/java/com/{airbnb/android/react/maps/AirMapWMSTileManager.java → rnmaps/maps/MapWMSTileManager.java} +15 -15
- package/android/src/main/java/com/rnmaps/maps/MapsPackage.java +46 -0
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/RegionChangeEvent.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/SizeReportingShadowNode.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewAttacherGroup.java +1 -1
- package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/ViewChangesTracker.java +7 -7
- package/package.json +15 -13
- package/android/src/main/java/com/airbnb/android/react/maps/MapsPackage.java +0 -65
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
2
|
|
|
3
3
|
import android.util.Log;
|
|
4
4
|
|
|
@@ -11,10 +11,10 @@ import com.google.android.gms.maps.model.TileOverlayOptions;
|
|
|
11
11
|
import java.net.MalformedURLException;
|
|
12
12
|
import java.net.URL;
|
|
13
13
|
|
|
14
|
-
public class
|
|
14
|
+
public class MapUrlTile extends MapFeature {
|
|
15
15
|
protected TileOverlayOptions tileOverlayOptions;
|
|
16
16
|
protected TileOverlay tileOverlay;
|
|
17
|
-
protected
|
|
17
|
+
protected MapTileProvider tileProvider;
|
|
18
18
|
|
|
19
19
|
protected String urlTemplate;
|
|
20
20
|
protected float zIndex;
|
|
@@ -31,7 +31,7 @@ public class AirMapUrlTile extends AirMapFeature {
|
|
|
31
31
|
protected Context context;
|
|
32
32
|
protected boolean customTileProviderNeeded = false;
|
|
33
33
|
|
|
34
|
-
public
|
|
34
|
+
public MapUrlTile(Context context) {
|
|
35
35
|
super(context);
|
|
36
36
|
this.context = context;
|
|
37
37
|
}
|
|
@@ -183,7 +183,7 @@ public class AirMapUrlTile extends AirMapFeature {
|
|
|
183
183
|
TileOverlayOptions options = new TileOverlayOptions();
|
|
184
184
|
options.zIndex(zIndex);
|
|
185
185
|
options.transparency(1 - this.opacity);
|
|
186
|
-
this.tileProvider = new
|
|
186
|
+
this.tileProvider = new MapTileProvider((int)this.tileSize, this.doubleTileSize, this.urlTemplate,
|
|
187
187
|
(int)this.maximumZ, (int)this.maximumNativeZ, (int)this.minimumZ, this.flipY, this.tileCachePath,
|
|
188
188
|
(int)this.tileCacheMaxAge, this.offlineMode, this.context, this.customTileProviderNeeded);
|
|
189
189
|
options.tileProvider(this.tileProvider);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
import android.util.DisplayMetrics;
|
|
@@ -9,9 +9,9 @@ import com.facebook.react.uimanager.ThemedReactContext;
|
|
|
9
9
|
import com.facebook.react.uimanager.ViewGroupManager;
|
|
10
10
|
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
11
11
|
|
|
12
|
-
public class
|
|
12
|
+
public class MapUrlTileManager extends ViewGroupManager<MapUrlTile> {
|
|
13
13
|
|
|
14
|
-
public
|
|
14
|
+
public MapUrlTileManager(ReactApplicationContext reactContext) {
|
|
15
15
|
super();
|
|
16
16
|
DisplayMetrics metrics = new DisplayMetrics();
|
|
17
17
|
((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
|
|
@@ -25,67 +25,67 @@ public class AirMapUrlTileManager extends ViewGroupManager<AirMapUrlTile> {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@Override
|
|
28
|
-
public
|
|
29
|
-
return new
|
|
28
|
+
public MapUrlTile createViewInstance(ThemedReactContext context) {
|
|
29
|
+
return new MapUrlTile(context);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
@ReactProp(name = "urlTemplate")
|
|
33
|
-
public void setUrlTemplate(
|
|
33
|
+
public void setUrlTemplate(MapUrlTile view, String urlTemplate) {
|
|
34
34
|
view.setUrlTemplate(urlTemplate);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
@ReactProp(name = "zIndex", defaultFloat = -1.0f)
|
|
38
|
-
public void setZIndex(
|
|
38
|
+
public void setZIndex(MapUrlTile view, float zIndex) {
|
|
39
39
|
view.setZIndex(zIndex);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
@ReactProp(name = "minimumZ", defaultFloat = 0.0f)
|
|
43
|
-
public void setMinimumZ(
|
|
43
|
+
public void setMinimumZ(MapUrlTile view, float minimumZ) {
|
|
44
44
|
view.setMinimumZ(minimumZ);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
@ReactProp(name = "maximumZ", defaultFloat = 100.0f)
|
|
48
|
-
public void setMaximumZ(
|
|
48
|
+
public void setMaximumZ(MapUrlTile view, float maximumZ) {
|
|
49
49
|
view.setMaximumZ(maximumZ);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
@ReactProp(name = "maximumNativeZ", defaultFloat = 100.0f)
|
|
53
|
-
public void setMaximumNativeZ(
|
|
53
|
+
public void setMaximumNativeZ(MapUrlTile view, float maximumNativeZ) {
|
|
54
54
|
view.setMaximumNativeZ(maximumNativeZ);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
@ReactProp(name = "flipY", defaultBoolean = false)
|
|
58
|
-
public void setFlipY(
|
|
58
|
+
public void setFlipY(MapUrlTile view, boolean flipY) {
|
|
59
59
|
view.setFlipY(flipY);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
@ReactProp(name = "tileSize", defaultFloat = 256.0f)
|
|
63
|
-
public void setTileSize(
|
|
63
|
+
public void setTileSize(MapUrlTile view, float tileSize) {
|
|
64
64
|
view.setTileSize(tileSize);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
@ReactProp(name = "doubleTileSize", defaultBoolean = false)
|
|
68
|
-
public void setDoubleTileSize(
|
|
68
|
+
public void setDoubleTileSize(MapUrlTile view, boolean doubleTileSize) {
|
|
69
69
|
view.setDoubleTileSize(doubleTileSize);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
@ReactProp(name = "tileCachePath")
|
|
73
|
-
public void setTileCachePath(
|
|
73
|
+
public void setTileCachePath(MapUrlTile view, String tileCachePath) {
|
|
74
74
|
view.setTileCachePath(tileCachePath);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
@ReactProp(name = "tileCacheMaxAge", defaultFloat = 0.0f)
|
|
78
|
-
public void setTileCacheMaxAge(
|
|
78
|
+
public void setTileCacheMaxAge(MapUrlTile view, float tileCacheMaxAge) {
|
|
79
79
|
view.setTileCacheMaxAge(tileCacheMaxAge);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
@ReactProp(name = "offlineMode", defaultBoolean = false)
|
|
83
|
-
public void setOfflineMode(
|
|
83
|
+
public void setOfflineMode(MapUrlTile view, boolean offlineMode) {
|
|
84
84
|
view.setOfflineMode(offlineMode);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
@ReactProp(name = "opacity", defaultFloat = 1.0f)
|
|
88
|
-
public void setOpacity(
|
|
88
|
+
public void setOpacity(MapUrlTile view, float opacity) {
|
|
89
89
|
view.setOpacity(opacity);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
import android.content.res.ColorStateList;
|
|
@@ -36,7 +36,6 @@ import com.google.android.gms.maps.CameraUpdate;
|
|
|
36
36
|
import com.google.android.gms.maps.CameraUpdateFactory;
|
|
37
37
|
import com.google.android.gms.maps.GoogleMap;
|
|
38
38
|
import com.google.android.gms.maps.GoogleMapOptions;
|
|
39
|
-
import com.google.android.gms.maps.MapView;
|
|
40
39
|
import com.google.android.gms.maps.OnMapReadyCallback;
|
|
41
40
|
import com.google.android.gms.maps.Projection;
|
|
42
41
|
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
|
@@ -71,7 +70,7 @@ import java.util.concurrent.ExecutionException;
|
|
|
71
70
|
|
|
72
71
|
import static androidx.core.content.PermissionChecker.checkSelfPermission;
|
|
73
72
|
|
|
74
|
-
public class
|
|
73
|
+
public class MapView extends com.google.android.gms.maps.MapView implements GoogleMap.InfoWindowAdapter,
|
|
75
74
|
GoogleMap.OnMarkerDragListener, OnMapReadyCallback, GoogleMap.OnPoiClickListener, GoogleMap.OnIndoorStateChangeListener {
|
|
76
75
|
public GoogleMap map;
|
|
77
76
|
private ProgressBar mapLoadingProgressBar;
|
|
@@ -101,15 +100,15 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
101
100
|
private static final String[] PERMISSIONS = new String[]{
|
|
102
101
|
"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"};
|
|
103
102
|
|
|
104
|
-
private final List<
|
|
105
|
-
private final Map<Marker,
|
|
106
|
-
private final Map<Polyline,
|
|
107
|
-
private final Map<Polygon,
|
|
108
|
-
private final Map<GroundOverlay,
|
|
109
|
-
private final Map<TileOverlay,
|
|
110
|
-
private final Map<TileOverlay,
|
|
103
|
+
private final List<MapFeature> features = new ArrayList<>();
|
|
104
|
+
private final Map<Marker, MapMarker> markerMap = new HashMap<>();
|
|
105
|
+
private final Map<Polyline, MapPolyline> polylineMap = new HashMap<>();
|
|
106
|
+
private final Map<Polygon, MapPolygon> polygonMap = new HashMap<>();
|
|
107
|
+
private final Map<GroundOverlay, MapOverlay> overlayMap = new HashMap<>();
|
|
108
|
+
private final Map<TileOverlay, MapHeatmap> heatmapMap = new HashMap<>();
|
|
109
|
+
private final Map<TileOverlay, MapGradientPolyline> gradientPolylineMap = new HashMap<>();
|
|
111
110
|
private final GestureDetectorCompat gestureDetector;
|
|
112
|
-
private final
|
|
111
|
+
private final MapManager manager;
|
|
113
112
|
private LifecycleEventListener lifecycleListener;
|
|
114
113
|
private boolean paused = false;
|
|
115
114
|
private boolean destroyed = false;
|
|
@@ -150,9 +149,9 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
150
149
|
return superContext;
|
|
151
150
|
}
|
|
152
151
|
|
|
153
|
-
public
|
|
154
|
-
|
|
155
|
-
|
|
152
|
+
public MapView(ThemedReactContext reactContext, ReactApplicationContext appContext,
|
|
153
|
+
MapManager manager,
|
|
154
|
+
GoogleMapOptions googleMapOptions) {
|
|
156
155
|
super(getNonBuggyContext(reactContext, appContext), googleMapOptions);
|
|
157
156
|
|
|
158
157
|
this.manager = manager;
|
|
@@ -163,7 +162,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
163
162
|
super.onResume();
|
|
164
163
|
super.getMapAsync(this);
|
|
165
164
|
|
|
166
|
-
final
|
|
165
|
+
final MapView view = this;
|
|
167
166
|
|
|
168
167
|
fusedLocationSource = new FusedLocationSource(context);
|
|
169
168
|
|
|
@@ -190,7 +189,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
190
189
|
@Override public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
|
191
190
|
int oldLeft, int oldTop, int oldRight, int oldBottom) {
|
|
192
191
|
if (!paused) {
|
|
193
|
-
|
|
192
|
+
MapView.this.cacheView();
|
|
194
193
|
}
|
|
195
194
|
}
|
|
196
195
|
});
|
|
@@ -224,7 +223,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
224
223
|
|
|
225
224
|
manager.pushEvent(context, this, "onMapReady", new WritableNativeMap());
|
|
226
225
|
|
|
227
|
-
final
|
|
226
|
+
final MapView view = this;
|
|
228
227
|
|
|
229
228
|
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
|
|
230
229
|
@Override
|
|
@@ -251,7 +250,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
251
250
|
@Override
|
|
252
251
|
public boolean onMarkerClick(Marker marker) {
|
|
253
252
|
WritableMap event;
|
|
254
|
-
|
|
253
|
+
MapMarker airMapMarker = getMarkerMap(marker);
|
|
255
254
|
|
|
256
255
|
event = makeClickEventData(marker.getPosition());
|
|
257
256
|
event.putString("action", "marker-press");
|
|
@@ -304,12 +303,12 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
304
303
|
|
|
305
304
|
event = makeClickEventData(marker.getPosition());
|
|
306
305
|
event.putString("action", "callout-press");
|
|
307
|
-
|
|
306
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
308
307
|
manager.pushEvent(context, markerView, "onCalloutPress", event);
|
|
309
308
|
|
|
310
309
|
event = makeClickEventData(marker.getPosition());
|
|
311
310
|
event.putString("action", "callout-press");
|
|
312
|
-
|
|
311
|
+
MapCallout infoWindow = markerView.getCalloutView();
|
|
313
312
|
if (infoWindow != null) manager.pushEvent(context, infoWindow, "onPress", event);
|
|
314
313
|
}
|
|
315
314
|
});
|
|
@@ -382,7 +381,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
382
381
|
@Override public void onMapLoaded() {
|
|
383
382
|
isMapLoaded = true;
|
|
384
383
|
manager.pushEvent(context, view, "onMapLoaded", new WritableNativeMap());
|
|
385
|
-
|
|
384
|
+
MapView.this.cacheView();
|
|
386
385
|
}
|
|
387
386
|
});
|
|
388
387
|
|
|
@@ -401,9 +400,9 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
401
400
|
map.setMyLocationEnabled(showUserLocation);
|
|
402
401
|
map.setLocationSource(fusedLocationSource);
|
|
403
402
|
}
|
|
404
|
-
synchronized (
|
|
403
|
+
synchronized (MapView.this) {
|
|
405
404
|
if (!destroyed) {
|
|
406
|
-
|
|
405
|
+
MapView.this.onResume();
|
|
407
406
|
}
|
|
408
407
|
paused = false;
|
|
409
408
|
}
|
|
@@ -415,9 +414,9 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
415
414
|
//noinspection MissingPermission
|
|
416
415
|
map.setMyLocationEnabled(false);
|
|
417
416
|
}
|
|
418
|
-
synchronized (
|
|
417
|
+
synchronized (MapView.this) {
|
|
419
418
|
if (!destroyed) {
|
|
420
|
-
|
|
419
|
+
MapView.this.onPause();
|
|
421
420
|
}
|
|
422
421
|
paused = true;
|
|
423
422
|
}
|
|
@@ -425,7 +424,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
425
424
|
|
|
426
425
|
@Override
|
|
427
426
|
public void onHostDestroy() {
|
|
428
|
-
|
|
427
|
+
MapView.this.doDestroy();
|
|
429
428
|
}
|
|
430
429
|
};
|
|
431
430
|
|
|
@@ -654,8 +653,8 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
654
653
|
public void addFeature(View child, int index) {
|
|
655
654
|
// Our desired API is to pass up annotations/overlays as children to the mapview component.
|
|
656
655
|
// This is where we intercept them and do the appropriate underlying mapview action.
|
|
657
|
-
if (child instanceof
|
|
658
|
-
|
|
656
|
+
if (child instanceof MapMarker) {
|
|
657
|
+
MapMarker annotation = (MapMarker) child;
|
|
659
658
|
annotation.addToMap(map);
|
|
660
659
|
features.add(index, annotation);
|
|
661
660
|
|
|
@@ -680,48 +679,48 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
680
679
|
|
|
681
680
|
Marker marker = (Marker) annotation.getFeature();
|
|
682
681
|
markerMap.put(marker, annotation);
|
|
683
|
-
} else if (child instanceof
|
|
684
|
-
|
|
682
|
+
} else if (child instanceof MapPolyline) {
|
|
683
|
+
MapPolyline polylineView = (MapPolyline) child;
|
|
685
684
|
polylineView.addToMap(map);
|
|
686
685
|
features.add(index, polylineView);
|
|
687
686
|
Polyline polyline = (Polyline) polylineView.getFeature();
|
|
688
687
|
polylineMap.put(polyline, polylineView);
|
|
689
|
-
} else if (child instanceof
|
|
690
|
-
|
|
688
|
+
} else if (child instanceof MapGradientPolyline) {
|
|
689
|
+
MapGradientPolyline polylineView = (MapGradientPolyline) child;
|
|
691
690
|
polylineView.addToMap(map);
|
|
692
691
|
features.add(index, polylineView);
|
|
693
692
|
TileOverlay tileOverlay = (TileOverlay) polylineView.getFeature();
|
|
694
693
|
gradientPolylineMap.put(tileOverlay, polylineView);
|
|
695
|
-
} else if (child instanceof
|
|
696
|
-
|
|
694
|
+
} else if (child instanceof MapPolygon) {
|
|
695
|
+
MapPolygon polygonView = (MapPolygon) child;
|
|
697
696
|
polygonView.addToMap(map);
|
|
698
697
|
features.add(index, polygonView);
|
|
699
698
|
Polygon polygon = (Polygon) polygonView.getFeature();
|
|
700
699
|
polygonMap.put(polygon, polygonView);
|
|
701
|
-
} else if (child instanceof
|
|
702
|
-
|
|
700
|
+
} else if (child instanceof MapCircle) {
|
|
701
|
+
MapCircle circleView = (MapCircle) child;
|
|
703
702
|
circleView.addToMap(map);
|
|
704
703
|
features.add(index, circleView);
|
|
705
|
-
} else if (child instanceof
|
|
706
|
-
|
|
704
|
+
} else if (child instanceof MapUrlTile) {
|
|
705
|
+
MapUrlTile urlTileView = (MapUrlTile) child;
|
|
707
706
|
urlTileView.addToMap(map);
|
|
708
707
|
features.add(index, urlTileView);
|
|
709
|
-
} else if (child instanceof
|
|
710
|
-
|
|
708
|
+
} else if (child instanceof MapWMSTile) {
|
|
709
|
+
MapWMSTile urlTileView = (MapWMSTile) child;
|
|
711
710
|
urlTileView.addToMap(map);
|
|
712
711
|
features.add(index, urlTileView);
|
|
713
|
-
} else if (child instanceof
|
|
714
|
-
|
|
712
|
+
} else if (child instanceof MapLocalTile) {
|
|
713
|
+
MapLocalTile localTileView = (MapLocalTile) child;
|
|
715
714
|
localTileView.addToMap(map);
|
|
716
715
|
features.add(index, localTileView);
|
|
717
|
-
} else if (child instanceof
|
|
718
|
-
|
|
716
|
+
} else if (child instanceof MapOverlay) {
|
|
717
|
+
MapOverlay overlayView = (MapOverlay) child;
|
|
719
718
|
overlayView.addToMap(map);
|
|
720
719
|
features.add(index, overlayView);
|
|
721
720
|
GroundOverlay overlay = (GroundOverlay) overlayView.getFeature();
|
|
722
721
|
overlayMap.put(overlay, overlayView);
|
|
723
|
-
} else if (child instanceof
|
|
724
|
-
|
|
722
|
+
} else if (child instanceof MapHeatmap) {
|
|
723
|
+
MapHeatmap heatmapView = (MapHeatmap) child;
|
|
725
724
|
heatmapView.addToMap(map);
|
|
726
725
|
features.add(index, heatmapView);
|
|
727
726
|
TileOverlay heatmap = (TileOverlay)heatmapView.getFeature();
|
|
@@ -745,10 +744,10 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
745
744
|
}
|
|
746
745
|
|
|
747
746
|
public void removeFeatureAt(int index) {
|
|
748
|
-
|
|
749
|
-
if (feature instanceof
|
|
747
|
+
MapFeature feature = features.remove(index);
|
|
748
|
+
if (feature instanceof MapMarker) {
|
|
750
749
|
markerMap.remove(feature.getFeature());
|
|
751
|
-
} else if (feature instanceof
|
|
750
|
+
} else if (feature instanceof MapHeatmap) {
|
|
752
751
|
heatmapMap.remove(feature.getFeature());
|
|
753
752
|
}
|
|
754
753
|
feature.removeFromMap(map);
|
|
@@ -841,8 +840,8 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
841
840
|
|
|
842
841
|
boolean addedPosition = false;
|
|
843
842
|
|
|
844
|
-
for (
|
|
845
|
-
if (feature instanceof
|
|
843
|
+
for (MapFeature feature : features) {
|
|
844
|
+
if (feature instanceof MapMarker) {
|
|
846
845
|
Marker marker = (Marker) feature.getFeature();
|
|
847
846
|
builder.include(marker.getPosition());
|
|
848
847
|
addedPosition = true;
|
|
@@ -880,9 +879,9 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
880
879
|
|
|
881
880
|
List<String> markerIDList = Arrays.asList(markerIDs);
|
|
882
881
|
|
|
883
|
-
for (
|
|
884
|
-
if (feature instanceof
|
|
885
|
-
String identifier = ((
|
|
882
|
+
for (MapFeature feature : features) {
|
|
883
|
+
if (feature instanceof MapMarker) {
|
|
884
|
+
String identifier = ((MapMarker) feature).getIdentifier();
|
|
886
885
|
Marker marker = (Marker) feature.getFeature();
|
|
887
886
|
if (markerIDList.contains(identifier)) {
|
|
888
887
|
builder.include(marker.getPosition());
|
|
@@ -1001,13 +1000,13 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1001
1000
|
|
|
1002
1001
|
@Override
|
|
1003
1002
|
public View getInfoWindow(Marker marker) {
|
|
1004
|
-
|
|
1003
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
1005
1004
|
return markerView.getCallout();
|
|
1006
1005
|
}
|
|
1007
1006
|
|
|
1008
1007
|
@Override
|
|
1009
1008
|
public View getInfoContents(Marker marker) {
|
|
1010
|
-
|
|
1009
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
1011
1010
|
return markerView.getInfoContents();
|
|
1012
1011
|
}
|
|
1013
1012
|
|
|
@@ -1042,7 +1041,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1042
1041
|
WritableMap event = makeClickEventData(marker.getPosition());
|
|
1043
1042
|
manager.pushEvent(context, this, "onMarkerDragStart", event);
|
|
1044
1043
|
|
|
1045
|
-
|
|
1044
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
1046
1045
|
event = makeClickEventData(marker.getPosition());
|
|
1047
1046
|
manager.pushEvent(context, markerView, "onDragStart", event);
|
|
1048
1047
|
}
|
|
@@ -1052,7 +1051,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1052
1051
|
WritableMap event = makeClickEventData(marker.getPosition());
|
|
1053
1052
|
manager.pushEvent(context, this, "onMarkerDrag", event);
|
|
1054
1053
|
|
|
1055
|
-
|
|
1054
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
1056
1055
|
event = makeClickEventData(marker.getPosition());
|
|
1057
1056
|
manager.pushEvent(context, markerView, "onDrag", event);
|
|
1058
1057
|
}
|
|
@@ -1062,7 +1061,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1062
1061
|
WritableMap event = makeClickEventData(marker.getPosition());
|
|
1063
1062
|
manager.pushEvent(context, this, "onMarkerDragEnd", event);
|
|
1064
1063
|
|
|
1065
|
-
|
|
1064
|
+
MapMarker markerView = getMarkerMap(marker);
|
|
1066
1065
|
event = makeClickEventData(marker.getPosition());
|
|
1067
1066
|
manager.pushEvent(context, markerView, "onDragEnd", event);
|
|
1068
1067
|
}
|
|
@@ -1235,7 +1234,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1235
1234
|
options.title(title);
|
|
1236
1235
|
options.snippet(snippet);
|
|
1237
1236
|
|
|
1238
|
-
|
|
1237
|
+
MapMarker marker = new MapMarker(context, options, this.manager.getMarkerManager());
|
|
1239
1238
|
|
|
1240
1239
|
if (placemark.getInlineStyle() != null
|
|
1241
1240
|
&& placemark.getInlineStyle().getIconUrl() != null) {
|
|
@@ -1341,14 +1340,14 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
|
|
|
1341
1340
|
}
|
|
1342
1341
|
}
|
|
1343
1342
|
|
|
1344
|
-
private
|
|
1345
|
-
|
|
1343
|
+
private MapMarker getMarkerMap(Marker marker) {
|
|
1344
|
+
MapMarker airMarker = markerMap.get(marker);
|
|
1346
1345
|
|
|
1347
1346
|
if (airMarker != null) {
|
|
1348
1347
|
return airMarker;
|
|
1349
1348
|
}
|
|
1350
1349
|
|
|
1351
|
-
for (Map.Entry<Marker,
|
|
1350
|
+
for (Map.Entry<Marker, MapMarker> entryMarker : markerMap.entrySet()) {
|
|
1352
1351
|
if (entryMarker.getKey().getPosition().equals(marker.getPosition())
|
|
1353
1352
|
&& entryMarker.getKey().getTitle().equals(marker.getTitle())) {
|
|
1354
1353
|
airMarker = entryMarker.getValue();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
|
|
@@ -8,11 +8,11 @@ import com.google.android.gms.maps.model.UrlTileProvider;
|
|
|
8
8
|
import java.net.MalformedURLException;
|
|
9
9
|
import java.net.URL;
|
|
10
10
|
|
|
11
|
-
public class
|
|
11
|
+
public class MapWMSTile extends MapUrlTile {
|
|
12
12
|
private static final double[] mapBound = {-20037508.34789244, 20037508.34789244};
|
|
13
13
|
private static final double FULL = 20037508.34789244 * 2;
|
|
14
14
|
|
|
15
|
-
class AIRMapGSUrlTileProvider extends
|
|
15
|
+
class AIRMapGSUrlTileProvider extends MapTileProvider {
|
|
16
16
|
|
|
17
17
|
class AIRMapWMSTileProvider extends UrlTileProvider {
|
|
18
18
|
private String urlTemplate;
|
|
@@ -26,11 +26,11 @@ public class AirMapWMSTile extends AirMapUrlTile {
|
|
|
26
26
|
|
|
27
27
|
@Override
|
|
28
28
|
public URL getTileUrl(int x, int y, int zoom) {
|
|
29
|
-
if(
|
|
29
|
+
if(MapWMSTile.this.maximumZ > 0 && zoom > maximumZ) {
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
if(
|
|
33
|
+
if(MapWMSTile.this.minimumZ > 0 && zoom < minimumZ) {
|
|
34
34
|
return null;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -76,7 +76,7 @@ public class AirMapWMSTile extends AirMapUrlTile {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
public
|
|
79
|
+
public MapWMSTile(Context context) {
|
|
80
80
|
super(context);
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
2
|
|
|
3
3
|
import android.content.Context;
|
|
4
4
|
import android.util.DisplayMetrics;
|
|
@@ -9,9 +9,9 @@ import com.facebook.react.uimanager.ThemedReactContext;
|
|
|
9
9
|
import com.facebook.react.uimanager.ViewGroupManager;
|
|
10
10
|
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
11
11
|
|
|
12
|
-
public class
|
|
12
|
+
public class MapWMSTileManager extends ViewGroupManager<MapWMSTile> {
|
|
13
13
|
|
|
14
|
-
public
|
|
14
|
+
public MapWMSTileManager(ReactApplicationContext reactContext) {
|
|
15
15
|
super();
|
|
16
16
|
DisplayMetrics metrics = new DisplayMetrics();
|
|
17
17
|
((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
|
|
@@ -25,57 +25,57 @@ public class AirMapWMSTileManager extends ViewGroupManager<AirMapWMSTile> {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@Override
|
|
28
|
-
public
|
|
29
|
-
return new
|
|
28
|
+
public MapWMSTile createViewInstance(ThemedReactContext context) {
|
|
29
|
+
return new MapWMSTile(context);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
@ReactProp(name = "urlTemplate")
|
|
33
|
-
public void setUrlTemplate(
|
|
33
|
+
public void setUrlTemplate(MapWMSTile view, String urlTemplate) {
|
|
34
34
|
view.setUrlTemplate(urlTemplate);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
@ReactProp(name = "zIndex", defaultFloat = -1.0f)
|
|
38
|
-
public void setZIndex(
|
|
38
|
+
public void setZIndex(MapWMSTile view, float zIndex) {
|
|
39
39
|
view.setZIndex(zIndex);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
@ReactProp(name = "minimumZ", defaultFloat = 0.0f)
|
|
43
|
-
public void setMinimumZ(
|
|
43
|
+
public void setMinimumZ(MapWMSTile view, float minimumZ) {
|
|
44
44
|
view.setMinimumZ(minimumZ);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
@ReactProp(name = "maximumZ", defaultFloat = 100.0f)
|
|
48
|
-
public void setMaximumZ(
|
|
48
|
+
public void setMaximumZ(MapWMSTile view, float maximumZ) {
|
|
49
49
|
view.setMaximumZ(maximumZ);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
@ReactProp(name = "maximumNativeZ", defaultFloat = 100.0f)
|
|
53
|
-
public void setMaximumNativeZ(
|
|
53
|
+
public void setMaximumNativeZ(MapWMSTile view, float maximumNativeZ) {
|
|
54
54
|
view.setMaximumNativeZ(maximumNativeZ);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
@ReactProp(name = "tileSize", defaultFloat = 256.0f)
|
|
58
|
-
public void setTileSize(
|
|
58
|
+
public void setTileSize(MapWMSTile view, float tileSize) {
|
|
59
59
|
view.setTileSize(tileSize);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
@ReactProp(name = "tileCachePath")
|
|
63
|
-
public void setTileCachePath(
|
|
63
|
+
public void setTileCachePath(MapWMSTile view, String tileCachePath) {
|
|
64
64
|
view.setTileCachePath(tileCachePath);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
@ReactProp(name = "tileCacheMaxAge", defaultFloat = 0.0f)
|
|
68
|
-
public void setTileCacheMaxAge(
|
|
68
|
+
public void setTileCacheMaxAge(MapWMSTile view, float tileCacheMaxAge) {
|
|
69
69
|
view.setTileCacheMaxAge(tileCacheMaxAge);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
@ReactProp(name = "offlineMode", defaultBoolean = false)
|
|
73
|
-
public void setOfflineMode(
|
|
73
|
+
public void setOfflineMode(MapWMSTile view, boolean offlineMode) {
|
|
74
74
|
view.setOfflineMode(offlineMode);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
@ReactProp(name = "opacity", defaultFloat = 1.0f)
|
|
78
|
-
public void setOpacity(
|
|
78
|
+
public void setOpacity(MapWMSTile view, float opacity) {
|
|
79
79
|
view.setOpacity(opacity);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
package com.rnmaps.maps;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.ReactPackage;
|
|
4
|
+
import com.facebook.react.bridge.NativeModule;
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
|
+
import com.facebook.react.uimanager.ViewManager;
|
|
7
|
+
|
|
8
|
+
import java.util.ArrayList;
|
|
9
|
+
import java.util.List;
|
|
10
|
+
|
|
11
|
+
public class MapsPackage implements ReactPackage {
|
|
12
|
+
|
|
13
|
+
@Override
|
|
14
|
+
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
15
|
+
List<NativeModule> modules = new ArrayList<>();
|
|
16
|
+
|
|
17
|
+
modules.add(new MapModule(reactContext));
|
|
18
|
+
|
|
19
|
+
return modules;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@Override
|
|
23
|
+
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
|
24
|
+
MapManager mapManager = new MapManager(reactContext);
|
|
25
|
+
MapMarkerManager annotationManager = new MapMarkerManager();
|
|
26
|
+
mapManager.setMarkerManager(annotationManager);
|
|
27
|
+
|
|
28
|
+
List<ViewManager> viewManagers = new ArrayList<>();
|
|
29
|
+
|
|
30
|
+
viewManagers.add(mapManager);
|
|
31
|
+
viewManagers.add(annotationManager);
|
|
32
|
+
viewManagers.add(new MapCalloutManager());
|
|
33
|
+
viewManagers.add(new MapPolylineManager(reactContext));
|
|
34
|
+
viewManagers.add(new MapGradientPolylineManager(reactContext));
|
|
35
|
+
viewManagers.add(new MapPolygonManager(reactContext));
|
|
36
|
+
viewManagers.add(new MapCircleManager(reactContext));
|
|
37
|
+
viewManagers.add(new MapLiteManager(reactContext));
|
|
38
|
+
viewManagers.add(new MapUrlTileManager(reactContext));
|
|
39
|
+
viewManagers.add(new MapWMSTileManager(reactContext));
|
|
40
|
+
viewManagers.add(new MapLocalTileManager(reactContext));
|
|
41
|
+
viewManagers.add(new MapOverlayManager(reactContext));
|
|
42
|
+
viewManagers.add(new MapHeatmapManager());
|
|
43
|
+
|
|
44
|
+
return viewManagers;
|
|
45
|
+
}
|
|
46
|
+
}
|
package/android/src/main/java/com/{airbnb/android/react → rnmaps}/maps/SizeReportingShadowNode.java
RENAMED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
package com.
|
|
9
|
+
package com.rnmaps.maps;
|
|
10
10
|
|
|
11
11
|
import com.facebook.react.uimanager.LayoutShadowNode;
|
|
12
12
|
import com.facebook.react.uimanager.UIViewOperationQueue;
|