diff --git a/android/expoview/build.gradle b/android/expoview/build.gradle index c21046e4165ca..13a629564e57d 100644 --- a/android/expoview/build.gradle +++ b/android/expoview/build.gradle @@ -285,7 +285,7 @@ dependencies { api 'com.google.firebase:firebase-core:21.1.0' api 'com.google.firebase:firebase-messaging:22.0.0' - api 'com.google.maps.android:android-maps-utils:0.5' + api 'com.google.maps.android:android-maps-utils:3.4.0' // Remember to update DetachAppTemplate build.gradle if you add any excludes or transitive = false here! // expo-file-system diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapFeature.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapFeature.java deleted file mode 100644 index 4fc1a4f5df87b..0000000000000 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapFeature.java +++ /dev/null @@ -1,18 +0,0 @@ -package versioned.host.exp.exponent.modules.api.components.maps; - -import android.content.Context; - -import com.facebook.react.views.view.ReactViewGroup; -import com.google.android.gms.maps.GoogleMap; - -public abstract class AirMapFeature extends ReactViewGroup { - public AirMapFeature(Context context) { - super(context); - } - - public abstract void addToMap(GoogleMap map); - - public abstract void removeFromMap(GoogleMap map); - - public abstract Object getFeature(); -} diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ImageUtil.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ImageUtil.java index 4ec075cf70ba4..e122ea53ea0eb 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ImageUtil.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ImageUtil.java @@ -1,6 +1,5 @@ package versioned.host.exp.exponent.modules.api.components.maps; - import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Base64; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCallout.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCallout.java similarity index 80% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCallout.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCallout.java index a21bb7237125e..a9ad4120ce624 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCallout.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCallout.java @@ -4,12 +4,12 @@ import com.facebook.react.views.view.ReactViewGroup; -public class AirMapCallout extends ReactViewGroup { +public class MapCallout extends ReactViewGroup { private boolean tooltip = false; public int width; public int height; - public AirMapCallout(Context context) { + public MapCallout(Context context) { super(context); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCalloutManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCalloutManager.java similarity index 81% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCalloutManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCalloutManager.java index 9a5e1c1ef3735..e7f7c025a6c2a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCalloutManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCalloutManager.java @@ -10,7 +10,7 @@ import java.util.Map; -public class AirMapCalloutManager extends ViewGroupManager { +public class MapCalloutManager extends ViewGroupManager { @Override public String getName() { @@ -18,12 +18,12 @@ public String getName() { } @Override - public AirMapCallout createViewInstance(ThemedReactContext context) { - return new AirMapCallout(context); + public MapCallout createViewInstance(ThemedReactContext context) { + return new MapCallout(context); } @ReactProp(name = "tooltip", defaultBoolean = false) - public void setTooltip(AirMapCallout view, boolean tooltip) { + public void setTooltip(MapCallout view, boolean tooltip) { view.setTooltip(tooltip); } @@ -42,7 +42,7 @@ public LayoutShadowNode createShadowNodeInstance() { } @Override - public void updateExtraData(AirMapCallout view, Object extraData) { + public void updateExtraData(MapCallout view, Object extraData) { // This method is called from the shadow node with the width/height of the rendered // marker view. //noinspection unchecked diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircle.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircle.java similarity index 79% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircle.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircle.java index 41d3de4b23943..3e3cda3da5eb8 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircle.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircle.java @@ -2,12 +2,12 @@ import android.content.Context; -import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.Circle; import com.google.android.gms.maps.model.CircleOptions; import com.google.android.gms.maps.model.LatLng; +import com.google.maps.android.collections.CircleManager; -public class AirMapCircle extends AirMapFeature { +public class MapCircle extends MapFeature { private CircleOptions circleOptions; private Circle circle; @@ -19,7 +19,7 @@ public class AirMapCircle extends AirMapFeature { private float strokeWidth; private float zIndex; - public AirMapCircle(Context context) { + public MapCircle(Context context) { super(context); } @@ -89,12 +89,14 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - circle = map.addCircle(getCircleOptions()); + public void addToMap(Object collection) { + CircleManager.Collection circleCollection = (CircleManager.Collection) collection; + circle = circleCollection.addCircle(getCircleOptions()); } @Override - public void removeFromMap(GoogleMap map) { - circle.remove(); + public void removeFromMap(Object collection) { + CircleManager.Collection circleCollection = (CircleManager.Collection) collection; + circleCollection.remove(circle); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircleManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircleManager.java similarity index 71% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircleManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircleManager.java index 5aded2c0f916b..5b094c2243897 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapCircleManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapCircleManager.java @@ -12,10 +12,10 @@ import com.facebook.react.uimanager.annotations.ReactProp; import com.google.android.gms.maps.model.LatLng; -public class AirMapCircleManager extends ViewGroupManager { +public class MapCircleManager extends ViewGroupManager { private final DisplayMetrics metrics; - public AirMapCircleManager(ReactApplicationContext reactContext) { + public MapCircleManager(ReactApplicationContext reactContext) { super(); metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -29,38 +29,38 @@ public String getName() { } @Override - public AirMapCircle createViewInstance(ThemedReactContext context) { - return new AirMapCircle(context); + public MapCircle createViewInstance(ThemedReactContext context) { + return new MapCircle(context); } @ReactProp(name = "center") - public void setCenter(AirMapCircle view, ReadableMap center) { + public void setCenter(MapCircle view, ReadableMap center) { view.setCenter(new LatLng(center.getDouble("latitude"), center.getDouble("longitude"))); } @ReactProp(name = "radius", defaultDouble = 0) - public void setRadius(AirMapCircle view, double radius) { + public void setRadius(MapCircle view, double radius) { view.setRadius(radius); } @ReactProp(name = "strokeWidth", defaultFloat = 1f) - public void setStrokeWidth(AirMapCircle view, float widthInPoints) { + public void setStrokeWidth(MapCircle view, float widthInPoints) { float widthInScreenPx = metrics.density * widthInPoints; // done for parity with iOS view.setStrokeWidth(widthInScreenPx); } @ReactProp(name = "fillColor", defaultInt = Color.RED, customType = "Color") - public void setFillColor(AirMapCircle view, int color) { + public void setFillColor(MapCircle view, int color) { view.setFillColor(color); } @ReactProp(name = "strokeColor", defaultInt = Color.RED, customType = "Color") - public void setStrokeColor(AirMapCircle view, int color) { + public void setStrokeColor(MapCircle view, int color) { view.setStrokeColor(color); } @ReactProp(name = "zIndex", defaultFloat = 1.0f) - public void setZIndex(AirMapCircle view, float zIndex) { + public void setZIndex(MapCircle view, float zIndex) { view.setZIndex(zIndex); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapFeature.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapFeature.java new file mode 100644 index 0000000000000..429d35d40b66a --- /dev/null +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapFeature.java @@ -0,0 +1,17 @@ +package versioned.host.exp.exponent.modules.api.components.maps; + +import android.content.Context; + +import com.facebook.react.views.view.ReactViewGroup; + +public abstract class MapFeature extends ReactViewGroup { + public MapFeature(Context context) { + super(context); + } + + public abstract void addToMap(Object mapOrCollection); + + public abstract void removeFromMap(Object mapOrCollection); + + public abstract Object getFeature(); +} diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolyline.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolyline.java similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolyline.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolyline.java index bcde831705bc2..cc45942ec4cb9 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolyline.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolyline.java @@ -30,7 +30,7 @@ * from Dagothig/ColoredPolylineOverlay * (https://gist.github.com/Dagothig/5f9cf0a4a7a42901a7b2) */ -public class AirMapGradientPolyline extends AirMapFeature { +public class MapGradientPolyline extends MapFeature { private List points; private int[] colors; private float zIndex; @@ -41,7 +41,7 @@ public class AirMapGradientPolyline extends AirMapFeature { private TileOverlay tileOverlay; protected final Context context; - public AirMapGradientPolyline(Context context) { + public MapGradientPolyline(Context context) { super(context); this.context = context; } @@ -321,14 +321,13 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - Log.d("AirMapGradientPolyline", "ADDTOMAP"); - this.map = map; - this.tileOverlay = map.addTileOverlay(createTileOverlayOptions()); + public void addToMap(Object map) { + this.map = (GoogleMap) map; + this.tileOverlay = this.map.addTileOverlay(createTileOverlayOptions()); } @Override - public void removeFromMap(GoogleMap map) { + public void removeFromMap(Object map) { tileOverlay.remove(); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolylineManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolylineManager.java similarity index 77% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolylineManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolylineManager.java index 335e15d06e9e4..53d76990724fb 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapGradientPolylineManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapGradientPolylineManager.java @@ -15,10 +15,10 @@ import java.util.List; import java.util.ArrayList; -public class AirMapGradientPolylineManager extends ViewGroupManager { +public class MapGradientPolylineManager extends ViewGroupManager { private final DisplayMetrics metrics; - public AirMapGradientPolylineManager(ReactApplicationContext reactContext) { + public MapGradientPolylineManager(ReactApplicationContext reactContext) { super(); metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -32,12 +32,12 @@ public String getName() { } @Override - public AirMapGradientPolyline createViewInstance(ThemedReactContext context) { - return new AirMapGradientPolyline(context); + public MapGradientPolyline createViewInstance(ThemedReactContext context) { + return new MapGradientPolyline(context); } @ReactProp(name = "coordinates") - public void setCoordinates(AirMapGradientPolyline view, ReadableArray coordinates) { + public void setCoordinates(MapGradientPolyline view, ReadableArray coordinates) { List p = new ArrayList(); for (int i = 0; i < coordinates.size(); i++) { ReadableMap point = coordinates.getMap(i); @@ -48,7 +48,7 @@ public void setCoordinates(AirMapGradientPolyline view, ReadableArray coordinate } @ReactProp(name = "strokeColors", customType = "ColorArray") - public void setStrokeColors(AirMapGradientPolyline view, ReadableArray colors) { + public void setStrokeColors(MapGradientPolyline view, ReadableArray colors) { if (colors != null) { if (colors.size() == 0) { int[] colorValues = {0,0}; @@ -70,13 +70,13 @@ public void setStrokeColors(AirMapGradientPolyline view, ReadableArray colors) { } @ReactProp(name = "zIndex", defaultFloat = 1.0f) - public void setZIndex(AirMapGradientPolyline view, float zIndex) { + public void setZIndex(MapGradientPolyline view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "strokeWidth", defaultFloat = 1f) - public void setStrokeWidth(AirMapGradientPolyline view, float widthInPoints) { + public void setStrokeWidth(MapGradientPolyline view, float widthInPoints) { float widthInScreenPx = metrics.density * widthInPoints; // done for parity with iOS view.setWidth(widthInScreenPx); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmap.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmap.java similarity index 91% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmap.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmap.java index e8ade136536b3..74171f43ed790 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmap.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmap.java @@ -13,7 +13,7 @@ import java.util.Arrays; import java.util.List; -public class AirMapHeatmap extends AirMapFeature { +public class MapHeatmap extends MapFeature { private TileOverlayOptions heatmapOptions; private TileOverlay heatmap; @@ -24,7 +24,7 @@ public class AirMapHeatmap extends AirMapFeature { private Double opacity; private Integer radius; - public AirMapHeatmap(Context context) { + public MapHeatmap(Context context) { super(context); } @@ -101,13 +101,12 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - Log.d("AirMapHeatmap", "ADD TO MAP"); - heatmap = map.addTileOverlay(getHeatmapOptions()); + public void addToMap(Object map) { + heatmap = ((GoogleMap) map).addTileOverlay(getHeatmapOptions()); } @Override - public void removeFromMap(GoogleMap map) { + public void removeFromMap(Object map) { heatmap.remove(); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmapManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmapManager.java similarity index 82% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmapManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmapManager.java index a83cb7a0b969d..947391dd38b2b 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapHeatmapManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapHeatmapManager.java @@ -11,7 +11,7 @@ import com.google.maps.android.heatmaps.Gradient; -public class AirMapHeatmapManager extends ViewGroupManager { +public class MapHeatmapManager extends ViewGroupManager { @Override public String getName() { @@ -19,12 +19,12 @@ public String getName() { } @Override - public AirMapHeatmap createViewInstance(ThemedReactContext context) { - return new AirMapHeatmap(context); + public MapHeatmap createViewInstance(ThemedReactContext context) { + return new MapHeatmap(context); } @ReactProp(name = "points") - public void setPoints(AirMapHeatmap view, ReadableArray points) { + public void setPoints(MapHeatmap view, ReadableArray points) { WeightedLatLng[] p = new WeightedLatLng[points.size()]; for (int i = 0; i < points.size(); i++) { ReadableMap point = points.getMap(i); @@ -41,7 +41,7 @@ public void setPoints(AirMapHeatmap view, ReadableArray points) { } @ReactProp(name = "gradient") - public void setGradient(AirMapHeatmap view, ReadableMap gradient) { + public void setGradient(MapHeatmap view, ReadableMap gradient) { ReadableArray srcColors = gradient.getArray("colors"); int[] colors = new int[srcColors.size()]; for (int i = 0; i < srcColors.size(); i++) { @@ -63,12 +63,12 @@ public void setGradient(AirMapHeatmap view, ReadableMap gradient) { } @ReactProp(name = "opacity") - public void setOpacity(AirMapHeatmap view, double opacity) { + public void setOpacity(MapHeatmap view, double opacity) { view.setOpacity(opacity); } @ReactProp(name = "radius") - public void setRadius(AirMapHeatmap view, int radius) { + public void setRadius(MapHeatmap view, int radius) { view.setRadius(radius); } } \ No newline at end of file diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLiteManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLiteManager.java similarity index 77% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLiteManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLiteManager.java index 60060c6fc9590..92b5b3388b2ea 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLiteManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLiteManager.java @@ -3,7 +3,7 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.google.android.gms.maps.GoogleMapOptions; -public class AirMapLiteManager extends AirMapManager { +public class MapLiteManager extends MapManager { private static final String REACT_CLASS = "AIRMapLite"; @@ -12,7 +12,7 @@ public String getName() { return REACT_CLASS; } - public AirMapLiteManager(ReactApplicationContext context) { + public MapLiteManager(ReactApplicationContext context) { super(context); this.googleMapOptions = new GoogleMapOptions().liteMode(true); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTile.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTile.java similarity index 90% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTile.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTile.java index cb11b054bc5b6..ce47361be1938 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTile.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTile.java @@ -13,7 +13,7 @@ import java.io.IOException; import java.io.InputStream; -public class AirMapLocalTile extends AirMapFeature { +public class MapLocalTile extends MapFeature { class AIRMapLocalTileProvider implements TileProvider { private static final int BUFFER_SIZE = 16 * 1024; @@ -80,14 +80,14 @@ private String getTileFilename(int x, int y, int zoom) { private TileOverlayOptions tileOverlayOptions; private TileOverlay tileOverlay; - private AirMapLocalTile.AIRMapLocalTileProvider tileProvider; + private MapLocalTile.AIRMapLocalTileProvider tileProvider; private String pathTemplate; private float tileSize; private float zIndex; private boolean useAssets; - public AirMapLocalTile(Context context) { + public MapLocalTile(Context context) { super(context); } @@ -129,7 +129,7 @@ public TileOverlayOptions getTileOverlayOptions() { private TileOverlayOptions createTileOverlayOptions() { TileOverlayOptions options = new TileOverlayOptions(); options.zIndex(zIndex); - this.tileProvider = new AirMapLocalTile.AIRMapLocalTileProvider((int)this.tileSize, this.pathTemplate, this.useAssets); + this.tileProvider = new MapLocalTile.AIRMapLocalTileProvider((int)this.tileSize, this.pathTemplate, this.useAssets); options.tileProvider(this.tileProvider); return options; } @@ -140,12 +140,12 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - this.tileOverlay = map.addTileOverlay(getTileOverlayOptions()); + public void addToMap(Object map) { + this.tileOverlay = ((GoogleMap) map).addTileOverlay(getTileOverlayOptions()); } @Override - public void removeFromMap(GoogleMap map) { + public void removeFromMap(Object map) { tileOverlay.remove(); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTileManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTileManager.java similarity index 67% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTileManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTileManager.java index 2e6aeeb7d8eba..7973b56c8483c 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapLocalTileManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapLocalTileManager.java @@ -12,9 +12,9 @@ /** * Created by zavadpe on 30/11/2017. */ -public class AirMapLocalTileManager extends ViewGroupManager { +public class MapLocalTileManager extends ViewGroupManager { - public AirMapLocalTileManager(ReactApplicationContext reactContext) { + public MapLocalTileManager(ReactApplicationContext reactContext) { super(); DisplayMetrics metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -28,27 +28,27 @@ public String getName() { } @Override - public AirMapLocalTile createViewInstance(ThemedReactContext context) { - return new AirMapLocalTile(context); + public MapLocalTile createViewInstance(ThemedReactContext context) { + return new MapLocalTile(context); } @ReactProp(name = "pathTemplate") - public void setPathTemplate(AirMapLocalTile view, String pathTemplate) { + public void setPathTemplate(MapLocalTile view, String pathTemplate) { view.setPathTemplate(pathTemplate); } @ReactProp(name = "tileSize", defaultFloat = 256f) - public void setTileSize(AirMapLocalTile view, float tileSize) { + public void setTileSize(MapLocalTile view, float tileSize) { view.setTileSize(tileSize); } @ReactProp(name = "zIndex", defaultFloat = -1.0f) - public void setZIndex(AirMapLocalTile view, float zIndex) { + public void setZIndex(MapLocalTile view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "useAssets", defaultBoolean = false) - public void setUseAssets(AirMapLocalTile view, boolean useAssets) { + public void setUseAssets(MapLocalTile view, boolean useAssets) { view.setUseAssets(useAssets); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapManager.java similarity index 77% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapManager.java index 773bc89ee00a4..562d776b0970f 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapManager.java @@ -25,7 +25,7 @@ import java.util.Map; -public class AirMapManager extends ViewGroupManager { +public class MapManager extends ViewGroupManager { private static final String REACT_CLASS = "AIRMap"; @@ -45,19 +45,19 @@ public class AirMapManager extends ViewGroupManager { ); private final ReactApplicationContext appContext; - private AirMapMarkerManager markerManager; + private MapMarkerManager markerManager; protected GoogleMapOptions googleMapOptions; - public AirMapManager(ReactApplicationContext context) { + public MapManager(ReactApplicationContext context) { this.appContext = context; this.googleMapOptions = new GoogleMapOptions(); } - public AirMapMarkerManager getMarkerManager() { + public MapMarkerManager getMarkerManager() { return this.markerManager; } - public void setMarkerManager(AirMapMarkerManager markerManager) { + public void setMarkerManager(MapMarkerManager markerManager) { this.markerManager = markerManager; } @@ -67,8 +67,8 @@ public String getName() { } @Override - protected AirMapView createViewInstance(ThemedReactContext context) { - return new AirMapView(context, this.appContext, this, googleMapOptions); + protected MapView createViewInstance(ThemedReactContext context) { + return new MapView(context, this.appContext, this, googleMapOptions); } private void emitMapError(ThemedReactContext context, String message, String type) { @@ -82,38 +82,38 @@ private void emitMapError(ThemedReactContext context, String message, String typ } @ReactProp(name = "region") - public void setRegion(AirMapView view, ReadableMap region) { + public void setRegion(MapView view, ReadableMap region) { view.setRegion(region); } @ReactProp(name = "initialRegion") - public void setInitialRegion(AirMapView view, ReadableMap initialRegion) { + public void setInitialRegion(MapView view, ReadableMap initialRegion) { view.setInitialRegion(initialRegion); } @ReactProp(name = "camera") - public void setCamera(AirMapView view, ReadableMap camera) { + public void setCamera(MapView view, ReadableMap camera) { view.setCamera(camera); } @ReactProp(name = "initialCamera") - public void setInitialCamera(AirMapView view, ReadableMap initialCamera) { + public void setInitialCamera(MapView view, ReadableMap initialCamera) { view.setInitialCamera(initialCamera); } @ReactProp(name = "mapType") - public void setMapType(AirMapView view, @Nullable String mapType) { + public void setMapType(MapView view, @Nullable String mapType) { int typeId = MAP_TYPES.get(mapType); view.map.setMapType(typeId); } @ReactProp(name = "customMapStyleString") - public void setMapStyle(AirMapView view, @Nullable String customMapStyleString) { + public void setMapStyle(MapView view, @Nullable String customMapStyleString) { view.setMapStyle(customMapStyleString); } @ReactProp(name = "mapPadding") - public void setMapPadding(AirMapView view, @Nullable ReadableMap padding) { + public void setMapPadding(MapView view, @Nullable ReadableMap padding) { int left = 0; int top = 0; int right = 0; @@ -143,141 +143,141 @@ public void setMapPadding(AirMapView view, @Nullable ReadableMap padding) { } @ReactProp(name = "showsUserLocation", defaultBoolean = false) - public void setShowsUserLocation(AirMapView view, boolean showUserLocation) { + public void setShowsUserLocation(MapView view, boolean showUserLocation) { view.setShowsUserLocation(showUserLocation); } @ReactProp(name = "userLocationPriority") - public void setUserLocationPriority(AirMapView view, @Nullable String accuracy) { + public void setUserLocationPriority(MapView view, @Nullable String accuracy) { view.setUserLocationPriority(MY_LOCATION_PRIORITY.get(accuracy)); } @ReactProp(name = "userLocationUpdateInterval", defaultInt = 5000) - public void setUserLocationUpdateInterval(AirMapView view, int updateInterval) { + public void setUserLocationUpdateInterval(MapView view, int updateInterval) { view.setUserLocationUpdateInterval(updateInterval); } @ReactProp(name = "userLocationFastestInterval", defaultInt = 5000) - public void setUserLocationFastestInterval(AirMapView view, int fastestInterval) { + public void setUserLocationFastestInterval(MapView view, int fastestInterval) { view.setUserLocationFastestInterval(fastestInterval); } @ReactProp(name = "showsMyLocationButton", defaultBoolean = true) - public void setShowsMyLocationButton(AirMapView view, boolean showMyLocationButton) { + public void setShowsMyLocationButton(MapView view, boolean showMyLocationButton) { view.setShowsMyLocationButton(showMyLocationButton); } @ReactProp(name = "toolbarEnabled", defaultBoolean = true) - public void setToolbarEnabled(AirMapView view, boolean toolbarEnabled) { + public void setToolbarEnabled(MapView view, boolean toolbarEnabled) { view.setToolbarEnabled(toolbarEnabled); } // This is a private prop to improve performance of panDrag by disabling it when the callback // is not set @ReactProp(name = "handlePanDrag", defaultBoolean = false) - public void setHandlePanDrag(AirMapView view, boolean handlePanDrag) { + public void setHandlePanDrag(MapView view, boolean handlePanDrag) { view.setHandlePanDrag(handlePanDrag); } @ReactProp(name = "showsTraffic", defaultBoolean = false) - public void setShowTraffic(AirMapView view, boolean showTraffic) { + public void setShowTraffic(MapView view, boolean showTraffic) { view.map.setTrafficEnabled(showTraffic); } @ReactProp(name = "showsBuildings", defaultBoolean = false) - public void setShowBuildings(AirMapView view, boolean showBuildings) { + public void setShowBuildings(MapView view, boolean showBuildings) { view.map.setBuildingsEnabled(showBuildings); } @ReactProp(name = "showsIndoors", defaultBoolean = false) - public void setShowIndoors(AirMapView view, boolean showIndoors) { + public void setShowIndoors(MapView view, boolean showIndoors) { view.map.setIndoorEnabled(showIndoors); } @ReactProp(name = "showsIndoorLevelPicker", defaultBoolean = false) - public void setShowsIndoorLevelPicker(AirMapView view, boolean showsIndoorLevelPicker) { + public void setShowsIndoorLevelPicker(MapView view, boolean showsIndoorLevelPicker) { view.map.getUiSettings().setIndoorLevelPickerEnabled(showsIndoorLevelPicker); } @ReactProp(name = "showsCompass", defaultBoolean = false) - public void setShowsCompass(AirMapView view, boolean showsCompass) { + public void setShowsCompass(MapView view, boolean showsCompass) { view.map.getUiSettings().setCompassEnabled(showsCompass); } @ReactProp(name = "scrollEnabled", defaultBoolean = false) - public void setScrollEnabled(AirMapView view, boolean scrollEnabled) { + public void setScrollEnabled(MapView view, boolean scrollEnabled) { view.map.getUiSettings().setScrollGesturesEnabled(scrollEnabled); } @ReactProp(name = "zoomEnabled", defaultBoolean = false) - public void setZoomEnabled(AirMapView view, boolean zoomEnabled) { + public void setZoomEnabled(MapView view, boolean zoomEnabled) { view.map.getUiSettings().setZoomGesturesEnabled(zoomEnabled); } @ReactProp(name = "zoomControlEnabled", defaultBoolean = true) - public void setZoomControlEnabled(AirMapView view, boolean zoomControlEnabled) { + public void setZoomControlEnabled(MapView view, boolean zoomControlEnabled) { view.map.getUiSettings().setZoomControlsEnabled(zoomControlEnabled); } @ReactProp(name = "rotateEnabled", defaultBoolean = false) - public void setRotateEnabled(AirMapView view, boolean rotateEnabled) { + public void setRotateEnabled(MapView view, boolean rotateEnabled) { view.map.getUiSettings().setRotateGesturesEnabled(rotateEnabled); } @ReactProp(name = "scrollDuringRotateOrZoomEnabled", defaultBoolean = true) - public void setScrollDuringRotateOrZoomEnabled(AirMapView view, boolean scrollDuringRotateOrZoomEnabled) { + public void setScrollDuringRotateOrZoomEnabled(MapView view, boolean scrollDuringRotateOrZoomEnabled) { view.map.getUiSettings().setScrollGesturesEnabledDuringRotateOrZoom(scrollDuringRotateOrZoomEnabled); } @ReactProp(name = "cacheEnabled", defaultBoolean = false) - public void setCacheEnabled(AirMapView view, boolean cacheEnabled) { + public void setCacheEnabled(MapView view, boolean cacheEnabled) { view.setCacheEnabled(cacheEnabled); } @ReactProp(name = "loadingEnabled", defaultBoolean = false) - public void setLoadingEnabled(AirMapView view, boolean loadingEnabled) { + public void setLoadingEnabled(MapView view, boolean loadingEnabled) { view.enableMapLoading(loadingEnabled); } @ReactProp(name = "moveOnMarkerPress", defaultBoolean = true) - public void setMoveOnMarkerPress(AirMapView view, boolean moveOnPress) { + public void setMoveOnMarkerPress(MapView view, boolean moveOnPress) { view.setMoveOnMarkerPress(moveOnPress); } @ReactProp(name = "loadingBackgroundColor", customType = "Color") - public void setLoadingBackgroundColor(AirMapView view, @Nullable Integer loadingBackgroundColor) { + public void setLoadingBackgroundColor(MapView view, @Nullable Integer loadingBackgroundColor) { view.setLoadingBackgroundColor(loadingBackgroundColor); } @ReactProp(name = "loadingIndicatorColor", customType = "Color") - public void setLoadingIndicatorColor(AirMapView view, @Nullable Integer loadingIndicatorColor) { + public void setLoadingIndicatorColor(MapView view, @Nullable Integer loadingIndicatorColor) { view.setLoadingIndicatorColor(loadingIndicatorColor); } @ReactProp(name = "pitchEnabled", defaultBoolean = false) - public void setPitchEnabled(AirMapView view, boolean pitchEnabled) { + public void setPitchEnabled(MapView view, boolean pitchEnabled) { view.map.getUiSettings().setTiltGesturesEnabled(pitchEnabled); } @ReactProp(name = "minZoomLevel") - public void setMinZoomLevel(AirMapView view, float minZoomLevel) { + public void setMinZoomLevel(MapView view, float minZoomLevel) { view.map.setMinZoomPreference(minZoomLevel); } @ReactProp(name = "maxZoomLevel") - public void setMaxZoomLevel(AirMapView view, float maxZoomLevel) { + public void setMaxZoomLevel(MapView view, float maxZoomLevel) { view.map.setMaxZoomPreference(maxZoomLevel); } @ReactProp(name = "kmlSrc") - public void setKmlSrc(AirMapView view, String kmlUrl) { + public void setKmlSrc(MapView view, String kmlUrl) { if (kmlUrl != null) { view.setKmlSrc(kmlUrl); } } @Override - public void receiveCommand(@NonNull AirMapView view, String commandId, @Nullable ReadableArray args) { + public void receiveCommand(@NonNull MapView view, String commandId, @Nullable ReadableArray args) { int duration; double lat; double lng; @@ -399,27 +399,27 @@ public LayoutShadowNode createShadowNodeInstance() { } @Override - public void addView(AirMapView parent, View child, int index) { + public void addView(MapView parent, View child, int index) { parent.addFeature(child, index); } @Override - public int getChildCount(AirMapView view) { + public int getChildCount(MapView view) { return view.getFeatureCount(); } @Override - public View getChildAt(AirMapView view, int index) { + public View getChildAt(MapView view, int index) { return view.getFeatureAt(index); } @Override - public void removeViewAt(AirMapView parent, int index) { + public void removeViewAt(MapView parent, int index) { parent.removeFeatureAt(index); } @Override - public void updateExtraData(AirMapView view, Object extraData) { + public void updateExtraData(MapView view, Object extraData) { view.updateExtraData(extraData); } @@ -429,7 +429,7 @@ void pushEvent(ThemedReactContext context, View view, String name, WritableMap d } @Override - public void onDropViewInstance(AirMapView view) { + public void onDropViewInstance(MapView view) { view.doDestroy(); super.onDropViewInstance(view); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarker.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarker.java similarity index 94% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarker.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarker.java index ccc9e5b528839..80ae967f4587c 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarker.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarker.java @@ -33,14 +33,14 @@ import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.facebook.react.bridge.ReadableMap; -import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; +import com.google.maps.android.collections.MarkerManager; -public class AirMapMarker extends AirMapFeature { +public class MapMarker extends MapFeature { private MarkerOptions markerOptions; private Marker marker; @@ -56,7 +56,7 @@ public class AirMapMarker extends AirMapFeature { private float anchorX; private float anchorY; - private AirMapCallout calloutView; + private MapCallout calloutView; private View wrappedCalloutView; private final Context context; @@ -78,7 +78,7 @@ public class AirMapMarker extends AirMapFeature { private boolean tracksViewChangesActive = false; private boolean hasCustomMarkerView = false; - private final AirMapMarkerManager markerManager; + private final MapMarkerManager markerManager; private String imageUri; private final DraweeHolder logoHolder; @@ -111,15 +111,15 @@ public void onFinalImageSet( CloseableReference.closeSafely(imageReference); } } - if (AirMapMarker.this.markerManager != null && AirMapMarker.this.imageUri != null) { - AirMapMarker.this.markerManager.getSharedIcon(AirMapMarker.this.imageUri) + if (MapMarker.this.markerManager != null && MapMarker.this.imageUri != null) { + MapMarker.this.markerManager.getSharedIcon(MapMarker.this.imageUri) .updateIcon(iconBitmapDescriptor, iconBitmap); } update(true); } }; - public AirMapMarker(Context context, AirMapMarkerManager markerManager) { + public MapMarker(Context context, MapMarkerManager markerManager) { super(context); this.context = context; this.markerManager = markerManager; @@ -127,7 +127,7 @@ public AirMapMarker(Context context, AirMapMarkerManager markerManager) { logoHolder.onAttach(); } - public AirMapMarker(Context context, MarkerOptions options, AirMapMarkerManager markerManager) { + public MapMarker(Context context, MarkerOptions options, MapMarkerManager markerManager) { super(context); this.context = context; this.markerManager = markerManager; @@ -332,7 +332,7 @@ public void setImage(String uri) { } if (uri != null) { // listening for marker bitmap descriptor update, as well as check whether to load the image. - AirMapMarkerManager.AirMapMarkerSharedIcon sharedIcon = this.markerManager.getSharedIcon(uri); + MapMarkerManager.AirMapMarkerSharedIcon sharedIcon = this.markerManager.getSharedIcon(uri); sharedIcon.addMarker(this); shouldLoadImage = sharedIcon.shouldLoadImage(); } @@ -399,7 +399,7 @@ public MarkerOptions getMarkerOptions() { public void addView(View child, int index) { super.addView(child, index); // if children are added, it means we are rendering a custom marker - if (!(child instanceof AirMapCallout)) { + if (!(child instanceof MapCallout)) { hasCustomMarkerView = true; updateTracksViewChanges(); } @@ -427,17 +427,19 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - marker = map.addMarker(getMarkerOptions()); + public void addToMap(Object collection) { + MarkerManager.Collection markerCollection = (MarkerManager.Collection) collection; + marker = markerCollection.addMarker(getMarkerOptions()); updateTracksViewChanges(); } @Override - public void removeFromMap(GoogleMap map) { + public void removeFromMap(Object collection) { if (marker == null) { return; } - marker.remove(); + MarkerManager.Collection markerCollection = (MarkerManager.Collection) collection; + markerCollection.remove(marker); marker = null; updateTracksViewChanges(); } @@ -539,11 +541,11 @@ private Bitmap createDrawable() { return bitmap; } - public void setCalloutView(AirMapCallout view) { + public void setCalloutView(MapCallout view) { this.calloutView = view; } - public AirMapCallout getCalloutView() { + public MapCallout getCalloutView() { return this.calloutView; } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarkerManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarkerManager.java similarity index 83% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarkerManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarkerManager.java index 275afdc78965b..c22a2daa69838 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapMarkerManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapMarkerManager.java @@ -23,12 +23,12 @@ import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; -public class AirMapMarkerManager extends ViewGroupManager { +public class MapMarkerManager extends ViewGroupManager { public static class AirMapMarkerSharedIcon { private BitmapDescriptor iconBitmapDescriptor; private Bitmap bitmap; - private final Map markers; + private final Map markers; private boolean loadImageStarted; public AirMapMarkerSharedIcon(){ @@ -57,7 +57,7 @@ public synchronized boolean shouldLoadImage(){ * * @param marker */ - public synchronized void addMarker(AirMapMarker marker) { + public synchronized void addMarker(MapMarker marker) { this.markers.put(marker, true); if (this.iconBitmapDescriptor != null) { marker.setIconBitmapDescriptor(this.iconBitmapDescriptor, this.bitmap); @@ -71,7 +71,7 @@ public synchronized void addMarker(AirMapMarker marker) { * * @param marker */ - public synchronized void removeMarker(AirMapMarker marker) { + public synchronized void removeMarker(MapMarker marker) { this.markers.remove(marker); } @@ -101,7 +101,7 @@ public synchronized void updateIcon(BitmapDescriptor bitmapDescriptor, Bitmap bi return; } - for (Map.Entry markerEntry: markers.entrySet()) { + for (Map.Entry markerEntry: markers.entrySet()) { if (markerEntry.getKey() != null) { markerEntry.getKey().setIconBitmapDescriptor(bitmapDescriptor, bitmap); } @@ -147,7 +147,7 @@ public void removeSharedIconIfEmpty(String uri) { } } - public AirMapMarkerManager() { + public MapMarkerManager() { } @Override @@ -156,27 +156,27 @@ public String getName() { } @Override - public AirMapMarker createViewInstance(ThemedReactContext context) { - return new AirMapMarker(context, this); + public MapMarker createViewInstance(ThemedReactContext context) { + return new MapMarker(context, this); } @ReactProp(name = "coordinate") - public void setCoordinate(AirMapMarker view, ReadableMap map) { + public void setCoordinate(MapMarker view, ReadableMap map) { view.setCoordinate(map); } @ReactProp(name = "title") - public void setTitle(AirMapMarker view, String title) { + public void setTitle(MapMarker view, String title) { view.setTitle(title); } @ReactProp(name = "identifier") - public void setIdentifier(AirMapMarker view, String identifier) { + public void setIdentifier(MapMarker view, String identifier) { view.setIdentifier(identifier); } @ReactProp(name = "description") - public void setDescription(AirMapMarker view, String description) { + public void setDescription(MapMarker view, String description) { view.setSnippet(description); } @@ -195,7 +195,7 @@ public void setDescription(AirMapMarker view, String description) { // } @ReactProp(name = "anchor") - public void setAnchor(AirMapMarker view, ReadableMap map) { + public void setAnchor(MapMarker view, ReadableMap map) { // should default to (0.5, 1) (bottom middle) double x = map != null && map.hasKey("x") ? map.getDouble("x") : 0.5; double y = map != null && map.hasKey("y") ? map.getDouble("y") : 1.0; @@ -203,7 +203,7 @@ public void setAnchor(AirMapMarker view, ReadableMap map) { } @ReactProp(name = "calloutAnchor") - public void setCalloutAnchor(AirMapMarker view, ReadableMap map) { + public void setCalloutAnchor(MapMarker view, ReadableMap map) { // should default to (0.5, 0) (top middle) double x = map != null && map.hasKey("x") ? map.getDouble("x") : 0.5; double y = map != null && map.hasKey("y") ? map.getDouble("y") : 0.0; @@ -211,7 +211,7 @@ public void setCalloutAnchor(AirMapMarker view, ReadableMap map) { } @ReactProp(name = "image") - public void setImage(AirMapMarker view, @Nullable String source) { + public void setImage(MapMarker view, @Nullable String source) { view.setImage(source); } // public void setImage(AirMapMarker view, ReadableMap image) { @@ -219,12 +219,12 @@ public void setImage(AirMapMarker view, @Nullable String source) { // } @ReactProp(name = "icon") - public void setIcon(AirMapMarker view, @Nullable String source) { + public void setIcon(MapMarker view, @Nullable String source) { view.setImage(source); } @ReactProp(name = "pinColor", defaultInt = Color.RED, customType = "Color") - public void setPinColor(AirMapMarker view, int pinColor) { + public void setPinColor(MapMarker view, int pinColor) { float[] hsv = new float[3]; Color.colorToHSV(pinColor, hsv); // NOTE: android only supports a hue @@ -232,23 +232,23 @@ public void setPinColor(AirMapMarker view, int pinColor) { } @ReactProp(name = "rotation", defaultFloat = 0.0f) - public void setMarkerRotation(AirMapMarker view, float rotation) { + public void setMarkerRotation(MapMarker view, float rotation) { view.setRotation(rotation); } @ReactProp(name = "flat", defaultBoolean = false) - public void setFlat(AirMapMarker view, boolean flat) { + public void setFlat(MapMarker view, boolean flat) { view.setFlat(flat); } @ReactProp(name = "draggable", defaultBoolean = false) - public void setDraggable(AirMapMarker view, boolean draggable) { + public void setDraggable(MapMarker view, boolean draggable) { view.setDraggable(draggable); } @Override @ReactProp(name = "zIndex", defaultFloat = 0.0f) - public void setZIndex(AirMapMarker view, float zIndex) { + public void setZIndex(MapMarker view, float zIndex) { super.setZIndex(view, zIndex); int integerZIndex = Math.round(zIndex); view.setZIndex(integerZIndex); @@ -256,22 +256,22 @@ public void setZIndex(AirMapMarker view, float zIndex) { @Override @ReactProp(name = "opacity", defaultFloat = 1.0f) - public void setOpacity(AirMapMarker view, float opacity) { + public void setOpacity(MapMarker view, float opacity) { super.setOpacity(view, opacity); view.setOpacity(opacity); } @ReactProp(name = "tracksViewChanges", defaultBoolean = true) - public void setTracksViewChanges(AirMapMarker view, boolean tracksViewChanges) { + public void setTracksViewChanges(MapMarker view, boolean tracksViewChanges) { view.setTracksViewChanges(tracksViewChanges); } @Override - public void addView(AirMapMarker parent, View child, int index) { + public void addView(MapMarker parent, View child, int index) { // if an component is a child, then it is a callout view, NOT part of the // marker. - if (child instanceof AirMapCallout) { - parent.setCalloutView((AirMapCallout) child); + if (child instanceof MapCallout) { + parent.setCalloutView((MapCallout) child); } else { super.addView(parent, child, index); parent.update(true); @@ -279,13 +279,13 @@ public void addView(AirMapMarker parent, View child, int index) { } @Override - public void removeViewAt(AirMapMarker parent, int index) { + public void removeViewAt(MapMarker parent, int index) { super.removeViewAt(parent, index); parent.update(true); } @Override - public void receiveCommand(@NonNull AirMapMarker view, String commandId, @Nullable ReadableArray args) { + public void receiveCommand(@NonNull MapMarker view, String commandId, @Nullable ReadableArray args) { int duration; double lat; double lng; @@ -347,7 +347,7 @@ public LayoutShadowNode createShadowNodeInstance() { } @Override - public void updateExtraData(AirMapMarker view, Object extraData) { + public void updateExtraData(MapMarker view, Object extraData) { // This method is called from the shadow node with the width/height of the rendered // marker view. HashMap data = (HashMap) extraData; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapModule.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapModule.java similarity index 96% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapModule.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapModule.java index 6d9b8bc722e17..f856ad13c6f52 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapModule.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapModule.java @@ -40,8 +40,8 @@ import java.util.Map; import java.util.HashMap; -@ReactModule(name = AirMapModule.NAME) -public class AirMapModule extends ReactContextBaseJavaModule { +@ReactModule(name = MapModule.NAME) +public class MapModule extends ReactContextBaseJavaModule { public static final String NAME = "AirMapModule"; private static final String SNAPSHOT_RESULT_FILE = "file"; @@ -49,7 +49,7 @@ public class AirMapModule extends ReactContextBaseJavaModule { private static final String SNAPSHOT_FORMAT_PNG = "png"; private static final String SNAPSHOT_FORMAT_JPG = "jpg"; - public AirMapModule(ReactApplicationContext reactContext) { + public MapModule(ReactApplicationContext reactContext) { super(reactContext); } @@ -98,7 +98,7 @@ public void takeSnapshot(final int tag, final ReadableMap options, final Promise UIManagerModule uiManager = context.getNativeModule(UIManagerModule.class); uiManager.addUIBlock(new UIBlock() { public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); return; @@ -160,7 +160,7 @@ public void getCamera(final int tag, final Promise promise) { @Override public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); return; @@ -197,7 +197,7 @@ public void getAddressFromCoordinates(final int tag, final ReadableMap coordinat @Override public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); return; @@ -258,7 +258,7 @@ public void pointForCoordinate(final int tag, ReadableMap coordinate, final Prom @Override public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); return; @@ -295,7 +295,7 @@ public void coordinateForPoint(final int tag, ReadableMap point, final Promise p @Override public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); @@ -328,7 +328,7 @@ public void getMapBoundaries(final int tag, final Promise promise) { @Override public void execute(NativeViewHierarchyManager nvhm) { - AirMapView view = (AirMapView) nvhm.resolveView(tag); + MapView view = (MapView) nvhm.resolveView(tag); if (view == null) { promise.reject("AirMapView not found"); return; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlay.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlay.java similarity index 79% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlay.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlay.java index 99570486552bc..4e3fbacfd3fb5 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlay.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlay.java @@ -4,15 +4,15 @@ import android.graphics.Bitmap; import com.facebook.react.bridge.ReadableArray; -import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.GroundOverlay; import com.google.android.gms.maps.model.GroundOverlayOptions; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.LatLngBounds; +import com.google.maps.android.collections.GroundOverlayManager; -public class AirMapOverlay extends AirMapFeature implements ImageReadable { +public class MapOverlay extends MapFeature implements ImageReadable { private GroundOverlayOptions groundOverlayOptions; private GroundOverlay groundOverlay; @@ -24,9 +24,9 @@ public class AirMapOverlay extends AirMapFeature implements ImageReadable { private float transparency; private final ImageReader mImageReader; - private GoogleMap map; + private GroundOverlayManager.Collection groundOverlayCollection; - public AirMapOverlay(Context context) { + public MapOverlay(Context context) { super(context); this.mImageReader = new ImageReader(context, getResources(), this); } @@ -107,24 +107,26 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { + public void addToMap(Object collection) { + GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection; GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions(); if (groundOverlayOptions != null) { - this.groundOverlay = map.addGroundOverlay(groundOverlayOptions); - this.groundOverlay.setClickable(this.tappable); + groundOverlay = groundOverlayCollection.addGroundOverlay(groundOverlayOptions); + groundOverlay.setClickable(this.tappable); } else { - this.map = map; + this.groundOverlayCollection = groundOverlayCollection; } } @Override - public void removeFromMap(GoogleMap map) { - this.map = null; - if (this.groundOverlay != null) { - this.groundOverlay.remove(); - this.groundOverlay = null; - this.groundOverlayOptions = null; + public void removeFromMap(Object collection) { + if (groundOverlay != null) { + GroundOverlayManager.Collection groundOverlayCollection = (GroundOverlayManager.Collection) collection; + groundOverlayCollection.remove(groundOverlay); + groundOverlay = null; + groundOverlayOptions = null; } + groundOverlayCollection = null; } @Override @@ -152,12 +154,12 @@ private GroundOverlay getGroundOverlay() { if (this.groundOverlay != null) { return this.groundOverlay; } - if (this.map == null) { + if (this.groundOverlayCollection == null) { return null; } GroundOverlayOptions groundOverlayOptions = getGroundOverlayOptions(); if (groundOverlayOptions != null) { - return this.map.addGroundOverlay(groundOverlayOptions); + return this.groundOverlayCollection.addGroundOverlay(groundOverlayOptions); } return null; } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlayManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlayManager.java similarity index 69% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlayManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlayManager.java index 6e722df3eed52..ec325523c7b27 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapOverlayManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapOverlayManager.java @@ -15,9 +15,9 @@ import java.util.Map; -public class AirMapOverlayManager extends ViewGroupManager { +public class MapOverlayManager extends ViewGroupManager { - public AirMapOverlayManager(ReactApplicationContext reactContext) { + public MapOverlayManager(ReactApplicationContext reactContext) { super(); DisplayMetrics metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -31,37 +31,37 @@ public String getName() { } @Override - public AirMapOverlay createViewInstance(ThemedReactContext context) { - return new AirMapOverlay(context); + public MapOverlay createViewInstance(ThemedReactContext context) { + return new MapOverlay(context); } @ReactProp(name = "bounds") - public void setBounds(AirMapOverlay view, ReadableArray bounds) { + public void setBounds(MapOverlay view, ReadableArray bounds) { view.setBounds(bounds); } @ReactProp(name = "bearing") - public void setBearing(AirMapOverlay view, float bearing){ + public void setBearing(MapOverlay view, float bearing){ view.setBearing(bearing); } @ReactProp(name = "zIndex", defaultFloat = 1.0f) - public void setZIndex(AirMapOverlay view, float zIndex) { + public void setZIndex(MapOverlay view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "opacity", defaultFloat = 1.0f) - public void setOpacity(AirMapOverlay view, float opacity) { + public void setOpacity(MapOverlay view, float opacity) { view.setTransparency(1 - opacity); } @ReactProp(name = "image") - public void setImage(AirMapOverlay view, @Nullable String source) { + public void setImage(MapOverlay view, @Nullable String source) { view.setImage(source); } @ReactProp(name = "tappable", defaultBoolean = false) - public void setTappable(AirMapOverlay view, boolean tapabble) { + public void setTappable(MapOverlay view, boolean tapabble) { view.setTappable(tapabble); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygon.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygon.java similarity index 87% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygon.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygon.java index 1e20d8adcb719..244c4585c5f40 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygon.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygon.java @@ -4,15 +4,15 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Polygon; import com.google.android.gms.maps.model.PolygonOptions; +import com.google.maps.android.collections.PolygonManager; import java.util.ArrayList; import java.util.List; -public class AirMapPolygon extends AirMapFeature { +public class MapPolygon extends MapFeature { private PolygonOptions polygonOptions; private Polygon polygon; @@ -26,7 +26,7 @@ public class AirMapPolygon extends AirMapFeature { private boolean tappable; private float zIndex; - public AirMapPolygon(Context context) { + public MapPolygon(Context context) { super(context); } @@ -148,13 +148,15 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - polygon = map.addPolygon(getPolygonOptions()); + public void addToMap(Object collection) { + PolygonManager.Collection polygonCollection = (PolygonManager.Collection) collection; + polygon = polygonCollection.addPolygon(getPolygonOptions()); polygon.setClickable(this.tappable); } @Override - public void removeFromMap(GoogleMap map) { - polygon.remove(); + public void removeFromMap(Object collection) { + PolygonManager.Collection polygonCollection = (PolygonManager.Collection) collection; + polygonCollection.remove(polygon); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygonManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygonManager.java similarity index 71% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygonManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygonManager.java index c08d0b80b6a64..86f7e60cd8afe 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolygonManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolygonManager.java @@ -16,10 +16,10 @@ import java.util.Map; -public class AirMapPolygonManager extends ViewGroupManager { +public class MapPolygonManager extends ViewGroupManager { private final DisplayMetrics metrics; - public AirMapPolygonManager(ReactApplicationContext reactContext) { + public MapPolygonManager(ReactApplicationContext reactContext) { super(); metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -33,48 +33,48 @@ public String getName() { } @Override - public AirMapPolygon createViewInstance(ThemedReactContext context) { - return new AirMapPolygon(context); + public MapPolygon createViewInstance(ThemedReactContext context) { + return new MapPolygon(context); } @ReactProp(name = "coordinates") - public void setCoordinate(AirMapPolygon view, ReadableArray coordinates) { + public void setCoordinate(MapPolygon view, ReadableArray coordinates) { view.setCoordinates(coordinates); } @ReactProp(name = "holes") - public void setHoles(AirMapPolygon view, ReadableArray holes) { + public void setHoles(MapPolygon view, ReadableArray holes) { view.setHoles(holes); } @ReactProp(name = "strokeWidth", defaultFloat = 1f) - public void setStrokeWidth(AirMapPolygon view, float widthInPoints) { + public void setStrokeWidth(MapPolygon view, float widthInPoints) { float widthInScreenPx = metrics.density * widthInPoints; // done for parity with iOS view.setStrokeWidth(widthInScreenPx); } @ReactProp(name = "fillColor", defaultInt = Color.RED, customType = "Color") - public void setFillColor(AirMapPolygon view, int color) { + public void setFillColor(MapPolygon view, int color) { view.setFillColor(color); } @ReactProp(name = "strokeColor", defaultInt = Color.RED, customType = "Color") - public void setStrokeColor(AirMapPolygon view, int color) { + public void setStrokeColor(MapPolygon view, int color) { view.setStrokeColor(color); } @ReactProp(name = "tappable", defaultBoolean = false) - public void setTappable(AirMapPolygon view, boolean tapabble) { + public void setTappable(MapPolygon view, boolean tapabble) { view.setTappable(tapabble); } @ReactProp(name = "geodesic", defaultBoolean = false) - public void setGeodesic(AirMapPolygon view, boolean geodesic) { + public void setGeodesic(MapPolygon view, boolean geodesic) { view.setGeodesic(geodesic); } @ReactProp(name = "zIndex", defaultFloat = 1.0f) - public void setZIndex(AirMapPolygon view, float zIndex) { + public void setZIndex(MapPolygon view, float zIndex) { view.setZIndex(zIndex); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolyline.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolyline.java similarity index 88% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolyline.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolyline.java index 75d2437628dd3..a68566b5cedf3 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolyline.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolyline.java @@ -4,7 +4,6 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.Cap; import com.google.android.gms.maps.model.Dash; import com.google.android.gms.maps.model.Dot; @@ -14,11 +13,12 @@ import com.google.android.gms.maps.model.Polyline; import com.google.android.gms.maps.model.PolylineOptions; import com.google.android.gms.maps.model.RoundCap; +import com.google.maps.android.collections.PolylineManager; import java.util.ArrayList; import java.util.List; -public class AirMapPolyline extends AirMapFeature { +public class MapPolyline extends MapFeature { private PolylineOptions polylineOptions; private Polyline polyline; @@ -33,7 +33,7 @@ public class AirMapPolyline extends AirMapFeature { private ReadableArray patternValues; private List pattern; - public AirMapPolyline(Context context) { + public MapPolyline(Context context) { super(context); } @@ -150,13 +150,15 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - polyline = map.addPolyline(getPolylineOptions()); + public void addToMap(Object collection) { + PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection; + polyline = polylineCollection.addPolyline(getPolylineOptions()); polyline.setClickable(this.tappable); } @Override - public void removeFromMap(GoogleMap map) { - polyline.remove(); + public void removeFromMap(Object collection) { + PolylineManager.Collection polylineCollection = (PolylineManager.Collection) collection; + polylineCollection.remove(polyline); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolylineManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolylineManager.java similarity index 74% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolylineManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolylineManager.java index 6aff10f17e212..c9ff3aa160519 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapPolylineManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapPolylineManager.java @@ -20,10 +20,10 @@ import java.util.Map; -public class AirMapPolylineManager extends ViewGroupManager { +public class MapPolylineManager extends ViewGroupManager { private final DisplayMetrics metrics; - public AirMapPolylineManager(ReactApplicationContext reactContext) { + public MapPolylineManager(ReactApplicationContext reactContext) { super(); metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -37,43 +37,43 @@ public String getName() { } @Override - public AirMapPolyline createViewInstance(ThemedReactContext context) { - return new AirMapPolyline(context); + public MapPolyline createViewInstance(ThemedReactContext context) { + return new MapPolyline(context); } @ReactProp(name = "coordinates") - public void setCoordinate(AirMapPolyline view, ReadableArray coordinates) { + public void setCoordinate(MapPolyline view, ReadableArray coordinates) { view.setCoordinates(coordinates); } @ReactProp(name = "strokeWidth", defaultFloat = 1f) - public void setStrokeWidth(AirMapPolyline view, float widthInPoints) { + public void setStrokeWidth(MapPolyline view, float widthInPoints) { float widthInScreenPx = metrics.density * widthInPoints; // done for parity with iOS view.setWidth(widthInScreenPx); } @ReactProp(name = "strokeColor", defaultInt = Color.RED, customType = "Color") - public void setStrokeColor(AirMapPolyline view, int color) { + public void setStrokeColor(MapPolyline view, int color) { view.setColor(color); } @ReactProp(name = "tappable", defaultBoolean = false) - public void setTappable(AirMapPolyline view, boolean tapabble) { + public void setTappable(MapPolyline view, boolean tapabble) { view.setTappable(tapabble); } @ReactProp(name = "geodesic", defaultBoolean = false) - public void setGeodesic(AirMapPolyline view, boolean geodesic) { + public void setGeodesic(MapPolyline view, boolean geodesic) { view.setGeodesic(geodesic); } @ReactProp(name = "zIndex", defaultFloat = 1.0f) - public void setZIndex(AirMapPolyline view, float zIndex) { + public void setZIndex(MapPolyline view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "lineCap") - public void setlineCap(AirMapPolyline view, String lineCap) { + public void setlineCap(MapPolyline view, String lineCap) { Cap cap = null; switch (lineCap) { case "butt": @@ -93,7 +93,7 @@ public void setlineCap(AirMapPolyline view, String lineCap) { } @ReactProp(name = "lineDashPattern") - public void setLineDashPattern(AirMapPolyline view, ReadableArray patternValues) { + public void setLineDashPattern(MapPolyline view, ReadableArray patternValues) { view.setLineDashPattern(patternValues); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileProvider.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileProvider.java similarity index 95% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileProvider.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileProvider.java index 97eaa818ee0e1..5f45be7e6315e 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileProvider.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileProvider.java @@ -41,7 +41,7 @@ import java.net.URL; import java.net.URLConnection; -public class AirMapTileProvider implements TileProvider { +public class MapTileProvider implements TileProvider { class AIRMapUrlTileProvider extends UrlTileProvider { private String urlTemplate; @@ -54,7 +54,7 @@ public AIRMapUrlTileProvider(int width, int height, String urlTemplate) { @Override public URL getTileUrl(int x, int y, int zoom) { - if (AirMapTileProvider.this.flipY) { + if (MapTileProvider.this.flipY) { y = (1 << zoom) - y - 1; } @@ -64,11 +64,11 @@ public URL getTileUrl(int x, int y, int zoom) { .replace("{z}", Integer.toString(zoom)); URL url; - if(AirMapTileProvider.this.maximumZ > 0 && zoom > AirMapTileProvider.this.maximumZ) { + if(MapTileProvider.this.maximumZ > 0 && zoom > MapTileProvider.this.maximumZ) { return null; } - if(AirMapTileProvider.this.minimumZ > 0 && zoom < AirMapTileProvider.this.minimumZ) { + if(MapTileProvider.this.minimumZ > 0 && zoom < MapTileProvider.this.minimumZ) { return null; } @@ -101,9 +101,9 @@ public void setUrlTemplate(String urlTemplate) { protected Context context; protected boolean customMode; - public AirMapTileProvider(int tileSizet, boolean doubleTileSize, String urlTemplate, - int maximumZ, int maximumNativeZ, int minimumZ, boolean flipY, String tileCachePath, - int tileCacheMaxAge, boolean offlineMode, Context context, boolean customMode) { + public MapTileProvider(int tileSizet, boolean doubleTileSize, String urlTemplate, + int maximumZ, int maximumNativeZ, int minimumZ, boolean flipY, String tileCachePath, + int tileCacheMaxAge, boolean offlineMode, Context context, boolean customMode) { this.tileProvider = new AIRMapUrlTileProvider(tileSizet, tileSizet, urlTemplate); this.tileSize = tileSizet; @@ -179,7 +179,7 @@ byte[] getTileImage(int x, int y, int zoom) { Constraints constraints = new Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .build(); - OneTimeWorkRequest tileRefreshWorkRequest = new OneTimeWorkRequest.Builder(AirMapTileWorker.class) + OneTimeWorkRequest tileRefreshWorkRequest = new OneTimeWorkRequest.Builder(MapTileWorker.class) .setConstraints(constraints) .addTag(fileName) .setInputData( @@ -328,7 +328,7 @@ void checkForRefresh(int x, int y, int zoom) { Constraints constraints = new Constraints.Builder() .setRequiredNetworkType(NetworkType.CONNECTED) .build(); - OneTimeWorkRequest tileRefreshWorkRequest = new OneTimeWorkRequest.Builder(AirMapTileWorker.class) + OneTimeWorkRequest tileRefreshWorkRequest = new OneTimeWorkRequest.Builder(MapTileWorker.class) .setConstraints(constraints) .addTag(fileName) .setInputData( diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileWorker.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileWorker.java similarity index 97% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileWorker.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileWorker.java index b647d2ca0d983..1561f90b580c3 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapTileWorker.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapTileWorker.java @@ -18,10 +18,10 @@ import java.net.MalformedURLException; import java.net.URL; -public class AirMapTileWorker extends Worker { +public class MapTileWorker extends Worker { private static final int BUFFER_SIZE = 16 * 1024; - public AirMapTileWorker( + public MapTileWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTile.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTile.java similarity index 92% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTile.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTile.java index 5a52629a4ed55..be257f0eb0b87 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTile.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTile.java @@ -11,10 +11,10 @@ import java.net.MalformedURLException; import java.net.URL; -public class AirMapUrlTile extends AirMapFeature { +public class MapUrlTile extends MapFeature { protected TileOverlayOptions tileOverlayOptions; protected TileOverlay tileOverlay; - protected AirMapTileProvider tileProvider; + protected MapTileProvider tileProvider; protected String urlTemplate; protected float zIndex; @@ -31,7 +31,7 @@ public class AirMapUrlTile extends AirMapFeature { protected Context context; protected boolean customTileProviderNeeded = false; - public AirMapUrlTile(Context context) { + public MapUrlTile(Context context) { super(context); this.context = context; } @@ -183,7 +183,7 @@ protected TileOverlayOptions createTileOverlayOptions() { TileOverlayOptions options = new TileOverlayOptions(); options.zIndex(zIndex); options.transparency(1 - this.opacity); - this.tileProvider = new AirMapTileProvider((int)this.tileSize, this.doubleTileSize, this.urlTemplate, + this.tileProvider = new MapTileProvider((int)this.tileSize, this.doubleTileSize, this.urlTemplate, (int)this.maximumZ, (int)this.maximumNativeZ, (int)this.minimumZ, this.flipY, this.tileCachePath, (int)this.tileCacheMaxAge, this.offlineMode, this.context, this.customTileProviderNeeded); options.tileProvider(this.tileProvider); @@ -196,12 +196,12 @@ public Object getFeature() { } @Override - public void addToMap(GoogleMap map) { - this.tileOverlay = map.addTileOverlay(getTileOverlayOptions()); + public void addToMap(Object map) { + this.tileOverlay = ((GoogleMap) map).addTileOverlay(getTileOverlayOptions()); } @Override - public void removeFromMap(GoogleMap map) { + public void removeFromMap(Object map) { tileOverlay.remove(); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTileManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTileManager.java similarity index 62% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTileManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTileManager.java index 0178b8f551d6e..0ee972cf3418c 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapUrlTileManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapUrlTileManager.java @@ -9,9 +9,9 @@ import com.facebook.react.uimanager.ViewGroupManager; import com.facebook.react.uimanager.annotations.ReactProp; -public class AirMapUrlTileManager extends ViewGroupManager { +public class MapUrlTileManager extends ViewGroupManager { - public AirMapUrlTileManager(ReactApplicationContext reactContext) { + public MapUrlTileManager(ReactApplicationContext reactContext) { super(); DisplayMetrics metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -25,67 +25,67 @@ public String getName() { } @Override - public AirMapUrlTile createViewInstance(ThemedReactContext context) { - return new AirMapUrlTile(context); + public MapUrlTile createViewInstance(ThemedReactContext context) { + return new MapUrlTile(context); } @ReactProp(name = "urlTemplate") - public void setUrlTemplate(AirMapUrlTile view, String urlTemplate) { + public void setUrlTemplate(MapUrlTile view, String urlTemplate) { view.setUrlTemplate(urlTemplate); } @ReactProp(name = "zIndex", defaultFloat = -1.0f) - public void setZIndex(AirMapUrlTile view, float zIndex) { + public void setZIndex(MapUrlTile view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "minimumZ", defaultFloat = 0.0f) - public void setMinimumZ(AirMapUrlTile view, float minimumZ) { + public void setMinimumZ(MapUrlTile view, float minimumZ) { view.setMinimumZ(minimumZ); } @ReactProp(name = "maximumZ", defaultFloat = 100.0f) - public void setMaximumZ(AirMapUrlTile view, float maximumZ) { + public void setMaximumZ(MapUrlTile view, float maximumZ) { view.setMaximumZ(maximumZ); } @ReactProp(name = "maximumNativeZ", defaultFloat = 100.0f) - public void setMaximumNativeZ(AirMapUrlTile view, float maximumNativeZ) { + public void setMaximumNativeZ(MapUrlTile view, float maximumNativeZ) { view.setMaximumNativeZ(maximumNativeZ); } @ReactProp(name = "flipY", defaultBoolean = false) - public void setFlipY(AirMapUrlTile view, boolean flipY) { + public void setFlipY(MapUrlTile view, boolean flipY) { view.setFlipY(flipY); } @ReactProp(name = "tileSize", defaultFloat = 256.0f) - public void setTileSize(AirMapUrlTile view, float tileSize) { + public void setTileSize(MapUrlTile view, float tileSize) { view.setTileSize(tileSize); } @ReactProp(name = "doubleTileSize", defaultBoolean = false) - public void setDoubleTileSize(AirMapUrlTile view, boolean doubleTileSize) { + public void setDoubleTileSize(MapUrlTile view, boolean doubleTileSize) { view.setDoubleTileSize(doubleTileSize); } @ReactProp(name = "tileCachePath") - public void setTileCachePath(AirMapUrlTile view, String tileCachePath) { + public void setTileCachePath(MapUrlTile view, String tileCachePath) { view.setTileCachePath(tileCachePath); } @ReactProp(name = "tileCacheMaxAge", defaultFloat = 0.0f) - public void setTileCacheMaxAge(AirMapUrlTile view, float tileCacheMaxAge) { + public void setTileCacheMaxAge(MapUrlTile view, float tileCacheMaxAge) { view.setTileCacheMaxAge(tileCacheMaxAge); } @ReactProp(name = "offlineMode", defaultBoolean = false) - public void setOfflineMode(AirMapUrlTile view, boolean offlineMode) { + public void setOfflineMode(MapUrlTile view, boolean offlineMode) { view.setOfflineMode(offlineMode); } @ReactProp(name = "opacity", defaultFloat = 1.0f) - public void setOpacity(AirMapUrlTile view, float opacity) { + public void setOpacity(MapUrlTile view, float opacity) { view.setOpacity(opacity); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapView.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapView.java similarity index 87% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapView.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapView.java index c1e48fa57adaa..a8c03072292cc 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapView.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapView.java @@ -36,7 +36,6 @@ import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.GoogleMapOptions; -import com.google.android.gms.maps.MapView; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.Projection; import com.google.android.gms.maps.model.BitmapDescriptorFactory; @@ -53,6 +52,11 @@ import com.google.android.gms.maps.model.TileOverlay; import com.google.android.gms.maps.model.IndoorBuilding; import com.google.android.gms.maps.model.IndoorLevel; +import com.google.maps.android.collections.CircleManager; +import com.google.maps.android.collections.GroundOverlayManager; +import com.google.maps.android.collections.MarkerManager; +import com.google.maps.android.collections.PolygonManager; +import com.google.maps.android.collections.PolylineManager; import com.google.maps.android.data.kml.KmlContainer; import com.google.maps.android.data.kml.KmlLayer; import com.google.maps.android.data.kml.KmlPlacemark; @@ -71,9 +75,18 @@ import static androidx.core.content.PermissionChecker.checkSelfPermission; -public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter, +public class MapView extends com.google.android.gms.maps.MapView implements GoogleMap.InfoWindowAdapter, GoogleMap.OnMarkerDragListener, OnMapReadyCallback, GoogleMap.OnPoiClickListener, GoogleMap.OnIndoorStateChangeListener { public GoogleMap map; + private MarkerManager markerManager; + private MarkerManager.Collection markerCollection; + private PolylineManager polylineManager; + private PolylineManager.Collection polylineCollection; + private PolygonManager polygonManager; + private PolygonManager.Collection polygonCollection; + private CircleManager.Collection circleCollection; + private GroundOverlayManager groundOverlayManager; + private GroundOverlayManager.Collection groundOverlayCollection; private ProgressBar mapLoadingProgressBar; private RelativeLayout mapLoadingLayout; private ImageView cacheImageView; @@ -101,15 +114,15 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter, private static final String[] PERMISSIONS = new String[]{ "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"}; - private final List features = new ArrayList<>(); - private final Map markerMap = new HashMap<>(); - private final Map polylineMap = new HashMap<>(); - private final Map polygonMap = new HashMap<>(); - private final Map overlayMap = new HashMap<>(); - private final Map heatmapMap = new HashMap<>(); - private final Map gradientPolylineMap = new HashMap<>(); + private final List features = new ArrayList<>(); + private final Map markerMap = new HashMap<>(); + private final Map polylineMap = new HashMap<>(); + private final Map polygonMap = new HashMap<>(); + private final Map overlayMap = new HashMap<>(); + private final Map heatmapMap = new HashMap<>(); + private final Map gradientPolylineMap = new HashMap<>(); private final GestureDetectorCompat gestureDetector; - private final AirMapManager manager; + private final MapManager manager; private LifecycleEventListener lifecycleListener; private boolean paused = false; private boolean destroyed = false; @@ -150,9 +163,9 @@ private static Context getNonBuggyContext(ThemedReactContext reactContext, return superContext; } - public AirMapView(ThemedReactContext reactContext, ReactApplicationContext appContext, - AirMapManager manager, - GoogleMapOptions googleMapOptions) { + public MapView(ThemedReactContext reactContext, ReactApplicationContext appContext, + MapManager manager, + GoogleMapOptions googleMapOptions) { super(getNonBuggyContext(reactContext, appContext), googleMapOptions); this.manager = manager; @@ -163,7 +176,7 @@ public AirMapView(ThemedReactContext reactContext, ReactApplicationContext appCo super.onResume(); super.getMapAsync(this); - final AirMapView view = this; + final MapView view = this; fusedLocationSource = new FusedLocationSource(context); @@ -190,7 +203,7 @@ public boolean onDoubleTap(MotionEvent ev) { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { if (!paused) { - AirMapView.this.cacheView(); + MapView.this.cacheView(); } } }); @@ -215,8 +228,20 @@ public void onMapReady(@NonNull final GoogleMap map) { return; } this.map = map; - this.map.setInfoWindowAdapter(this); - this.map.setOnMarkerDragListener(this); + + markerManager = new MarkerManager(map); + markerCollection = markerManager.newCollection(); + polylineManager = new PolylineManager(map); + polylineCollection = polylineManager.newCollection(); + polygonManager = new PolygonManager(map); + polygonCollection = polygonManager.newCollection(); + CircleManager circleManager = new CircleManager(map); + circleCollection = circleManager.newCollection(); + groundOverlayManager = new GroundOverlayManager(map); + groundOverlayCollection = groundOverlayManager.newCollection(); + + markerCollection.setInfoWindowAdapter(this); + markerCollection.setOnMarkerDragListener(this); this.map.setOnPoiClickListener(this); this.map.setOnIndoorStateChangeListener(this); @@ -224,7 +249,7 @@ public void onMapReady(@NonNull final GoogleMap map) { manager.pushEvent(context, this, "onMapReady", new WritableNativeMap()); - final AirMapView view = this; + final MapView view = this; map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() { @Override @@ -247,13 +272,12 @@ public void onMyLocationChange(Location location){ } }); - map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { + markerCollection.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { @Override - public boolean onMarkerClick(Marker marker) { - WritableMap event; - AirMapMarker airMapMarker = getMarkerMap(marker); + public boolean onMarkerClick(@NonNull Marker marker) { + MapMarker airMapMarker = getMarkerMap(marker); - event = makeClickEventData(marker.getPosition()); + WritableMap event = makeClickEventData(marker.getPosition()); event.putString("action", "marker-press"); event.putString("id", airMapMarker.getIdentifier()); manager.pushEvent(context, view, "onMarkerPress", event); @@ -275,48 +299,46 @@ public boolean onMarkerClick(Marker marker) { } }); - map.setOnPolygonClickListener(new GoogleMap.OnPolygonClickListener() { + polygonCollection.setOnPolygonClickListener(new GoogleMap.OnPolygonClickListener() { @Override - public void onPolygonClick(Polygon polygon) { + public void onPolygonClick(@NonNull Polygon polygon) { WritableMap event = makeClickEventData(tapLocation); event.putString("action", "polygon-press"); manager.pushEvent(context, polygonMap.get(polygon), "onPress", event); } }); - map.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() { + polylineCollection.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() { @Override - public void onPolylineClick(Polyline polyline) { + public void onPolylineClick(@NonNull Polyline polyline) { WritableMap event = makeClickEventData(tapLocation); event.putString("action", "polyline-press"); manager.pushEvent(context, polylineMap.get(polyline), "onPress", event); } }); - map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { + markerCollection.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { @Override - public void onInfoWindowClick(Marker marker) { - WritableMap event; - - event = makeClickEventData(marker.getPosition()); + public void onInfoWindowClick(@NonNull Marker marker) { + WritableMap event = makeClickEventData(marker.getPosition()); event.putString("action", "callout-press"); manager.pushEvent(context, view, "onCalloutPress", event); event = makeClickEventData(marker.getPosition()); event.putString("action", "callout-press"); - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); manager.pushEvent(context, markerView, "onCalloutPress", event); event = makeClickEventData(marker.getPosition()); event.putString("action", "callout-press"); - AirMapCallout infoWindow = markerView.getCalloutView(); + MapCallout infoWindow = markerView.getCalloutView(); if (infoWindow != null) manager.pushEvent(context, infoWindow, "onPress", event); } }); map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override - public void onMapClick(LatLng point) { + public void onMapClick(@NonNull LatLng point) { WritableMap event = makeClickEventData(point); event.putString("action", "press"); manager.pushEvent(context, view, "onPress", event); @@ -325,16 +347,16 @@ public void onMapClick(LatLng point) { map.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { @Override - public void onMapLongClick(LatLng point) { + public void onMapLongClick(@NonNull LatLng point) { WritableMap event = makeClickEventData(point); event.putString("action", "long-press"); manager.pushEvent(context, view, "onLongPress", makeClickEventData(point)); } }); - map.setOnGroundOverlayClickListener(new GoogleMap.OnGroundOverlayClickListener() { + groundOverlayCollection.setOnGroundOverlayClickListener(new GoogleMap.OnGroundOverlayClickListener() { @Override - public void onGroundOverlayClick(GroundOverlay groundOverlay) { + public void onGroundOverlayClick(@NonNull GroundOverlay groundOverlay) { WritableMap event = makeClickEventData(groundOverlay.getPosition()); event.putString("action", "overlay-press"); manager.pushEvent(context, overlayMap.get(groundOverlay), "onPress", event); @@ -382,7 +404,7 @@ public void onCameraIdle() { @Override public void onMapLoaded() { isMapLoaded = true; manager.pushEvent(context, view, "onMapLoaded", new WritableNativeMap()); - AirMapView.this.cacheView(); + MapView.this.cacheView(); } }); @@ -401,9 +423,9 @@ public void onHostResume() { map.setMyLocationEnabled(showUserLocation); map.setLocationSource(fusedLocationSource); } - synchronized (AirMapView.this) { + synchronized (MapView.this) { if (!destroyed) { - AirMapView.this.onResume(); + MapView.this.onResume(); } paused = false; } @@ -415,9 +437,9 @@ public void onHostPause() { //noinspection MissingPermission map.setMyLocationEnabled(false); } - synchronized (AirMapView.this) { + synchronized (MapView.this) { if (!destroyed) { - AirMapView.this.onPause(); + MapView.this.onPause(); } paused = true; } @@ -425,7 +447,7 @@ public void onHostPause() { @Override public void onHostDestroy() { - AirMapView.this.doDestroy(); + MapView.this.doDestroy(); } }; @@ -654,9 +676,9 @@ public void setHandlePanDrag(boolean handlePanDrag) { public void addFeature(View child, int index) { // Our desired API is to pass up annotations/overlays as children to the mapview component. // This is where we intercept them and do the appropriate underlying mapview action. - if (child instanceof AirMapMarker) { - AirMapMarker annotation = (AirMapMarker) child; - annotation.addToMap(map); + if (child instanceof MapMarker) { + MapMarker annotation = (MapMarker) child; + annotation.addToMap(markerCollection); features.add(index, annotation); // Allow visibility event to be triggered later @@ -680,48 +702,48 @@ public void addFeature(View child, int index) { Marker marker = (Marker) annotation.getFeature(); markerMap.put(marker, annotation); - } else if (child instanceof AirMapPolyline) { - AirMapPolyline polylineView = (AirMapPolyline) child; - polylineView.addToMap(map); + } else if (child instanceof MapPolyline) { + MapPolyline polylineView = (MapPolyline) child; + polylineView.addToMap(polylineCollection); features.add(index, polylineView); Polyline polyline = (Polyline) polylineView.getFeature(); polylineMap.put(polyline, polylineView); - } else if (child instanceof AirMapGradientPolyline) { - AirMapGradientPolyline polylineView = (AirMapGradientPolyline) child; + } else if (child instanceof MapGradientPolyline) { + MapGradientPolyline polylineView = (MapGradientPolyline) child; polylineView.addToMap(map); features.add(index, polylineView); TileOverlay tileOverlay = (TileOverlay) polylineView.getFeature(); gradientPolylineMap.put(tileOverlay, polylineView); - } else if (child instanceof AirMapPolygon) { - AirMapPolygon polygonView = (AirMapPolygon) child; - polygonView.addToMap(map); + } else if (child instanceof MapPolygon) { + MapPolygon polygonView = (MapPolygon) child; + polygonView.addToMap(polygonCollection); features.add(index, polygonView); Polygon polygon = (Polygon) polygonView.getFeature(); polygonMap.put(polygon, polygonView); - } else if (child instanceof AirMapCircle) { - AirMapCircle circleView = (AirMapCircle) child; - circleView.addToMap(map); + } else if (child instanceof MapCircle) { + MapCircle circleView = (MapCircle) child; + circleView.addToMap(circleCollection); features.add(index, circleView); - } else if (child instanceof AirMapUrlTile) { - AirMapUrlTile urlTileView = (AirMapUrlTile) child; + } else if (child instanceof MapUrlTile) { + MapUrlTile urlTileView = (MapUrlTile) child; urlTileView.addToMap(map); features.add(index, urlTileView); - } else if (child instanceof AirMapWMSTile) { - AirMapWMSTile urlTileView = (AirMapWMSTile) child; + } else if (child instanceof MapWMSTile) { + MapWMSTile urlTileView = (MapWMSTile) child; urlTileView.addToMap(map); features.add(index, urlTileView); - } else if (child instanceof AirMapLocalTile) { - AirMapLocalTile localTileView = (AirMapLocalTile) child; + } else if (child instanceof MapLocalTile) { + MapLocalTile localTileView = (MapLocalTile) child; localTileView.addToMap(map); features.add(index, localTileView); - } else if (child instanceof AirMapOverlay) { - AirMapOverlay overlayView = (AirMapOverlay) child; - overlayView.addToMap(map); + } else if (child instanceof MapOverlay) { + MapOverlay overlayView = (MapOverlay) child; + overlayView.addToMap(groundOverlayCollection); features.add(index, overlayView); GroundOverlay overlay = (GroundOverlay) overlayView.getFeature(); overlayMap.put(overlay, overlayView); - } else if (child instanceof AirMapHeatmap) { - AirMapHeatmap heatmapView = (AirMapHeatmap) child; + } else if (child instanceof MapHeatmap) { + MapHeatmap heatmapView = (MapHeatmap) child; heatmapView.addToMap(map); features.add(index, heatmapView); TileOverlay heatmap = (TileOverlay)heatmapView.getFeature(); @@ -745,13 +767,24 @@ public View getFeatureAt(int index) { } public void removeFeatureAt(int index) { - AirMapFeature feature = features.remove(index); - if (feature instanceof AirMapMarker) { + MapFeature feature = features.remove(index); + if (feature instanceof MapMarker) { markerMap.remove(feature.getFeature()); - } else if (feature instanceof AirMapHeatmap) { + feature.removeFromMap(markerCollection); + } else if (feature instanceof MapHeatmap) { heatmapMap.remove(feature.getFeature()); + feature.removeFromMap(map); + } else if(feature instanceof MapCircle) { + feature.removeFromMap(circleCollection); + } else if(feature instanceof MapOverlay) { + feature.removeFromMap(groundOverlayCollection); + } else if(feature instanceof MapPolygon) { + feature.removeFromMap(polygonCollection); + } else if(feature instanceof MapPolyline) { + feature.removeFromMap(polylineCollection); + } else { + feature.removeFromMap(map); } - feature.removeFromMap(map); } public WritableMap makeClickEventData(LatLng point) { @@ -841,8 +874,8 @@ public void fitToElements(ReadableMap edgePadding, boolean animated) { boolean addedPosition = false; - for (AirMapFeature feature : features) { - if (feature instanceof AirMapMarker) { + for (MapFeature feature : features) { + if (feature instanceof MapMarker) { Marker marker = (Marker) feature.getFeature(); builder.include(marker.getPosition()); addedPosition = true; @@ -880,9 +913,9 @@ public void fitToSuppliedMarkers(ReadableArray markerIDsArray, ReadableMap edgeP List markerIDList = Arrays.asList(markerIDs); - for (AirMapFeature feature : features) { - if (feature instanceof AirMapMarker) { - String identifier = ((AirMapMarker) feature).getIdentifier(); + for (MapFeature feature : features) { + if (feature instanceof MapMarker) { + String identifier = ((MapMarker) feature).getIdentifier(); Marker marker = (Marker) feature.getFeature(); if (markerIDList.contains(identifier)) { builder.include(marker.getPosition()); @@ -1001,13 +1034,13 @@ public void setMapBoundaries(ReadableMap northEast, ReadableMap southWest) { @Override public View getInfoWindow(Marker marker) { - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); return markerView.getCallout(); } @Override public View getInfoContents(Marker marker) { - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); return markerView.getInfoContents(); } @@ -1042,7 +1075,7 @@ public void onMarkerDragStart(Marker marker) { WritableMap event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, this, "onMarkerDragStart", event); - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, markerView, "onDragStart", event); } @@ -1052,7 +1085,7 @@ public void onMarkerDrag(Marker marker) { WritableMap event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, this, "onMarkerDrag", event); - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, markerView, "onDrag", event); } @@ -1062,7 +1095,7 @@ public void onMarkerDragEnd(Marker marker) { WritableMap event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, this, "onMarkerDragEnd", event); - AirMapMarker markerView = getMarkerMap(marker); + MapMarker markerView = getMarkerMap(marker); event = makeClickEventData(marker.getPosition()); manager.pushEvent(context, markerView, "onDragEnd", event); } @@ -1186,7 +1219,7 @@ public void setKmlSrc(String kmlSrc) { return; } - KmlLayer kmlLayer = new KmlLayer(map, kmlStream, context); + KmlLayer kmlLayer = new KmlLayer(map, kmlStream, context, markerManager, polygonManager, polylineManager, groundOverlayManager, null); kmlLayer.addLayerToMap(); WritableMap pointers = new WritableNativeMap(); @@ -1235,7 +1268,7 @@ public void setKmlSrc(String kmlSrc) { options.title(title); options.snippet(snippet); - AirMapMarker marker = new AirMapMarker(context, options, this.manager.getMarkerManager()); + MapMarker marker = new MapMarker(context, options, this.manager.getMarkerManager()); if (placemark.getInlineStyle() != null && placemark.getInlineStyle().getIconUrl() != null) { @@ -1341,14 +1374,14 @@ public void setIndoorActiveLevelIndex(int activeLevelIndex) { } } - private AirMapMarker getMarkerMap(Marker marker) { - AirMapMarker airMarker = markerMap.get(marker); + private MapMarker getMarkerMap(Marker marker) { + MapMarker airMarker = markerMap.get(marker); if (airMarker != null) { return airMarker; } - for (Map.Entry entryMarker : markerMap.entrySet()) { + for (Map.Entry entryMarker : markerMap.entrySet()) { if (entryMarker.getKey().getPosition().equals(marker.getPosition()) && entryMarker.getKey().getTitle().equals(marker.getTitle())) { airMarker = entryMarker.getValue(); diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTile.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTile.java similarity index 91% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTile.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTile.java index 0235602eb21ca..e01e59e5ec512 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTile.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTile.java @@ -8,11 +8,11 @@ import java.net.MalformedURLException; import java.net.URL; -public class AirMapWMSTile extends AirMapUrlTile { +public class MapWMSTile extends MapUrlTile { private static final double[] mapBound = {-20037508.34789244, 20037508.34789244}; private static final double FULL = 20037508.34789244 * 2; - class AIRMapGSUrlTileProvider extends AirMapTileProvider { + class AIRMapGSUrlTileProvider extends MapTileProvider { class AIRMapWMSTileProvider extends UrlTileProvider { private String urlTemplate; @@ -26,11 +26,11 @@ public AIRMapWMSTileProvider(int width, int height, String urlTemplate) { @Override public URL getTileUrl(int x, int y, int zoom) { - if(AirMapWMSTile.this.maximumZ > 0 && zoom > maximumZ) { + if(MapWMSTile.this.maximumZ > 0 && zoom > maximumZ) { return null; } - if(AirMapWMSTile.this.minimumZ > 0 && zoom < minimumZ) { + if(MapWMSTile.this.minimumZ > 0 && zoom < minimumZ) { return null; } @@ -76,7 +76,7 @@ public AIRMapGSUrlTileProvider(int tileSizet, String urlTemplate, } } - public AirMapWMSTile(Context context) { + public MapWMSTile(Context context) { super(context); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTileManager.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTileManager.java similarity index 63% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTileManager.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTileManager.java index 18e18de55c062..603c09319b55a 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/AirMapWMSTileManager.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapWMSTileManager.java @@ -9,9 +9,9 @@ import com.facebook.react.uimanager.ViewGroupManager; import com.facebook.react.uimanager.annotations.ReactProp; -public class AirMapWMSTileManager extends ViewGroupManager { +public class MapWMSTileManager extends ViewGroupManager { - public AirMapWMSTileManager(ReactApplicationContext reactContext) { + public MapWMSTileManager(ReactApplicationContext reactContext) { super(); DisplayMetrics metrics = new DisplayMetrics(); ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE)) @@ -25,57 +25,57 @@ public String getName() { } @Override - public AirMapWMSTile createViewInstance(ThemedReactContext context) { - return new AirMapWMSTile(context); + public MapWMSTile createViewInstance(ThemedReactContext context) { + return new MapWMSTile(context); } @ReactProp(name = "urlTemplate") - public void setUrlTemplate(AirMapWMSTile view, String urlTemplate) { + public void setUrlTemplate(MapWMSTile view, String urlTemplate) { view.setUrlTemplate(urlTemplate); } @ReactProp(name = "zIndex", defaultFloat = -1.0f) - public void setZIndex(AirMapWMSTile view, float zIndex) { + public void setZIndex(MapWMSTile view, float zIndex) { view.setZIndex(zIndex); } @ReactProp(name = "minimumZ", defaultFloat = 0.0f) - public void setMinimumZ(AirMapWMSTile view, float minimumZ) { + public void setMinimumZ(MapWMSTile view, float minimumZ) { view.setMinimumZ(minimumZ); } @ReactProp(name = "maximumZ", defaultFloat = 100.0f) - public void setMaximumZ(AirMapWMSTile view, float maximumZ) { + public void setMaximumZ(MapWMSTile view, float maximumZ) { view.setMaximumZ(maximumZ); } @ReactProp(name = "maximumNativeZ", defaultFloat = 100.0f) - public void setMaximumNativeZ(AirMapWMSTile view, float maximumNativeZ) { + public void setMaximumNativeZ(MapWMSTile view, float maximumNativeZ) { view.setMaximumNativeZ(maximumNativeZ); } @ReactProp(name = "tileSize", defaultFloat = 256.0f) - public void setTileSize(AirMapWMSTile view, float tileSize) { + public void setTileSize(MapWMSTile view, float tileSize) { view.setTileSize(tileSize); } @ReactProp(name = "tileCachePath") - public void setTileCachePath(AirMapWMSTile view, String tileCachePath) { + public void setTileCachePath(MapWMSTile view, String tileCachePath) { view.setTileCachePath(tileCachePath); } @ReactProp(name = "tileCacheMaxAge", defaultFloat = 0.0f) - public void setTileCacheMaxAge(AirMapWMSTile view, float tileCacheMaxAge) { + public void setTileCacheMaxAge(MapWMSTile view, float tileCacheMaxAge) { view.setTileCacheMaxAge(tileCacheMaxAge); } @ReactProp(name = "offlineMode", defaultBoolean = false) - public void setOfflineMode(AirMapWMSTile view, boolean offlineMode) { + public void setOfflineMode(MapWMSTile view, boolean offlineMode) { view.setOfflineMode(offlineMode); } @ReactProp(name = "opacity", defaultFloat = 1.0f) - public void setOpacity(AirMapWMSTile view, float opacity) { + public void setOpacity(MapWMSTile view, float opacity) { view.setOpacity(opacity); } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapsPackage.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapsPackage.java index 8b6e32abe01a8..cbfee6622edbc 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapsPackage.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/MapsPackage.java @@ -1,65 +1,46 @@ package versioned.host.exp.exponent.modules.api.components.maps; -import android.app.Activity; - import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; -import java.util.Arrays; -import java.util.Collections; +import java.util.ArrayList; import java.util.List; public class MapsPackage implements ReactPackage { - public MapsPackage(Activity activity) { - } // backwards compatibility - - public MapsPackage() { - } @Override public List createNativeModules(ReactApplicationContext reactContext) { - return Arrays.asList(new AirMapModule(reactContext)); - } + List modules = new ArrayList<>(); + + modules.add(new MapModule(reactContext)); - // Deprecated RN 0.47 - public List> createJSModules() { - return Collections.emptyList(); + return modules; } @Override public List createViewManagers(ReactApplicationContext reactContext) { - AirMapCalloutManager calloutManager = new AirMapCalloutManager(); - AirMapMarkerManager annotationManager = new AirMapMarkerManager(); - AirMapPolylineManager polylineManager = new AirMapPolylineManager(reactContext); - AirMapGradientPolylineManager gradientPolylineManager = new AirMapGradientPolylineManager(reactContext); - AirMapPolygonManager polygonManager = new AirMapPolygonManager(reactContext); - AirMapCircleManager circleManager = new AirMapCircleManager(reactContext); - AirMapManager mapManager = new AirMapManager(reactContext); - AirMapLiteManager mapLiteManager = new AirMapLiteManager(reactContext); - AirMapUrlTileManager urlTileManager = new AirMapUrlTileManager(reactContext); - AirMapWMSTileManager gsUrlTileManager = new AirMapWMSTileManager(reactContext); - AirMapLocalTileManager localTileManager = new AirMapLocalTileManager(reactContext); - AirMapOverlayManager overlayManager = new AirMapOverlayManager(reactContext); - AirMapHeatmapManager heatmapManager = new AirMapHeatmapManager(); + MapManager mapManager = new MapManager(reactContext); + MapMarkerManager annotationManager = new MapMarkerManager(); mapManager.setMarkerManager(annotationManager); - return Arrays.asList( - calloutManager, - annotationManager, - polylineManager, - gradientPolylineManager, - polygonManager, - circleManager, - mapManager, - mapLiteManager, - urlTileManager, - gsUrlTileManager, - localTileManager, - overlayManager, - heatmapManager - ); + List viewManagers = new ArrayList<>(); + + viewManagers.add(mapManager); + viewManagers.add(annotationManager); + viewManagers.add(new MapCalloutManager()); + viewManagers.add(new MapPolylineManager(reactContext)); + viewManagers.add(new MapGradientPolylineManager(reactContext)); + viewManagers.add(new MapPolygonManager(reactContext)); + viewManagers.add(new MapCircleManager(reactContext)); + viewManagers.add(new MapLiteManager(reactContext)); + viewManagers.add(new MapUrlTileManager(reactContext)); + viewManagers.add(new MapWMSTileManager(reactContext)); + viewManagers.add(new MapLocalTileManager(reactContext)); + viewManagers.add(new MapOverlayManager(reactContext)); + viewManagers.add(new MapHeatmapManager()); + + return viewManagers; } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ViewChangesTracker.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ViewChangesTracker.java index 4b2b32cf640d2..c16a4a1a8c443 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ViewChangesTracker.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/maps/ViewChangesTracker.java @@ -9,7 +9,7 @@ public class ViewChangesTracker { private static ViewChangesTracker instance; private final Handler handler; - private final LinkedList markers = new LinkedList<>(); + private final LinkedList markers = new LinkedList<>(); private boolean hasScheduledFrame = false; private final Runnable updateRunnable; private final long fps = 40; @@ -39,7 +39,7 @@ static ViewChangesTracker getInstance() { return instance; } - public void addMarker(AirMapMarker marker) { + public void addMarker(MapMarker marker) { markers.add(marker); if (!hasScheduledFrame) { @@ -48,18 +48,18 @@ public void addMarker(AirMapMarker marker) { } } - public void removeMarker(AirMapMarker marker) { + public void removeMarker(MapMarker marker) { markers.remove(marker); } - public boolean containsMarker(AirMapMarker marker) { + public boolean containsMarker(MapMarker marker) { return markers.contains(marker); } - private final LinkedList markersToRemove = new LinkedList<>(); + private final LinkedList markersToRemove = new LinkedList<>(); public void update() { - for (AirMapMarker marker : markers) { + for (MapMarker marker : markers) { if (!marker.updateCustomForTracking()) { markersToRemove.add(marker); } diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index 53e97b5598080..5b30911563cef 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -144,7 +144,7 @@ "react-native": "0.72.0-rc.6", "react-native-dropdown-picker": "^5.3.0", "react-native-gesture-handler": "~2.10.1", - "react-native-maps": "1.3.2", + "react-native-maps": "1.7.1", "react-native-pager-view": "6.2.0", "react-native-paper": "^4.0.1", "react-native-reanimated": "~3.1.0", diff --git a/home/package.json b/home/package.json index 18bbdbe2e96fc..666513ee9abff 100644 --- a/home/package.json +++ b/home/package.json @@ -61,7 +61,7 @@ "react-native-gesture-handler": "~2.10.1", "react-native-infinite-scroll-view": "^0.4.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", - "react-native-maps": "1.3.2", + "react-native-maps": "1.7.1", "react-native-paper": "^4.0.1", "react-native-reanimated": "~3.1.0", "react-native-safe-area-context": "4.5.0", diff --git a/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMap.m b/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMap.m index 8a4215c195e11..555f03c83b0c4 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMap.m +++ b/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMap.m @@ -25,10 +25,10 @@ #import #ifdef HAVE_GOOGLE_MAPS_UTILS -#import -#import -#import -#import +#import "GMUKMLParser.h" +#import "GMUPlacemark.h" +#import "GMUPoint.h" +#import "GMUGeometryRenderer.h" #define REQUIRES_GOOGLE_MAPS_UTILS(feature) do {} while (0) #else #define GMUKMLParser void diff --git a/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMapHeatmap.h b/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMapHeatmap.h index 20faf23d13eb9..eacaefc5a9c07 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMapHeatmap.h +++ b/ios/Exponent/Versioned/Core/Api/Components/GoogleMaps/AIRGoogleMapHeatmap.h @@ -4,7 +4,7 @@ // Created by David Cako on 29 April 2018. // -#import +#import "GMUHeatmapTileLayer.h" @interface AIRGoogleMapHeatmap : UIView diff --git a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.h b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.h index 734de1a2125c2..84514f3c777ee 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.h +++ b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.h @@ -17,7 +17,6 @@ @class AIRMapMarker; -extern const CLLocationDegrees AIRMapDefaultSpan; extern const NSTimeInterval AIRMapRegionChangeObserveInterval; extern const CGFloat AIRMapZoomBoundBuffer; extern const NSInteger AIRMapMaxZoomLevel; diff --git a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.m b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.m index 0c9da1b30720a..fe1ae1366ee86 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.m +++ b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMap.m @@ -21,7 +21,6 @@ #import "AIRMapLocalTile.h" #import "AIRMapOverlay.h" -const CLLocationDegrees AIRMapDefaultSpan = 0.005; const NSTimeInterval AIRMapRegionChangeObserveInterval = 0.1; const CGFloat AIRMapZoomBoundBuffer = 0.01; const NSInteger AIRMapMaxZoomLevel = 20; diff --git a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapManager.m b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapManager.m index 8c2bae463ab9e..58217e27f44e1 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapManager.m +++ b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapManager.m @@ -928,14 +928,7 @@ - (void)mapView:(AIRMap *)mapView didUpdateUserLocation:(MKUserLocation *)locati } if (mapView.followUserLocation) { - MKCoordinateRegion region; - region.span.latitudeDelta = AIRMapDefaultSpan; - region.span.longitudeDelta = AIRMapDefaultSpan; - region.center = location.coordinate; - [mapView setRegion:region animated:YES]; - - // Move to user location only for the first time it loads up. - // mapView.followUserLocation = NO; + [mapView setCenterCoordinate:location.coordinate animated:YES]; } } diff --git a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapPolyline.m b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapPolyline.m index 028115fd8f8fa..4f4596da05e5f 100644 --- a/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapPolyline.m +++ b/ios/Exponent/Versioned/Core/Api/Components/Maps/AIRMapPolyline.m @@ -70,7 +70,7 @@ -(void)setGeodesic:(BOOL)geodesic - (void)setCoordinates:(NSArray *)coordinates { _coordinates = coordinates; - CLLocationCoordinate2D coords[coordinates.count]; + CLLocationCoordinate2D *coords = calloc(coordinates.count, sizeof(CLLocationCoordinate2D)); for(int i = 0; i < coordinates.count; i++) { coords[i] = coordinates[i].coordinate; @@ -80,7 +80,8 @@ - (void)setCoordinates:(NSArray *)coordinates { } else { self.polyline = [MKPolyline polylineWithCoordinates:coords count:coordinates.count]; } - + free(coords); + self.renderer = [self createRenderer]; [self update]; } diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index c7586ba7a603d..a9996cdab9f5e 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -87,7 +87,7 @@ "react-native-branch": "^5.4.0", "react-native-gesture-handler": "~2.10.1", "react-native-get-random-values": "~1.8.0", - "react-native-maps": "1.3.2", + "react-native-maps": "1.7.1", "react-native-pager-view": "6.2.0", "react-native-reanimated": "~3.1.0", "react-native-screens": "~3.20.0", diff --git a/tools/src/vendoring/legacy.ts b/tools/src/vendoring/legacy.ts index 35c3c263d3da0..3a33370193d04 100644 --- a/tools/src/vendoring/legacy.ts +++ b/tools/src/vendoring/legacy.ts @@ -557,9 +557,9 @@ const vendoredModulesConfig: { [key: string]: VendoredModuleConfig } = { recursive: true, sourceIosPath: 'ios/AirMaps', targetIosPath: 'Api/Components/Maps', - sourceAndroidPath: 'android/src/main/java/com/airbnb/android/react/maps', + sourceAndroidPath: 'android/src/main/java/com/rnmaps/maps', targetAndroidPath: 'modules/api/components/maps', - sourceAndroidPackage: 'com.airbnb.android.react.maps', + sourceAndroidPackage: 'com.rnmaps.maps', targetAndroidPackage: 'versioned.host.exp.exponent.modules.api.components.maps', }, ],