Skip to content

Commit

Permalink
Merge pull request flutter-mapbox-gl#1 from tobrun/master
Browse files Browse the repository at this point in the history
sync
  • Loading branch information
kleeb authored Jan 14, 2020
2 parents 307d136 + b9440e0 commit 9ad2ba2
Show file tree
Hide file tree
Showing 14 changed files with 352 additions and 23 deletions.
1 change: 1 addition & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ android {
dependencies {
implementation "com.mapbox.mapboxsdk:mapbox-android-sdk:8.5.0"
implementation "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0"
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-localization-v8:0.11.0'
}
compileOptions {
sourceCompatibility 1.8
Expand Down
4 changes: 4 additions & 0 deletions android/src/main/java/com/mapbox/mapboxgl/Convert.java
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,10 @@ static void interpretMapboxMapOptions(Object o, MapboxMapOptionsSink sink) {
final List logoViewMarginsData = toList(logoViewMargins);
sink.setLogoViewMargins(toInt(logoViewMarginsData.get(0)), toInt(logoViewMarginsData.get(1)));
}
final Object compassGravity = data.get("compassViewPosition");
if(compassGravity != null){
sink.setCompassGravity(toInt(compassGravity));
}
final Object compassViewMargins = data.get("compassViewMargins");
if(compassViewMargins != null){
final List compassViewMarginsData = toList(compassViewMargins);
Expand Down
42 changes: 36 additions & 6 deletions android/src/main/java/com/mapbox/mapboxgl/MapboxMapBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import android.content.Context;
import android.util.Log;
import android.view.Gravity;

import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
Expand Down Expand Up @@ -122,14 +123,43 @@ public void setLogoViewMargins(int x, int y) {
});
}

@Override
public void setCompassGravity(int gravity) {
switch(gravity){
case 0:
options.compassGravity(Gravity.TOP | Gravity.START);
break;
default:
case 1:
options.compassGravity(Gravity.TOP | Gravity.END);
break;
case 2:
options.compassGravity(Gravity.BOTTOM | Gravity.START);
break;
case 3:
options.compassGravity(Gravity.BOTTOM | Gravity.END);
break;
}
}

@Override
public void setCompassViewMargins(int x, int y) {
options.compassMargins(new int[] {
(int) 0, //left
(int) y, //top
(int) x, //right
(int) 0, //bottom
});
switch(options.getCompassGravity())
{
case Gravity.TOP | Gravity.START:
options.compassMargins(new int[] {(int) x, (int) y, 0, 0});
break;
default:
case Gravity.TOP | Gravity.END:
options.compassMargins(new int[] {0, (int) y, (int) x, 0});
break;
case Gravity.BOTTOM | Gravity.START:
options.compassMargins(new int[] {(int) x, 0, 0, (int) y});
break;
case Gravity.BOTTOM | Gravity.END:
options.compassMargins(new int[] {0, 0, (int) x, (int) y});
break;
}
}

@Override
Expand Down
139 changes: 134 additions & 5 deletions android/src/main/java/com/mapbox/mapboxgl/MapboxMapController.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import android.util.DisplayMetrics;
import androidx.annotation.NonNull;
import android.util.Log;
import android.view.Gravity;
import android.view.View;

import androidx.annotation.NonNull;
Expand All @@ -29,13 +30,15 @@
import com.mapbox.android.core.location.LocationEngineCallback;
import com.mapbox.android.core.location.LocationEngineProvider;
import com.mapbox.android.core.location.LocationEngineResult;
import com.mapbox.android.telemetry.TelemetryEnabler;
import com.mapbox.geojson.Feature;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.camera.CameraUpdate;

import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
import com.mapbox.mapboxsdk.geometry.VisibleRegion;
import com.mapbox.mapboxsdk.location.LocationComponent;
import com.mapbox.mapboxsdk.location.LocationComponentOptions;
import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions;
Expand All @@ -45,6 +48,7 @@
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.MapboxMapOptions;
import com.mapbox.mapboxsdk.maps.Projection;
import com.mapbox.mapboxsdk.offline.OfflineManager;
import com.mapbox.mapboxsdk.maps.Style;
import com.mapbox.mapboxsdk.plugins.annotation.Annotation;
Expand Down Expand Up @@ -74,6 +78,8 @@
import static com.mapbox.mapboxgl.MapboxMapsPlugin.STARTED;
import static com.mapbox.mapboxgl.MapboxMapsPlugin.STOPPED;

import com.mapbox.mapboxsdk.plugins.localization.LocalizationPlugin;

/**
* Controller of a single MapboxMaps MapView instance.
*/
Expand Down Expand Up @@ -117,6 +123,7 @@ final class MapboxMapController
private final String styleStringInitial;
private LocationComponent locationComponent = null;
private LocationEngine locationEngine = null;
private LocalizationPlugin localizationPlugin;

MapboxMapController(
int id,
Expand Down Expand Up @@ -321,6 +328,8 @@ public void onStyleLoaded(@NonNull Style style) {
// needs to be placed after SymbolManager#addClickListener,
// is fixed with 0.6.0 of annotations plugin
mapboxMap.addOnMapClickListener(MapboxMapController.this);

localizationPlugin = new LocalizationPlugin(mapView, mapboxMap, style);

methodChannel.invokeMethod("map#onStyleLoaded", null);
}
Expand Down Expand Up @@ -394,23 +403,85 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) {
setMyLocationTrackingMode(myLocationTrackingMode);
result.success(null);
break;
}
case "map#matchMapLanguageWithDeviceDefault": {
try {
localizationPlugin.matchMapLanguageWithDeviceDefault();
result.success(null);
} catch (RuntimeException exception) {
Log.d(TAG, exception.toString());
result.error("MAPBOX LOCALIZATION PLUGIN ERROR", exception.toString(), null);
}
break;
}
case "map#setMapLanguage": {
final String language = call.argument("language");
try {
localizationPlugin.setMapLanguage(language);
result.success(null);
} catch (RuntimeException exception) {
Log.d(TAG, exception.toString());
result.error("MAPBOX LOCALIZATION PLUGIN ERROR", exception.toString(), null);
}
break;
}
case "map#getVisibleRegion": {
Map<String, Object> reply = new HashMap<>();
VisibleRegion visibleRegion = mapboxMap.getProjection().getVisibleRegion();
reply.put("latitudeSW", visibleRegion.nearLeft.getLatitude());
reply.put("longitudeSW", visibleRegion.nearLeft.getLongitude());
reply.put("latitudeNE", visibleRegion.farRight.getLatitude());
reply.put("longitudeNE", visibleRegion.farRight.getLongitude());

result.success(reply);
break;
}
case "camera#move": {
final CameraUpdate cameraUpdate = Convert.toCameraUpdate(call.argument("cameraUpdate"), mapboxMap, density);
if (cameraUpdate != null) {
// camera transformation not handled yet
moveCamera(cameraUpdate);
mapboxMap.moveCamera(cameraUpdate, new OnCameraMoveFinishedListener(){
@Override
public void onFinish() {
super.onFinish();
result.success(true);
}

@Override
public void onCancel() {
super.onCancel();
result.success(false);
}
});

// moveCamera(cameraUpdate);
}else {
result.success(false);
}
result.success(null);
break;
}
case "camera#animate": {
final CameraUpdate cameraUpdate = Convert.toCameraUpdate(call.argument("cameraUpdate"), mapboxMap, density);
if (cameraUpdate != null) {
// camera transformation not handled yet
animateCamera(cameraUpdate);
mapboxMap.animateCamera(cameraUpdate, new OnCameraMoveFinishedListener(){
@Override
public void onFinish() {
super.onFinish();
result.success(true);
}

@Override
public void onCancel() {
super.onCancel();
result.success(false);
}
});

// animateCamera(cameraUpdate);
}else {
result.success(false);
}
result.success(null);
break;
}
case "map#queryRenderedFeatures": {
Expand Down Expand Up @@ -442,6 +513,17 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) {
reply.put("features", featuresJson);
result.success(reply);
break;
}
case "map#setTelemetryEnabled": {
final boolean enabled = call.argument("enabled");
Mapbox.getTelemetry().setUserTelemetryRequestState(enabled);
result.success(null);
break;
}
case "map#getTelemetryEnabled": {
final TelemetryEnabler.State telemetryState = TelemetryEnabler.retrieveTelemetryStateFromPreferences();
result.success(telemetryState == TelemetryEnabler.State.ENABLED);
break;
}
case "map#invalidateAmbientCache": {
OfflineManager fileSource = OfflineManager.getInstance(context);
Expand Down Expand Up @@ -827,9 +909,43 @@ public void setLogoViewMargins(int x, int y) {
mapboxMap.getUiSettings().setLogoMargins(x, 0, 0, y);
}

@Override
public void setCompassGravity(int gravity) {
switch(gravity) {
case 0:
mapboxMap.getUiSettings().setCompassGravity(Gravity.TOP | Gravity.START);
break;
default:
case 1:
mapboxMap.getUiSettings().setCompassGravity(Gravity.TOP | Gravity.END);
break;
case 2:
mapboxMap.getUiSettings().setCompassGravity(Gravity.BOTTOM | Gravity.START);
break;
case 3:
mapboxMap.getUiSettings().setCompassGravity(Gravity.BOTTOM | Gravity.END);
break;
}
}

@Override
public void setCompassViewMargins(int x, int y) {
mapboxMap.getUiSettings().setCompassMargins(0, y, x, 0);
switch(mapboxMap.getUiSettings().getCompassGravity())
{
case Gravity.TOP | Gravity.START:
mapboxMap.getUiSettings().setCompassMargins(x, y, 0, 0);
break;
default:
case Gravity.TOP | Gravity.END:
mapboxMap.getUiSettings().setCompassMargins(0, y, x, 0);
break;
case Gravity.BOTTOM | Gravity.START:
mapboxMap.getUiSettings().setCompassMargins(x, 0, 0, y);
break;
case Gravity.BOTTOM | Gravity.END:
mapboxMap.getUiSettings().setCompassMargins(0, 0, x, y);
break;
}
}

@Override
Expand Down Expand Up @@ -926,4 +1042,17 @@ private Bitmap getScaledImage(String imageId, float density) {
}
return bitmap;
}

/**
* Simple Listener to listen for the status of camera movements.
*/
public class OnCameraMoveFinishedListener implements MapboxMap.CancelableCallback{
@Override
public void onFinish() {
}

@Override
public void onCancel() {
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ interface MapboxMapOptionsSink {

void setLogoViewMargins(int x, int y);

void setCompassGravity(int gravity);

void setCompassViewMargins(int x, int y);

void setAttributionButtonMargins(int x, int y);
Expand Down
2 changes: 2 additions & 0 deletions example/ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
<true/>
<key>MGLMapboxAccessToken</key>
<string>YOUR_TOKEN_HERE</string>
<key>MGLMapboxMetricsEnabledSettingShownInApp</key>
<true/>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSLocationAlwaysUsageDescription</key>
Expand Down
4 changes: 2 additions & 2 deletions example/lib/animate_camera.dart
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class AnimateCameraState extends State<AnimateCamera> {
zoom: 17.0,
),
),
);
).then((result)=>print("mapController.animateCamera() returned $result"));
},
child: const Text('newCameraPosition'),
),
Expand All @@ -73,7 +73,7 @@ class AnimateCameraState extends State<AnimateCamera> {
CameraUpdate.newLatLng(
const LatLng(56.1725505, 10.1850512),
),
);
).then((result)=>print("mapController.animateCamera() returned $result"));
},
child: const Text('newLatLng'),
),
Expand Down
Loading

0 comments on commit 9ad2ba2

Please sign in to comment.