diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java')
-rwxr-xr-x | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java | 1512 |
1 files changed, 0 insertions, 1512 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java deleted file mode 100755 index 75ca5edfca..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ /dev/null @@ -1,1512 +0,0 @@ -package com.mapbox.mapboxsdk.maps; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.PointF; -import android.graphics.RectF; -import android.os.Handler; -import android.support.annotation.IntRange; -import android.support.annotation.Keep; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.text.TextUtils; - -import com.mapbox.geojson.Feature; -import com.mapbox.geojson.Geometry; -import com.mapbox.mapboxsdk.LibraryLoader; -import com.mapbox.mapboxsdk.MapStrictMode; -import com.mapbox.mapboxsdk.annotations.Icon; -import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.Polygon; -import com.mapbox.mapboxsdk.annotations.Polyline; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.exceptions.CalledFromWorkerThreadException; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.geometry.LatLngBounds; -import com.mapbox.mapboxsdk.geometry.ProjectedMeters; -import com.mapbox.mapboxsdk.log.Logger; -import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; -import com.mapbox.mapboxsdk.storage.FileSource; -import com.mapbox.mapboxsdk.style.expressions.Expression; -import com.mapbox.mapboxsdk.style.layers.CannotAddLayerException; -import com.mapbox.mapboxsdk.style.layers.Layer; -import com.mapbox.mapboxsdk.style.layers.TransitionOptions; -import com.mapbox.mapboxsdk.style.light.Light; -import com.mapbox.mapboxsdk.style.sources.CannotAddSourceException; -import com.mapbox.mapboxsdk.style.sources.Source; -import com.mapbox.mapboxsdk.utils.BitmapUtils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -// Class that wraps the native methods for convenience -final class NativeMapView implements NativeMap { - - private static final String TAG = "Mbgl-NativeMapView"; - - // Hold a reference to prevent it from being GC'd as long as it's used on the native side - private final FileSource fileSource; - - // Used to schedule work on the MapRenderer Thread - private final MapRenderer mapRenderer; - - // Used to validate if methods are called from the correct thread - @NonNull - private final Thread thread; - - // Used for view callbacks - @Nullable - private ViewCallback viewCallback; - - // Used for map change callbacks - @Nullable - private StateCallback stateCallback; - - // Device density - private final float pixelRatio; - - // Flag to indicate destroy was called - private boolean destroyed = false; - - // Cached to enable lazily set padding. - // Whenever an animation is schedule, this value is cleared and the source of truth becomes the core transform state. - private double[] edgeInsets; - - // Holds the pointer to JNI NativeMapView - @Keep - private long nativePtr = 0; - - // Listener invoked to return a bitmap of the map - private MapboxMap.SnapshotReadyCallback snapshotReadyCallback; - - static { - LibraryLoader.load(); - } - - // - // Constructors - // - - public NativeMapView(@NonNull final Context context, final boolean crossSourceCollisions, - final ViewCallback viewCallback, final StateCallback stateCallback, - final MapRenderer mapRenderer) { - this(context, context.getResources().getDisplayMetrics().density, crossSourceCollisions, viewCallback, - stateCallback, mapRenderer); - } - - public NativeMapView(final Context context, final float pixelRatio, final boolean crossSourceCollisions, - final ViewCallback viewCallback, final StateCallback stateCallback, - final MapRenderer mapRenderer) { - this.mapRenderer = mapRenderer; - this.viewCallback = viewCallback; - this.fileSource = FileSource.getInstance(context); - this.pixelRatio = pixelRatio; - this.thread = Thread.currentThread(); - this.stateCallback = stateCallback; - nativeInitialize(this, fileSource, mapRenderer, pixelRatio, crossSourceCollisions); - } - - // - // Methods - // - - private boolean checkState(String callingMethod) { - // validate if invocation has occurred on the main thread - if (thread != Thread.currentThread()) { - throw new CalledFromWorkerThreadException( - String.format( - "Map interactions should happen on the UI thread. Method invoked from wrong thread is %s.", - callingMethod) - ); - } - - // validate if map has already been destroyed - if (destroyed && !TextUtils.isEmpty(callingMethod)) { - String message = String.format( - "You're calling `%s` after the `MapView` was destroyed, were you invoking it after `onDestroy()`?", - callingMethod); - Logger.e(TAG, message); - - MapStrictMode.strictModeViolation(message); - } - return destroyed; - } - - @Override - public void destroy() { - destroyed = true; - viewCallback = null; - nativeDestroy(); - } - - @Override - public void resizeView(int width, int height) { - if (checkState("resizeView")) { - return; - } - width = (int) Math.ceil(width / pixelRatio); - height = (int) Math.ceil(height / pixelRatio); - - if (width < 0) { - throw new IllegalArgumentException("width cannot be negative."); - } - - if (height < 0) { - throw new IllegalArgumentException("height cannot be negative."); - } - - if (width > 65535) { - // we have seen edge cases where devices return incorrect values #6111 - Logger.e(TAG, String.format("Device returned an out of range width size, " - + "capping value at 65535 instead of %s", width) - ); - width = 65535; - } - - if (height > 65535) { - // we have seen edge cases where devices return incorrect values #6111 - Logger.e(TAG, String.format("Device returned an out of range height size, " - + "capping value at 65535 instead of %s", height) - ); - height = 65535; - } - - nativeResizeView(width, height); - } - - @Override - public void setStyleUri(String url) { - if (checkState("setStyleUri")) { - return; - } - nativeSetStyleUrl(url); - } - - @Override - @NonNull - public String getStyleUri() { - if (checkState("getStyleUri")) { - return ""; - } - return nativeGetStyleUrl(); - } - - @Override - public void setStyleJson(String newStyleJson) { - if (checkState("setStyleJson")) { - return; - } - nativeSetStyleJson(newStyleJson); - } - - @Override - @NonNull - public String getStyleJson() { - if (checkState("getStyleJson")) { - return ""; - } - return nativeGetStyleJson(); - } - - @Override - public void setLatLngBounds(LatLngBounds latLngBounds) { - if (checkState("setLatLngBounds")) { - return; - } - nativeSetLatLngBounds(latLngBounds); - } - - @Override - public void cancelTransitions() { - if (checkState("cancelTransitions")) { - return; - } - nativeCancelTransitions(); - } - - @Override - public void setGestureInProgress(boolean inProgress) { - if (checkState("setGestureInProgress")) { - return; - } - nativeSetGestureInProgress(inProgress); - } - - @Override - public void moveBy(double dx, double dy, long duration) { - if (checkState("moveBy")) { - return; - } - nativeMoveBy(dx / pixelRatio, dy / pixelRatio, duration); - } - - @Override - public void setLatLng(@NonNull LatLng latLng, long duration) { - if (checkState("setLatLng")) { - return; - } - nativeSetLatLng(latLng.getLatitude(), latLng.getLongitude(), - getAnimationPaddingAndClearCachedInsets(null), duration); - } - - @Override - public LatLng getLatLng() { - if (checkState("")) { - return new LatLng(); - } - return nativeGetLatLng(); - } - - @Override - public CameraPosition getCameraForLatLngBounds(LatLngBounds bounds, int[] padding, double bearing, double tilt) { - if (checkState("getCameraForLatLngBounds")) { - return null; - } - return nativeGetCameraForLatLngBounds( - bounds, - padding[1] / pixelRatio, - padding[0] / pixelRatio, - padding[3] / pixelRatio, - padding[2] / pixelRatio, - bearing, - tilt - ); - } - - @Override - public CameraPosition getCameraForGeometry(Geometry geometry, int[] padding, double bearing, double tilt) { - if (checkState("getCameraForGeometry")) { - return null; - } - return nativeGetCameraForGeometry( - geometry, - padding[1] / pixelRatio, - padding[0] / pixelRatio, - padding[3] / pixelRatio, - padding[2] / pixelRatio, - bearing, - tilt - ); - } - - @Override - public void resetPosition() { - if (checkState("resetPosition")) { - return; - } - nativeResetPosition(); - } - - @Override - public double getPitch() { - if (checkState("getPitch")) { - return 0; - } - return nativeGetPitch(); - } - - @Override - public void setPitch(double pitch, long duration) { - if (checkState("setPitch")) { - return; - } - nativeSetPitch(pitch, duration); - } - - @Override - public void setZoom(double zoom, @NonNull PointF focalPoint, long duration) { - if (checkState("setZoom")) { - return; - } - nativeSetZoom(zoom, focalPoint.x / pixelRatio, focalPoint.y / pixelRatio, duration); - } - - @Override - public double getZoom() { - if (checkState("getZoom")) { - return 0; - } - return nativeGetZoom(); - } - - @Override - public void resetZoom() { - if (checkState("resetZoom")) { - return; - } - nativeResetZoom(); - } - - @Override - public void setMinZoom(double zoom) { - if (checkState("setMinZoom")) { - return; - } - nativeSetMinZoom(zoom); - } - - @Override - public double getMinZoom() { - if (checkState("getMinZoom")) { - return 0; - } - return nativeGetMinZoom(); - } - - @Override - public void setMaxZoom(double zoom) { - if (checkState("setMaxZoom")) { - return; - } - nativeSetMaxZoom(zoom); - } - - @Override - public double getMaxZoom() { - if (checkState("getMaxZoom")) { - return 0; - } - return nativeGetMaxZoom(); - } - - @Override - public void rotateBy(double sx, double sy, double ex, double ey, - long duration) { - if (checkState("rotateBy")) { - return; - } - nativeRotateBy(sx / pixelRatio, sy / pixelRatio, ex, ey, duration); - } - - @Override - public void setContentPadding(double[] padding) { - if (checkState("setContentPadding")) { - return; - } - this.edgeInsets = padding; - } - - @Override - public double[] getContentPadding() { - if (checkState("getContentPadding")) { - return new double[] {0, 0, 0, 0}; - } - // if cached insets are not applied yet, return them, otherwise, get the padding from the camera - return edgeInsets != null ? edgeInsets : getCameraPosition().padding; - } - - @Override - public void setBearing(double degrees, long duration) { - if (checkState("setBearing")) { - return; - } - nativeSetBearing(degrees, duration); - } - - @Override - public void setBearing(double degrees, double fx, double fy, long duration) { - if (checkState("setBearing")) { - return; - } - nativeSetBearingXY(degrees, fx / pixelRatio, fy / pixelRatio, duration); - } - - @Override - public double getBearing() { - if (checkState("getBearing")) { - return 0; - } - return nativeGetBearing(); - } - - @Override - public void resetNorth() { - if (checkState("resetNorth")) { - return; - } - nativeResetNorth(); - } - - @Override - public long addMarker(Marker marker) { - if (checkState("addMarker")) { - return 0; - } - Marker[] markers = {marker}; - return nativeAddMarkers(markers)[0]; - } - - @Override - @NonNull - public long[] addMarkers(@NonNull List<Marker> markers) { - if (checkState("addMarkers")) { - return new long[] {}; - } - return nativeAddMarkers(markers.toArray(new Marker[markers.size()])); - } - - @Override - public long addPolyline(Polyline polyline) { - if (checkState("addPolyline")) { - return 0; - } - Polyline[] polylines = {polyline}; - return nativeAddPolylines(polylines)[0]; - } - - @Override - @NonNull - public long[] addPolylines(@NonNull List<Polyline> polylines) { - if (checkState("addPolylines")) { - return new long[] {}; - } - return nativeAddPolylines(polylines.toArray(new Polyline[polylines.size()])); - } - - @Override - public long addPolygon(Polygon polygon) { - if (checkState("addPolygon")) { - return 0; - } - Polygon[] polygons = {polygon}; - return nativeAddPolygons(polygons)[0]; - } - - @Override - @NonNull - public long[] addPolygons(@NonNull List<Polygon> polygons) { - if (checkState("addPolygons")) { - return new long[] {}; - } - return nativeAddPolygons(polygons.toArray(new Polygon[polygons.size()])); - } - - @Override - public void updateMarker(@NonNull Marker marker) { - if (checkState("updateMarker")) { - return; - } - LatLng position = marker.getPosition(); - Icon icon = marker.getIcon(); - nativeUpdateMarker(marker.getId(), position.getLatitude(), position.getLongitude(), icon.getId()); - } - - @Override - public void updatePolygon(@NonNull Polygon polygon) { - if (checkState("updatePolygon")) { - return; - } - nativeUpdatePolygon(polygon.getId(), polygon); - } - - @Override - public void updatePolyline(@NonNull Polyline polyline) { - if (checkState("updatePolyline")) { - return; - } - nativeUpdatePolyline(polyline.getId(), polyline); - } - - @Override - public void removeAnnotation(long id) { - if (checkState("removeAnnotation")) { - return; - } - long[] ids = {id}; - removeAnnotations(ids); - } - - @Override - public void removeAnnotations(long[] ids) { - if (checkState("removeAnnotations")) { - return; - } - nativeRemoveAnnotations(ids); - } - - @Override - @NonNull - public long[] queryPointAnnotations(RectF rect) { - if (checkState("queryPointAnnotations")) { - return new long[] {}; - } - return nativeQueryPointAnnotations(rect); - } - - @Override - @NonNull - public long[] queryShapeAnnotations(RectF rectF) { - if (checkState("queryShapeAnnotations")) { - return new long[] {}; - } - return nativeQueryShapeAnnotations(rectF); - } - - @Override - public void addAnnotationIcon(String symbol, int width, int height, float scale, byte[] pixels) { - if (checkState("addAnnotationIcon")) { - return; - } - nativeAddAnnotationIcon(symbol, width, height, scale, pixels); - } - - @Override - public void removeAnnotationIcon(String symbol) { - if (checkState("removeAnnotationIcon")) { - return; - } - nativeRemoveAnnotationIcon(symbol); - } - - @Override - public void setVisibleCoordinateBounds(LatLng[] coordinates, RectF padding, double direction, long duration) { - if (checkState("setVisibleCoordinateBounds")) { - return; - } - nativeSetVisibleCoordinateBounds(coordinates, padding, direction, duration); - } - - @Override - public void onLowMemory() { - if (checkState("onLowMemory")) { - return; - } - nativeOnLowMemory(); - } - - @Override - public void setDebug(boolean debug) { - if (checkState("setDebug")) { - return; - } - nativeSetDebug(debug); - } - - @Override - public void cycleDebugOptions() { - if (checkState("cycleDebugOptions")) { - return; - } - nativeCycleDebugOptions(); - } - - @Override - public boolean getDebug() { - if (checkState("getDebug")) { - return false; - } - return nativeGetDebug(); - } - - @Override - public boolean isFullyLoaded() { - if (checkState("isFullyLoaded")) { - return false; - } - return nativeIsFullyLoaded(); - } - - @Override - public void setReachability(boolean status) { - if (checkState("setReachability")) { - return; - } - nativeSetReachability(status); - } - - @Override - public double getMetersPerPixelAtLatitude(double lat) { - if (checkState("getMetersPerPixelAtLatitude")) { - return 0; - } - return nativeGetMetersPerPixelAtLatitude(lat, getZoom()); - } - - @Override - public ProjectedMeters projectedMetersForLatLng(@NonNull LatLng latLng) { - if (checkState("projectedMetersForLatLng")) { - return null; - } - return nativeProjectedMetersForLatLng(latLng.getLatitude(), latLng.getLongitude()); - } - - @Override - public LatLng latLngForProjectedMeters(@NonNull ProjectedMeters projectedMeters) { - if (checkState("latLngForProjectedMeters")) { - return new LatLng(); - } - return nativeLatLngForProjectedMeters(projectedMeters.getNorthing(), - projectedMeters.getEasting()); - } - - @Override - @NonNull - public PointF pixelForLatLng(@NonNull LatLng latLng) { - if (checkState("pixelForLatLng")) { - return new PointF(); - } - PointF pointF = nativePixelForLatLng(latLng.getLatitude(), latLng.getLongitude()); - pointF.set(pointF.x * pixelRatio, pointF.y * pixelRatio); - return pointF; - } - - @Override - public LatLng latLngForPixel(@NonNull PointF pixel) { - if (checkState("latLngForPixel")) { - return new LatLng(); - } - return nativeLatLngForPixel(pixel.x / pixelRatio, pixel.y / pixelRatio); - } - - @Override - public double getTopOffsetPixelsForAnnotationSymbol(String symbolName) { - if (checkState("getTopOffsetPixelsForAnnotationSymbol")) { - return 0; - } - return nativeGetTopOffsetPixelsForAnnotationSymbol(symbolName); - } - - @Override - public void jumpTo(@NonNull LatLng center, double zoom, double pitch, double angle, double[] padding) { - if (checkState("jumpTo")) { - return; - } - nativeJumpTo(angle, center.getLatitude(), center.getLongitude(), pitch, zoom, - getAnimationPaddingAndClearCachedInsets(padding)); - } - - @Override - public void easeTo(@NonNull LatLng center, double zoom, double angle, double pitch, double[] padding, long duration, - boolean easingInterpolator) { - if (checkState("easeTo")) { - return; - } - nativeEaseTo(angle, center.getLatitude(), center.getLongitude(), duration, pitch, zoom, - getAnimationPaddingAndClearCachedInsets(padding), easingInterpolator); - } - - @Override - public void flyTo(@NonNull LatLng center, double zoom, double angle, double pitch, double[] padding, long duration) { - if (checkState("flyTo")) { - return; - } - nativeFlyTo(angle, center.getLatitude(), center.getLongitude(), duration, pitch, zoom, - getAnimationPaddingAndClearCachedInsets(padding)); - } - - @Override - @NonNull - public CameraPosition getCameraPosition() { - if (checkState("getCameraValues")) { - return new CameraPosition.Builder().build(); - } - if (edgeInsets != null) { - return new CameraPosition.Builder(nativeGetCameraPosition()).padding(edgeInsets).build(); - } else { - return nativeGetCameraPosition(); - } - } - - @Override - public void setPrefetchTiles(boolean enable) { - if (checkState("setPrefetchTiles")) { - return; - } - nativeSetPrefetchTiles(enable); - } - - @Override - public boolean getPrefetchTiles() { - if (checkState("getPrefetchTiles")) { - return false; - } - return nativeGetPrefetchTiles(); - } - - @Override - public void setPrefetchZoomDelta(@IntRange(from = 0) int delta) { - if (checkState("nativeSetPrefetchZoomDelta")) { - return; - } - nativeSetPrefetchZoomDelta(delta); - } - - @Override - @IntRange(from = 0) - public int getPrefetchZoomDelta() { - if (checkState("nativeGetPrefetchZoomDelta")) { - return 0; - } - return nativeGetPrefetchZoomDelta(); - } - - // Runtime style Api - - @Override - public void setTransitionOptions(@NonNull TransitionOptions transitionOptions) { - nativeSetTransitionOptions(transitionOptions); - } - - @NonNull - @Override - public TransitionOptions getTransitionOptions() { - return nativeGetTransitionOptions(); - } - - @Override - @NonNull - public List<Layer> getLayers() { - if (checkState("getLayers")) { - return new ArrayList<>(); - } - return Arrays.asList(nativeGetLayers()); - } - - @Override - public Layer getLayer(String layerId) { - if (checkState("getLayer")) { - return null; - } - return nativeGetLayer(layerId); - } - - @Override - public void addLayer(@NonNull Layer layer) { - if (checkState("addLayer")) { - return; - } - nativeAddLayer(layer.getNativePtr(), null); - } - - @Override - public void addLayerBelow(@NonNull Layer layer, @NonNull String below) { - if (checkState("addLayerBelow")) { - return; - } - nativeAddLayer(layer.getNativePtr(), below); - } - - @Override - public void addLayerAbove(@NonNull Layer layer, @NonNull String above) { - if (checkState("addLayerAbove")) { - return; - } - nativeAddLayerAbove(layer.getNativePtr(), above); - } - - @Override - public void addLayerAt(@NonNull Layer layer, @IntRange(from = 0) int index) { - if (checkState("addLayerAt")) { - return; - } - nativeAddLayerAt(layer.getNativePtr(), index); - } - - @Override - public boolean removeLayer(@NonNull String layerId) { - if (checkState("removeLayer")) { - return false; - } - - Layer layer = getLayer(layerId); - if (layer != null) { - return removeLayer(layer); - } - return false; - } - - - @Override - public boolean removeLayer(@NonNull Layer layer) { - if (checkState("removeLayer")) { - return false; - } - return nativeRemoveLayer(layer.getNativePtr()); - } - - @Override - public boolean removeLayerAt(@IntRange(from = 0) int index) { - if (checkState("removeLayerAt")) { - return false; - } - return nativeRemoveLayerAt(index); - } - - @Override - @NonNull - public List<Source> getSources() { - if (checkState("getSources")) { - return new ArrayList<>(); - } - return Arrays.asList(nativeGetSources()); - } - - @Override - public Source getSource(@NonNull String sourceId) { - if (checkState("getSource")) { - return null; - } - return nativeGetSource(sourceId); - } - - @Override - public void addSource(@NonNull Source source) { - if (checkState("addSource")) { - return; - } - nativeAddSource(source, source.getNativePtr()); - } - - @Override - public boolean removeSource(@NonNull String sourceId) { - if (checkState("removeSource")) { - return false; - } - Source source = getSource(sourceId); - if (source != null) { - return removeSource(source); - } - return false; - } - - @Override - public boolean removeSource(@NonNull Source source) { - if (checkState("removeSource")) { - return false; - } - return nativeRemoveSource(source, source.getNativePtr()); - } - - @Override - public void addImages(@NonNull Image[] images) { - if (checkState("addImages")) { - return; - } - nativeAddImages(images); - } - - @Override - public void removeImage(String name) { - if (checkState("removeImage")) { - return; - } - nativeRemoveImage(name); - } - - @Override - public Bitmap getImage(String name) { - if (checkState("getImage")) { - return null; - } - return nativeGetImage(name); - } - - // Feature querying - - @Override - @NonNull - public List<Feature> queryRenderedFeatures(@NonNull PointF coordinates, - @Nullable String[] layerIds, - @Nullable Expression filter) { - if (checkState("queryRenderedFeatures")) { - return new ArrayList<>(); - } - Feature[] features = nativeQueryRenderedFeaturesForPoint(coordinates.x / pixelRatio, - coordinates.y / pixelRatio, layerIds, filter != null ? filter.toArray() : null); - return features != null ? Arrays.asList(features) : new ArrayList<Feature>(); - } - - @Override - @NonNull - public List<Feature> queryRenderedFeatures(@NonNull RectF coordinates, - @Nullable String[] layerIds, - @Nullable Expression filter) { - if (checkState("queryRenderedFeatures")) { - return new ArrayList<>(); - } - Feature[] features = nativeQueryRenderedFeaturesForBox( - coordinates.left / pixelRatio, - coordinates.top / pixelRatio, - coordinates.right / pixelRatio, - coordinates.bottom / pixelRatio, - layerIds, - filter != null ? filter.toArray() : null); - return features != null ? Arrays.asList(features) : new ArrayList<Feature>(); - } - - @Override - public void setApiBaseUrl(String baseUrl) { - if (checkState("setApiBaseUrl")) { - return; - } - fileSource.setApiBaseUrl(baseUrl); - } - - @Override - public Light getLight() { - if (checkState("getLight")) { - return null; - } - return nativeGetLight(); - } - - @Override - public float getPixelRatio() { - return pixelRatio; - } - - @NonNull - @Override - public RectF getDensityDependantRectangle(final RectF rectangle) { - return new RectF( - rectangle.left / pixelRatio, - rectangle.top / pixelRatio, - rectangle.right / pixelRatio, - rectangle.bottom / pixelRatio - ); - } - - // - // Callbacks - // - - @Keep - private void onCameraWillChange(boolean animated) { - if (stateCallback != null) { - stateCallback.onCameraWillChange(animated); - } - } - - @Keep - private void onCameraIsChanging() { - if (stateCallback != null) { - stateCallback.onCameraIsChanging(); - } - } - - @Keep - private void onCameraDidChange(boolean animated) { - if (stateCallback != null) { - stateCallback.onCameraDidChange(animated); - } - } - - @Keep - private void onWillStartLoadingMap() { - if (stateCallback != null) { - stateCallback.onWillStartLoadingMap(); - } - } - - @Keep - private void onDidFinishLoadingMap() { - if (stateCallback != null) { - stateCallback.onDidFinishLoadingMap(); - } - } - - @Keep - private void onDidFailLoadingMap(String error) { - if (stateCallback != null) { - stateCallback.onDidFailLoadingMap(error); - } - } - - @Keep - private void onWillStartRenderingFrame() { - if (stateCallback != null) { - stateCallback.onWillStartRenderingFrame(); - } - } - - @Keep - private void onDidFinishRenderingFrame(boolean fully) { - if (stateCallback != null) { - stateCallback.onDidFinishRenderingFrame(fully); - } - } - - @Keep - private void onWillStartRenderingMap() { - if (stateCallback != null) { - stateCallback.onWillStartRenderingMap(); - } - } - - @Keep - private void onDidFinishRenderingMap(boolean fully) { - if (stateCallback != null) { - stateCallback.onDidFinishRenderingMap(fully); - } - } - - @Keep - private void onDidBecomeIdle() { - if (stateCallback != null) { - stateCallback.onDidBecomeIdle(); - } - } - - @Keep - private void onDidFinishLoadingStyle() { - if (stateCallback != null) { - stateCallback.onDidFinishLoadingStyle(); - } - } - - @Keep - private void onSourceChanged(String sourceId) { - if (stateCallback != null) { - stateCallback.onSourceChanged(sourceId); - } - } - - @Keep - private void onStyleImageMissing(String imageId) { - if (stateCallback != null) { - stateCallback.onStyleImageMissing(imageId); - } - } - - @Keep - private boolean onCanRemoveUnusedStyleImage(String imageId) { - if (stateCallback != null) { - return stateCallback.onCanRemoveUnusedStyleImage(imageId); - } - - return true; - } - - @Keep - protected void onSnapshotReady(@Nullable Bitmap mapContent) { - if (checkState("OnSnapshotReady")) { - return; - } - - try { - if (snapshotReadyCallback != null && mapContent != null) { - if (viewCallback == null) { - snapshotReadyCallback.onSnapshotReady(mapContent); - } else { - Bitmap viewContent = viewCallback.getViewContent(); - if (viewContent != null) { - snapshotReadyCallback.onSnapshotReady(BitmapUtils.mergeBitmap(mapContent, viewContent)); - } - } - } - } catch (Throwable err) { - Logger.e(TAG, "Exception in onSnapshotReady", err); - throw err; - } - } - - // - // JNI methods - // - - @Keep - private native void nativeInitialize(NativeMapView nativeMap, - FileSource fileSource, - MapRenderer mapRenderer, - float pixelRatio, - boolean crossSourceCollisions); - - @Keep - private native void nativeDestroy(); - - @Keep - private native void nativeResizeView(int width, int height); - - @Keep - private native void nativeSetStyleUrl(String url); - - @NonNull - @Keep - private native String nativeGetStyleUrl(); - - @Keep - private native void nativeSetStyleJson(String newStyleJson); - - @NonNull - @Keep - private native String nativeGetStyleJson(); - - @Keep - private native void nativeSetLatLngBounds(LatLngBounds latLngBounds); - - @Keep - private native void nativeCancelTransitions(); - - @Keep - private native void nativeSetGestureInProgress(boolean inProgress); - - @Keep - private native void nativeMoveBy(double dx, double dy, long duration); - - @Keep - private native void nativeSetLatLng(double latitude, double longitude, double[] padding, long duration); - - @NonNull - @Keep - private native LatLng nativeGetLatLng(); - - @NonNull - @Keep - private native CameraPosition nativeGetCameraForLatLngBounds( - LatLngBounds latLngBounds, double top, double left, double bottom, double right, double bearing, double tilt); - - @NonNull - @Keep - private native CameraPosition nativeGetCameraForGeometry( - Geometry geometry, double top, double left, double bottom, double right, double bearing, double tilt); - - @Keep - private native void nativeResetPosition(); - - @Keep - private native double nativeGetPitch(); - - @Keep - private native void nativeSetPitch(double pitch, long duration); - - @Keep - private native void nativeSetZoom(double zoom, double cx, double cy, long duration); - - @Keep - private native double nativeGetZoom(); - - @Keep - private native void nativeResetZoom(); - - @Keep - private native void nativeSetMinZoom(double zoom); - - @Keep - private native double nativeGetMinZoom(); - - @Keep - private native void nativeSetMaxZoom(double zoom); - - @Keep - private native double nativeGetMaxZoom(); - - @Keep - private native void nativeRotateBy(double sx, double sy, double ex, double ey, long duration); - - @Keep - private native void nativeSetBearing(double degrees, long duration); - - @Keep - private native void nativeSetBearingXY(double degrees, double fx, double fy, long duration); - - @Keep - private native double nativeGetBearing(); - - @Keep - private native void nativeResetNorth(); - - @Keep - private native void nativeUpdateMarker(long markerId, double lat, double lon, String iconId); - - @NonNull - @Keep - private native long[] nativeAddMarkers(Marker[] markers); - - @NonNull - @Keep - private native long[] nativeAddPolylines(Polyline[] polylines); - - @NonNull - @Keep - private native long[] nativeAddPolygons(Polygon[] polygons); - - @Keep - private native void nativeRemoveAnnotations(long[] id); - - @NonNull - @Keep - private native long[] nativeQueryPointAnnotations(RectF rect); - - @NonNull - @Keep - private native long[] nativeQueryShapeAnnotations(RectF rect); - - @Keep - private native void nativeAddAnnotationIcon(String symbol, int width, int height, float scale, byte[] pixels); - - @Keep - private native void nativeRemoveAnnotationIcon(String symbol); - - @Keep - private native void nativeSetVisibleCoordinateBounds(LatLng[] coordinates, RectF padding, - double direction, long duration); - - @Keep - private native void nativeOnLowMemory(); - - @Keep - private native void nativeSetDebug(boolean debug); - - @Keep - private native void nativeCycleDebugOptions(); - - @Keep - private native boolean nativeGetDebug(); - - @Keep - private native boolean nativeIsFullyLoaded(); - - @Keep - private native void nativeSetReachability(boolean status); - - @Keep - private native double nativeGetMetersPerPixelAtLatitude(double lat, double zoom); - - @NonNull - @Keep - private native ProjectedMeters nativeProjectedMetersForLatLng(double latitude, double longitude); - - @NonNull - @Keep - private native LatLng nativeLatLngForProjectedMeters(double northing, double easting); - - @NonNull - @Keep - private native PointF nativePixelForLatLng(double lat, double lon); - - @NonNull - @Keep - private native LatLng nativeLatLngForPixel(float x, float y); - - @Keep - private native double nativeGetTopOffsetPixelsForAnnotationSymbol(String symbolName); - - @Keep - private native void nativeJumpTo(double angle, double latitude, double longitude, double pitch, double zoom, - double[] padding); - - @Keep - private native void nativeEaseTo(double angle, double latitude, double longitude, - long duration, double pitch, double zoom, double[] padding, - boolean easingInterpolator); - - @Keep - private native void nativeFlyTo(double angle, double latitude, double longitude, - long duration, double pitch, double zoom, double[] padding); - - @NonNull - @Keep - private native CameraPosition nativeGetCameraPosition(); - - @Keep - private native void nativeSetTransitionOptions(TransitionOptions transitionOptions); - - @NonNull - @Keep - private native TransitionOptions nativeGetTransitionOptions(); - - @Keep - private native long nativeGetTransitionDuration(); - - @Keep - private native void nativeSetTransitionDuration(long duration); - - @Keep - private native long nativeGetTransitionDelay(); - - @Keep - private native void nativeSetTransitionDelay(long delay); - - @NonNull - @Keep - private native Layer[] nativeGetLayers(); - - @NonNull - @Keep - private native Layer nativeGetLayer(String layerId); - - @Keep - private native void nativeAddLayer(long layerPtr, String before) throws CannotAddLayerException; - - @Keep - private native void nativeAddLayerAbove(long layerPtr, String above) throws CannotAddLayerException; - - @Keep - private native void nativeAddLayerAt(long layerPtr, int index) throws CannotAddLayerException; - - @Keep - private native boolean nativeRemoveLayer(long layerId); - - @Keep - private native boolean nativeRemoveLayerAt(int index); - - @NonNull - @Keep - private native Source[] nativeGetSources(); - - @NonNull - @Keep - private native Source nativeGetSource(String sourceId); - - @Keep - private native void nativeAddSource(Source source, long sourcePtr) throws CannotAddSourceException; - - @Keep - private native boolean nativeRemoveSource(Source source, long sourcePtr); - - @Keep - private native void nativeAddImage(String name, Bitmap bitmap, float pixelRatio, boolean sdf); - - @Keep - private native void nativeAddImages(Image[] images); - - @Keep - private native void nativeRemoveImage(String name); - - @NonNull - @Keep - private native Bitmap nativeGetImage(String name); - - @Keep - private native void nativeUpdatePolygon(long polygonId, Polygon polygon); - - @Keep - private native void nativeUpdatePolyline(long polylineId, Polyline polyline); - - @Keep - private native void nativeTakeSnapshot(); - - @NonNull - @Keep - private native Feature[] nativeQueryRenderedFeaturesForPoint(float x, float y, - String[] layerIds, - Object[] filter); - - @NonNull - @Keep - private native Feature[] nativeQueryRenderedFeaturesForBox(float left, float top, - float right, float bottom, - String[] layerIds, - Object[] filter); - - @NonNull - @Keep - private native Light nativeGetLight(); - - @Keep - private native void nativeSetPrefetchTiles(boolean enable); - - @Keep - private native boolean nativeGetPrefetchTiles(); - - @Keep - private native void nativeSetPrefetchZoomDelta(int delta); - - @Keep - private native int nativeGetPrefetchZoomDelta(); - - @Override - public long getNativePtr() { - return nativePtr; - } - - // - // Snapshot - // - - @Override - public void addSnapshotCallback(@NonNull MapboxMap.SnapshotReadyCallback callback) { - if (checkState("addSnapshotCallback")) { - return; - } - snapshotReadyCallback = callback; - nativeTakeSnapshot(); - } - - @Override - public void setOnFpsChangedListener(@Nullable final MapboxMap.OnFpsChangedListener listener) { - final Handler handler = new Handler(); - mapRenderer.queueEvent(new Runnable() { - - @Override - public void run() { - if (listener != null) { - mapRenderer.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { - @Override - public void onFpsChanged(final double fps) { - handler.post(new Runnable() { - - @Override - public void run() { - listener.onFpsChanged(fps); - } - - }); - } - }); - } else { - mapRenderer.setOnFpsChangedListener(null); - } - } - }); - } - - @Override - public boolean isDestroyed() { - return destroyed; - } - - private double[] getAnimationPaddingAndClearCachedInsets(double[] providedPadding) { - if (providedPadding == null) { - providedPadding = this.edgeInsets; - } - this.edgeInsets = null; - return providedPadding == null ? null : - new double[] { - providedPadding[1] / pixelRatio, - providedPadding[0] / pixelRatio, - providedPadding[3] / pixelRatio, - providedPadding[2] / pixelRatio - }; - } - - public interface ViewCallback { - @Nullable - Bitmap getViewContent(); - } - - interface StyleCallback { - void onWillStartLoadingMap(); - - void onDidFinishLoadingStyle(); - } - - interface StateCallback extends StyleCallback { - void onCameraWillChange(boolean animated); - - void onCameraIsChanging(); - - void onCameraDidChange(boolean animated); - - void onDidFinishLoadingMap(); - - void onDidFailLoadingMap(String error); - - void onWillStartRenderingFrame(); - - void onDidFinishRenderingFrame(boolean fully); - - void onWillStartRenderingMap(); - - void onDidFinishRenderingMap(boolean fully); - - void onDidBecomeIdle(); - - void onSourceChanged(String sourceId); - - void onStyleImageMissing(String imageId); - - boolean onCanRemoveUnusedStyleImage(String imageId); - } -} |