一旦用户打开该功能并终止它,我必须在谷歌地图中显示实时/实时用户移动位置。
我已经使用下面的方法为标记设置动画。
private void animateMarker(final Marker marker, final LatLng toPosition,
final boolean hideMarker) {
final Handler handler = new Handler();
final long start = SystemClock.uptimeMillis();
Projection proj = mMap.getProjection();
Point startPoint = proj.toScreenLocation(marker.getPosition());
final LatLng startLatLng = proj.fromScreenLocation(startPoint);
final long duration = 1000;
final Interpolator interpolator = new LinearInterpolator();
handler.post(new Runnable() {
@Override
public void run() {
long elapsed = SystemClock.uptimeMillis() - start;
float t = interpolator.getInterpolation((float) elapsed
/ duration);
double lng = t * toPosition.longitude + (1 - t)
* startLatLng.longitude;
double lat = t * toPosition.latitude + (1 - t)
* startLatLng.latitude;
marker.setPosition(new LatLng(lat, lng));
if (t < 1.0) {
// Post again 16ms later.
handler.postDelayed(this, 16);
} else {
if (hideMarker) {
marker.setVisible(false);
} else {
marker.setVisible(true);
}
}
}
});
}
并且使用以下代码也可以移动 map 。
// Showing the current location in Google Map
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
// Zoom in the Google Map
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
到目前为止,我所做的还不足以将标记和 map 一起移动。它看起来并不那么完美。我必须将 map 和标记一起移动。
谢谢。
最佳答案
- 我在我的类似项目中所做的是这样的:假设我有一个用户逐个导航的点列表,所以我想在 map 上用动画显示该行程。您可以在两点之间移动标记,然后将相机移动到第二个点,而不是同时移动标记和相机,现在再次将标记移动到下一个点,然后当标记伸出下一个点时,为您的相机设置动画。
要使其正常工作,您必须稍微修改一下代码。 添加此代码:
private static final int ANIMATE_SPEEED_TURN = 1000;
private static final int BEARING_OFFSET = 20;
if (t < 1) {
mHandler.postDelayed(this, 16);
} else {
// your code
if (hideMarker) {
marker.setVisible(false);
} else {
marker.setVisible(true);
}
//my added code
LatLng begin = getBeginLatLng();// current point
LatLng end = getEndLatLng();// next point
float bearingL = bearingBetweenLatLngs(begin, end);
CameraPosition cameraPosition =
new CameraPosition.Builder()
.target(end)
.bearing(bearingL + BEARING_OFFSET)
.tilt(tilt)
.zoom(googleMap.getCameraPosition().zoom)
.build();
googleMap.animateCamera(
CameraUpdateFactory.newCameraPosition(cameraPosition),
ANIMATE_SPEEED_TURN,
null
);
mHandler.postDelayed(animator, 16);
}
如果有任何问题请告诉我!!! 有关详细步骤,请访问 Animating the map
关于android - 谷歌地图 : moving marker and map together smoothly along with the user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499992/