【问题标题】:Android: Animate marker movementAndroid:动画标记移动
【发布时间】: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


【解决方案1】:

为了将相机动画到特定位置,我使用下面的sn-p,在下面的例子中相机会平滑移动到这个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);

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多