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