Android:动画标记移动

时间:2016-12-04 19:22:10

标签: android google-maps

在我的应用程序中,我使用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;

我必须在开始时处理这个案例,只有一个地方。但是,我没有看到标记移动,也没有缩放。任何人都可以帮助我,我在哪里错了?

0 个答案:

没有答案