summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java72
1 files changed, 42 insertions, 30 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
index b732d5a066..397ac1d0c9 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java
@@ -18,6 +18,7 @@ import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerView;
+import com.mapbox.mapboxsdk.annotations.MarkerViewManager;
import com.mapbox.mapboxsdk.annotations.MarkerViewOptions;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.geometry.LatLng;
@@ -61,23 +62,25 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
AnimatedMarkerActivity.this.mapboxMap = mapboxMap;
setupMap();
-
- for (int i = 0; i < 10; i++) {
- addRandomCar();
- }
-
- addPassenger();
- addMainCar();
- animateMoveToPassenger(carMarker);
+ mapView.post(new Runnable() {
+ @Override
+ public void run() {
+ for (int i = 0; i < 10; i++) {
+ addRandomCar();
+ }
+ addPassenger();
+ addMainCar();
+ }
+ });
}
});
}
private void setupMap() {
CameraPosition cameraPosition = new CameraPosition.Builder()
- .target(dupontCircle)
- .zoom(15)
- .build();
+ .target(dupontCircle)
+ .zoom(15)
+ .build();
mapboxMap.setCameraPosition(cameraPosition);
}
@@ -86,10 +89,10 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
if (passengerMarker == null) {
Icon icon = IconFactory.getInstance(AnimatedMarkerActivity.this)
- .fromResource(R.drawable.ic_directions_run_black_24dp);
+ .fromResource(R.drawable.ic_directions_run_black_24dp);
passengerMarker = mapboxMap.addMarker(new MarkerViewOptions()
- .position(randomLatLng)
- .icon(icon));
+ .position(randomLatLng)
+ .icon(icon));
} else {
passengerMarker.setPosition(randomLatLng);
}
@@ -99,13 +102,18 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
LatLng randomLatLng = getLatLngInBounds();
if (carMarker == null) {
- carMarker = createCarMarker(randomLatLng, R.drawable.ic_taxi_top);
+ carMarker = createCarMarker(randomLatLng, R.drawable.ic_taxi_top, new MarkerViewManager.OnMarkerViewAddedListener() {
+ @Override
+ public void onViewAdded(@NonNull MarkerView markerView) {
+ // Make sure the car marker is selected so that it's always brought to the front (#5285)
+ mapboxMap.selectMarker(carMarker);
+ animateMoveToPassenger(carMarker);
+ }
+ });
+
} else {
carMarker.setPosition(randomLatLng);
}
-
- // Make sure the car marker is selected so that it's always brought to the front (#5285)
- mapboxMap.selectMarker(carMarker);
}
private void animateMoveToPassenger(final MarkerView car) {
@@ -120,8 +128,12 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
}
protected void addRandomCar() {
- MarkerView car = createCarMarker(getLatLngInBounds(), R.drawable.ic_car_top);
- randomlyMoveMarker(car);
+ createCarMarker(getLatLngInBounds(), R.drawable.ic_car_top, new MarkerViewManager.OnMarkerViewAddedListener() {
+ @Override
+ public void onViewAdded(@NonNull MarkerView markerView) {
+ randomlyMoveMarker(markerView);
+ }
+ });
}
private void randomlyMoveMarker(final MarkerView marker) {
@@ -140,7 +152,7 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
marker.setRotation((float) getBearing(marker.getPosition(), to));
final ValueAnimator markerAnimator = ObjectAnimator.ofObject(
- marker, "position", new LatLngEvaluator(), marker.getPosition(), to);
+ marker, "position", new LatLngEvaluator(), marker.getPosition(), to);
markerAnimator.setDuration((long) (10 * marker.getPosition().distanceTo(to)));
markerAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
@@ -150,14 +162,14 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
return markerAnimator;
}
- private MarkerView createCarMarker(LatLng start, @DrawableRes int carResource) {
+ private MarkerView createCarMarker(LatLng start, @DrawableRes int carResource, MarkerViewManager.OnMarkerViewAddedListener listener) {
Icon icon = IconFactory.getInstance(AnimatedMarkerActivity.this)
- .fromResource(carResource);
+ .fromResource(carResource);
//View Markers
return mapboxMap.addMarker(new MarkerViewOptions()
- .position(start)
- .icon(icon));
+ .position(start)
+ .icon(icon), listener);
//GL Markers
// return mapboxMap.addMarker(new MarkerOptions()
@@ -170,9 +182,9 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
LatLngBounds bounds = mapboxMap.getProjection().getVisibleRegion().latLngBounds;
Random generator = new Random();
double randomLat = bounds.getLatSouth() + generator.nextDouble()
- * (bounds.getLatNorth() - bounds.getLatSouth());
+ * (bounds.getLatNorth() - bounds.getLatSouth());
double randomLon = bounds.getLonWest() + generator.nextDouble()
- * (bounds.getLonEast() - bounds.getLonWest());
+ * (bounds.getLonEast() - bounds.getLonWest());
return new LatLng(randomLat, randomLon);
}
@@ -239,9 +251,9 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
@Override
public LatLng evaluate(float fraction, LatLng startValue, LatLng endValue) {
latLng.setLatitude(startValue.getLatitude()
- + ((endValue.getLatitude() - startValue.getLatitude()) * fraction));
+ + ((endValue.getLatitude() - startValue.getLatitude()) * fraction));
latLng.setLongitude(startValue.getLongitude()
- + ((endValue.getLongitude() - startValue.getLongitude()) * fraction));
+ + ((endValue.getLongitude() - startValue.getLongitude()) * fraction));
return latLng;
}
}
@@ -256,7 +268,7 @@ public class AnimatedMarkerActivity extends AppCompatActivity {
double lat2 = degrees2radians * to.getLatitude();
double a = Math.sin(lon2 - lon1) * Math.cos(lat2);
double b = Math.cos(lat1) * Math.sin(lat2)
- - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);
+ - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);
return radians2degrees * Math.atan2(a, b);
}