summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkevin <kevin.li@mapbox.com>2019-06-21 16:04:24 +0800
committerkevin <kevin.li@mapbox.com>2019-06-26 15:16:49 +0800
commit45ec7709f36ab7ffed4260f9b3e2f0b8bab42c93 (patch)
treef9e7f7b81f17b359973f8cca5d6e81f1b70f20d5
parent3b0e5a59a288b165e7fac26c22ff51ee524e1568 (diff)
downloadqtlocation-mapboxgl-45ec7709f36ab7ffed4260f9b3e2f0b8bab42c93.tar.gz
Add shift for location of camera.
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java6
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt61
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_layer_fragment.xml12
3 files changed, 74 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java
index 6337287770..c48dfc5e0a 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinator.java
@@ -9,6 +9,7 @@ import android.support.annotation.VisibleForTesting;
import android.util.SparseArray;
import android.view.animation.LinearInterpolator;
+import com.mapbox.geojson.Point;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.log.Logger;
@@ -90,7 +91,10 @@ final class LocationAnimatorCoordinator {
targetCameraBearing = checkGpsNorth(isGpsNorth, targetCameraBearing);
updateLayerAnimators(previousLayerLatLng, targetLatLng, previousLayerBearing, targetLayerBearing);
- updateCameraAnimators(previousCameraLatLng, previousCameraBearing, targetLatLng, targetCameraBearing);
+
+ Point p = Point.fromLngLat(targetLatLng.getLongitude(), targetLatLng.getLatitude());
+ updateCameraAnimators(previousCameraLatLng, previousCameraBearing, new LatLng(p.latitude(),p.longitude()),
+ targetCameraBearing);
boolean snap = immediateAnimation(projection, previousCameraLatLng, targetLatLng)
|| immediateAnimation(projection, previousLayerLatLng, targetLatLng);
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt
index 6a01d14249..6544a01a07 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/location/LocationFragmentActivity.kt
@@ -13,18 +13,21 @@ import com.mapbox.android.core.location.LocationEngineCallback
import com.mapbox.android.core.location.LocationEngineResult
import com.mapbox.android.core.permissions.PermissionsListener
import com.mapbox.android.core.permissions.PermissionsManager
-import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
-import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.geojson.Point
+import com.mapbox.geojson.shifter.CoordinateShifter
+import com.mapbox.geojson.shifter.CoordinateShifterManager
import com.mapbox.mapboxsdk.location.LocationComponentActivationOptions
+import com.mapbox.mapboxsdk.location.modes.CameraMode.TRACKING
import com.mapbox.mapboxsdk.maps.MapView
import com.mapbox.mapboxsdk.maps.MapboxMap
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.mapboxsdk.testapp.R
import kotlinx.android.synthetic.main.activity_location_layer_fragment.*
+import java.util.ArrayList
class LocationFragmentActivity : AppCompatActivity() {
private lateinit var permissionsManager: PermissionsManager
-
+ private var shift = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_location_layer_fragment)
@@ -41,6 +44,18 @@ class LocationFragmentActivity : AppCompatActivity() {
this.onBackPressed()
}
}
+
+ shifter.setOnClickListener{
+ if(!shift) {
+ Toast.makeText(this, "Shifter is on.",Toast.LENGTH_LONG).show()
+ CoordinateShifterManager.setCoordinateShifter(coordinateShifter())
+ }else{
+ Toast.makeText(this, "Shifter is off.",Toast.LENGTH_LONG).show()
+ CoordinateShifterManager.setCoordinateShifter(null)
+ }
+ shift = !shift
+ }
+
supportActionBar?.setDisplayHomeAsUpEnabled(true)
if (PermissionsManager.areLocationPermissionsGranted(this)) {
@@ -74,6 +89,41 @@ class LocationFragmentActivity : AppCompatActivity() {
}
}
+ private fun coordinateShifter(): CoordinateShifter {
+ return object : CoordinateShifter {
+ override fun shiftLonLat(lon: Double, lat: Double): List<Double> {
+ return shift(lon, lat)
+ }
+
+ override fun shiftLonLatAlt(lon: Double, lat: Double, altitude: Double): List<Double> {
+ val shiftedLongLat = shift(lon, lat)
+ shiftedLongLat.add(altitude)
+ return shiftedLongLat
+ }
+
+ override fun unshiftPoint(shiftedPoint: Point): List<Double> {
+ val shiftedCoordinates = ArrayList<Double>(2)
+ shiftedCoordinates.add(shiftedPoint.longitude())
+ shiftedCoordinates.add(shiftedPoint.latitude())
+ return shiftedCoordinates
+ }
+
+ override fun unshiftPoint(shiftedCoordinates: List<Double>): List<Double> {
+ // Left empty on purpose
+ return shiftedCoordinates
+ }
+
+ private fun shift(lon: Double, lat: Double): MutableList<Double> {
+ val shiftedCoordinates = ArrayList<Double>(3)
+ val shiftedLon = lon + 0.5
+ val shiftedLat = lat + 0.5
+ shiftedCoordinates.add(shiftedLon)
+ shiftedCoordinates.add(shiftedLat)
+ return shiftedCoordinates
+ }
+ }
+ }
+
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults)
@@ -100,6 +150,7 @@ class LocationFragmentActivity : AppCompatActivity() {
mapView.onCreate(savedInstanceState)
mapView.getMapAsync {
mapboxMap = it
+ mapboxMap.setMinZoomPreference(12.0)
it.setStyle(Style.MAPBOX_STREETS) { style ->
val component = mapboxMap.locationComponent
@@ -110,12 +161,13 @@ class LocationFragmentActivity : AppCompatActivity() {
component.isLocationComponentEnabled = true
component.locationEngine?.getLastLocation(this)
+ component.cameraMode = TRACKING
}
}
}
override fun onSuccess(result: LocationEngineResult?) {
- mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(result?.lastLocation), 12.0))
+// mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(result?.lastLocation), 12.0))
}
override fun onFailure(exception: Exception) {
@@ -155,6 +207,7 @@ class LocationFragmentActivity : AppCompatActivity() {
override fun onDestroyView() {
super.onDestroyView()
mapView.onDestroy()
+ CoordinateShifterManager.setCoordinateShifter(null)
}
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_layer_fragment.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_layer_fragment.xml
index 3c1436a1a8..efd1e6ebe8 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_layer_fragment.xml
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_layer_fragment.xml
@@ -10,6 +10,18 @@
android:layout_height="match_parent"/>
<android.support.design.widget.FloatingActionButton
+ android:id="@+id/shifter"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="@dimen/fab_margin"
+ android:tint="@android:color/white"
+ app:backgroundTint="@color/accent"
+ app:layout_constraintBottom_toTopOf="@+id/fab"
+ app:layout_constraintRight_toRightOf="parent"
+ app:srcCompat="@drawable/ic_add" />
+
+ <android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"