首页 文章

Android:动画标记移动

提问于
浏览
0

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

  • 0

    为了将相机动画到特定位置,我使用以下代码片段,在下面的示例中,相机将平滑地移动到此 37.4219999,-122.0862462 位置

    CameraPosition googlePlex = CameraPosition.builder()
                .target(new LatLng(37.4219999,-122.0862462))
                .zoom(16)
                .bearing(0)
                .tilt(45)
                .build();
    
    mGooglemap.animateCamera(CameraUpdateFactory.newCameraPosition(googlePlex), 10000, null);
    

相关问题