Files
react-native-mapbox-gl/android/src/main/java/com/mapbox/reactnativemapboxgl/ReactNativeMapboxGLModule.java
T

210 lines
8.2 KiB
Java
Raw Normal View History

2015-12-12 12:41:50 -08:00
package com.mapbox.reactnativemapboxgl;
import android.content.Context;
import android.util.Log;
2016-06-30 20:25:01 +03:00
import java.util.ArrayList;
2015-12-17 11:47:22 -08:00
import java.util.HashMap;
import java.util.Map;
2015-12-12 12:41:50 -08:00
import com.facebook.common.logging.FLog;
2015-12-12 12:41:50 -08:00
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
2015-12-12 12:41:50 -08:00
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableArray;
import com.facebook.react.bridge.WritableNativeArray;
import com.mapbox.mapboxsdk.MapboxAccountManager;
2015-12-17 11:47:22 -08:00
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.telemetry.MapboxEventManager;
2015-12-12 12:41:50 -08:00
import javax.annotation.Nullable;
public class ReactNativeMapboxGLModule extends ReactContextBaseJavaModule {
private static final String TAG = ReactNativeMapboxGLModule.class.getSimpleName();
private Context context;
private ReactNativeMapboxGLPackage aPackage;
private static boolean initialized = false;
2015-12-12 12:41:50 -08:00
public ReactNativeMapboxGLModule(ReactApplicationContext reactContext, ReactNativeMapboxGLPackage thePackage) {
2015-12-12 12:41:50 -08:00
super(reactContext);
this.context = reactContext;
this.aPackage = thePackage;
2015-12-12 12:41:50 -08:00
Log.d(TAG, "Context " + context);
Log.d(TAG, "reactContext " + reactContext);
}
@Override
public String getName() {
2015-12-14 09:30:47 -08:00
return "MapboxGLManager";
2015-12-12 12:41:50 -08:00
}
2016-06-30 20:25:01 +03:00
static private ArrayList<Integer> serializeTracking(int locationTracking, int bearingTracking) {
ArrayList<Integer> result = new ArrayList<Integer>();
result.add(locationTracking);
result.add(bearingTracking);
return result;
}
2016-06-30 20:25:01 +03:00
public static final int[] locationTrackingModes = new int[] {
MyLocationTracking.TRACKING_NONE,
MyLocationTracking.TRACKING_FOLLOW,
MyLocationTracking.TRACKING_FOLLOW,
MyLocationTracking.TRACKING_FOLLOW
};
public static final int[] bearingTrackingModes = new int[] {
MyBearingTracking.NONE,
MyBearingTracking.NONE,
MyBearingTracking.GPS,
MyBearingTracking.COMPASS
};
2015-12-17 11:47:22 -08:00
@Override
public @Nullable Map<String, Object> getConstants() {
HashMap<String, Object> constants = new HashMap<String, Object>();
HashMap<String, Object> userTrackingMode = new HashMap<String, Object>();
HashMap<String, Object> mapStyles = new HashMap<String, Object>();
HashMap<String, Object> userLocationVerticalAlignment = new HashMap<String, Object>();
2015-12-17 11:47:22 -08:00
2016-06-30 20:25:01 +03:00
// User tracking constants
userTrackingMode.put("none", 0);
userTrackingMode.put("follow", 1);
userTrackingMode.put("followWithCourse", 2);
userTrackingMode.put("followWithHeading", 3);
2015-12-17 11:47:22 -08:00
// Style constants
mapStyles.put("light", Style.LIGHT);
mapStyles.put("dark", Style.DARK);
mapStyles.put("streets", Style.MAPBOX_STREETS);
mapStyles.put("emerald", Style.EMERALD);
mapStyles.put("satellite", Style.SATELLITE);
mapStyles.put("hybrid", Style.SATELLITE_STREETS);
// These need to be here for compatibility, even if they're not supported on Android
userLocationVerticalAlignment.put("center", 0);
userLocationVerticalAlignment.put("top", 1);
userLocationVerticalAlignment.put("bottom", 2);
// Other constants
constants.put("unknownResourceCount", Long.MAX_VALUE);
constants.put("metricsEnabled", MapboxEventManager.getMapboxEventManager().isTelemetryEnabled());
2015-12-17 11:47:22 -08:00
constants.put("userTrackingMode", userTrackingMode);
constants.put("mapStyles", mapStyles);
constants.put("userLocationVerticalAlignment", userLocationVerticalAlignment);
2015-12-17 11:47:22 -08:00
return constants;
}
@ReactMethod
public void setAccessToken(String accessToken) {
if (accessToken == null || accessToken.length() == 0 || accessToken.equals("your-mapbox.com-access-token")) {
throw new JSApplicationIllegalArgumentException("Invalid access token. Register to mapbox.com and request an access token, then pass it to setAccessToken()");
}
if (initialized) {
String oldToken = MapboxAccountManager.getInstance().getAccessToken();
if (!oldToken.equals(accessToken)) {
throw new JSApplicationIllegalArgumentException("Mapbox access token cannot be initialized twice with different values");
}
}
initialized = true;
MapboxAccountManager.start(context, accessToken);
}
@ReactMethod
public void setMetricsEnabled(boolean value) {
MapboxEventManager.getMapboxEventManager().setTelemetryEnabled(value);
}
@ReactMethod
public void spliceAnnotations(int mapRef, boolean removeAll, ReadableArray itemsToRemove, ReadableArray itemsToAdd) {
// TODO
}
/*
2015-12-12 12:41:50 -08:00
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setDirectionAnimated(int mapRef, int direction) {
2015-12-12 12:41:50 -08:00
aPackage.getManager().setDirection(aPackage.getManager().getMapView(), direction);
}
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setCenterCoordinateAnimated(int mapRef, double latitude, double longitude) {
2015-12-12 12:41:50 -08:00
WritableMap location = Arguments.createMap();
location.putDouble("latitude", latitude);
location.putDouble("longitude", longitude);
aPackage.getManager().setCenterCoordinate(aPackage.getManager().getMapView(), location);
}
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setCenterCoordinateZoomLevelAnimated(int mapRef, double latitude, double longitude, double zoom) {
2015-12-12 12:41:50 -08:00
WritableMap location = Arguments.createMap();
location.putDouble("latitude", latitude);
location.putDouble("longitude", longitude);
location.putDouble("zoom", zoom);
aPackage.getManager().setCenterCoordinateZoomLevel(aPackage.getManager().getMapView(), location);
2015-12-12 12:41:50 -08:00
}
@ReactMethod
2015-12-24 12:21:24 -06:00
public void addAnnotations(int mapRef, ReadableArray value) {
aPackage.getManager().setAnnotations(aPackage.getManager().getMapView(), value, false);
2015-12-12 12:41:50 -08:00
}
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setUserTrackingMode(int mapRef, int mode) {
2015-12-12 12:41:50 -08:00
aPackage.getManager().setMyLocationTrackingMode(aPackage.getManager().getMapView(), mode);
}
@ReactMethod
2015-12-24 12:22:48 -06:00
public void removeAllAnnotations(int mapRef) {
2015-12-12 12:41:50 -08:00
aPackage.getManager().removeAllAnnotations(aPackage.getManager().getMapView(), true);
}
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setTilt(int mapRef, double pitch) {
2015-12-12 12:41:50 -08:00
aPackage.getManager().setTilt(aPackage.getManager().getMapView(), pitch);
}
2015-12-13 17:37:32 -08:00
@ReactMethod
2015-12-24 12:21:24 -06:00
public void setVisibleCoordinateBoundsAnimated(int mapRef, double latSW, double lngSW,double latNE, double lngNE, float paddingTop, float paddingRight, float paddingBottom, float paddingLeft) {
2015-12-13 17:37:32 -08:00
WritableMap info = Arguments.createMap();
info.putDouble("latSW", latSW);
info.putDouble("lngSW", lngSW);
info.putDouble("latNE", latNE);
info.putDouble("lngNE", lngNE);
info.putDouble("paddingTop", paddingTop);
info.putDouble("paddingRight", paddingRight);
info.putDouble("paddingBottom", paddingBottom);
info.putDouble("paddingLeft", paddingLeft);
aPackage.getManager().setVisibleCoordinateBounds(aPackage.getManager().getMapView(), info);
}
@ReactMethod
public void getDirection(int mapRef, Callback successCallback) {
WritableMap direction = aPackage.getManager().getDirection(aPackage.getManager().getMapView());
successCallback.invoke(direction);
}
@ReactMethod
public void getCenterCoordinateZoomLevel(int mapRef, Callback successCallback) {
WritableMap location =aPackage.getManager().getCenterCoordinateZoomLevel(aPackage.getManager().getMapView());
successCallback.invoke(location);
}
2016-03-07 12:14:16 +01:00
@ReactMethod
public void getBounds(int mapRef, Callback successCallback) {
WritableMap bounds = aPackage.getManager().getBounds(aPackage.getManager().getMapView());
successCallback.invoke(bounds);
}
*/
2015-12-12 12:41:50 -08:00
}