在我的应用程序中,我使用KSOAP2获取我的车辆的当前位置并在 Map 上显示它 . 直到现在我正在清除所有标记( mGoogleMap.clear();
),然后为每个新位置更新添加一个新标记( mGoogleMap.addMarker(new MarkerOptions().position(buslatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.bus)));
)
然而,这种方法导致标记突然移动并且看起来不那么好 . 因此,我将旧的LatLang存储在一个变量中,并希望标记从旧位置缓慢移动到新位置并缩放/调整 Map ,以便新位置位于中心 . 使用的代码:
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
busMarker = mGoogleMap.addMarker(new MarkerOptions().position(buslatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.bus)));
double[] startValues = LastbuslatLng==null ? new double[]{buslatLng.latitude, buslatLng.longitude} : new double[]{LastbuslatLng.latitude, LastbuslatLng.longitude};
double[] endValues = new double[]{buslatLng.latitude, buslatLng.longitude};
ValueAnimator latLngAnimator = ValueAnimator.ofObject(new DoubleArrayEvaluator(), startValues, endValues);
latLngAnimator.setDuration(600);
latLngAnimator.setInterpolator(new DecelerateInterpolator());
latLngAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
double[] animatedValue = (double[]) animation.getAnimatedValue();
busMarker.setPosition(new LatLng(animatedValue[0], animatedValue[1]));
}
});
latLngAnimator.start();
}
});
LastbuslatLng = buslatLng;
我一定要照顾这个案子,一开始会有一个地方 . 但是,我没有看到标记移动,也没有缩放 . 任何人都可以帮助我,我在哪里错了?
1 回答
为了将相机动画到特定位置,我使用以下代码片段,在下面的示例中,相机将平滑地移动到此
37.4219999,-122.0862462
位置