【发布时间】:2016-12-05 14:44:10
【问题描述】:
在我的应用程序中,我使用 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;
我必须处理一开始只有一个位置的情况。但是,我没有看到标记移动,也没有缩放。谁能帮我看看我哪里错了?
【问题讨论】:
-
您只是想将相机动画到特定位置吗?
-
我想要的是,当我收到一个新的 GPS 坐标时,标记应该从旧位置“平稳”移动到新位置,而不是突然跳跃,之后,相机应该带来新位置地图中心的标记。
标签: android google-maps