在我的应用程序中,我使用KSOAP2获取车辆的当前位置并在地图上显示。到目前为止,我正在清除所有标记(mGoogleMap.clear();
),然后为每个新位置更新添加新标记(mGoogleMap.addMarker(new MarkerOptions().position(buslatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.bus)));
)
然而,这种方法会导致标记突然移动并且看起来不那么好。因此,我将旧的LatLang存储在一个变量中,并希望标记从旧位置缓慢移动到新位置并缩放/调整地图,以便新位置位于中心。使用的代码:
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;
我必须在开始时处理这个案例,只有一个地方。但是,我没有看到标记移动,也没有缩放。任何人都可以帮助我,我在哪里错了?