【问题标题】:Polylines not smoothly traced in Google Maps Android折线在 Google Maps Android 中未顺利追踪
【发布时间】:2018-12-29 10:22:26
【问题描述】:

我正在使用以下代码为 Google 地图上的折线跟踪设置动画。根据 LatLong 列表(markerPojoList)跟踪折线。 我在一定程度上实现了追踪的平滑度,但我希望以更平滑的方式追踪这些线条。

`private void animateMarkers(final Marker marker) {
  final PolylineOptions polylineOptions = new PolylineOptions().color(Color.RED);
  final Handler handler = new Handler();
            handler.post(new Runnable() {
                @Override
                public void run() {
                    ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 
     1);
                    valueAnimator.setDuration(0);
                    valueAnimator.setInterpolator(new LinearInterpolator());
                    valueAnimator.addUpdateListener(new 
                    ValueAnimator.AnimatorUpdateListener() {
                        @Override
                        public void onAnimationUpdate(ValueAnimator 
         valueAnimator) {     
                        v = valueAnimator.getAnimatedFraction();                  
                        if (i < markerPojoList.size()){         
                        lng = v * markerPojoList.get((i + 1) - 
         1).getLongitude() + 
                        (1 - v)   * markerPojoList.get(i).getLongitude();
                        lat = v * markerPojoList.get((i + 1) - 1).getLattitude() + 
                        (1 - v)markerPojoList.get(i).getLattitude();
                        LatLng newPos = new LatLng(lat, lng);
                        marker.setPosition(newPos);
                        polylineOptions.add(newPos);
                        line = mMap.addPolyline(polylineOptions);
                        mMap.moveCamera(CameraUpdateFactory
                        .newCameraPosition(new CameraPosition.Builder()
                        .target(newPos)
                        .zoom(mMap.getCameraPosition().zoom)
                        .build()));
}}});
valueAnimator.start();
i++;
if (i < markerPojoList.size())
handler.postDelayed(this, 10);
}
});
}`

【问题讨论】:

    标签: android google-maps google-maps-markers google-polyline


    【解决方案1】:

    我已经编辑了你的代码试试这个

    private void animateMarkers(final Marker marker) {
        final PolylineOptions polylineOptions = new PolylineOptions().color(Color.RED);
        final Handler handler = new Handler();
        handler.post(new Runnable() {
            @Override
            public void run() {
                ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,
                        1);
                valueAnimator.setDuration(0);
                valueAnimator.setInterpolator(new LinearInterpolator());
                valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator
                                                          valueAnimator) {
                        if (i < markerPojoList.size()) {
                            lng = v * markerPojoList.get((i + 1) - 1).getLongitude() + markerPojoList.get(i).getLongitude();
                            lat = v * markerPojoList.get((i + 1) - 1).getLattitude() + markerPojoList.get(i).getLattitude();
                            LatLng newPos = new LatLng(lat, lng);
                            marker.setPosition(newPos);
                            polylineOptions.add(newPos);
                            line = mMap.addPolyline(polylineOptions);
                            mMap.moveCamera(CameraUpdateFactory
                                    .newCameraPosition(new CameraPosition.Builder()
                                            .target(newPos)
                                            .zoom(mMap.getCameraPosition().zoom)
                                            .build()));
                        }
                    }
                });
                valueAnimator.start();
                i++;
                if (i < markerPojoList.size())
                    handler.postDelayed(this, 10);
            }
        });
    }
    

    【讨论】:

    • 谢谢!比我现有的代码更好,但它是否可以更流畅,也是一个问题,同时跟踪折线图看起来有点扭曲..有什么解决方案吗?
    • 尝试增加延迟时间,看看是否能解决您的问题。
    • 现在几乎可以正常工作了。谢谢!!
    • 我对 PolylineOptions 进行了以下更改,它现在工作更顺畅了! final PolylineOptions polylineOptions = new PolylineOptions().color(Color.RED).width(3).jointType(JointType.BEVEL);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2014-02-07
    • 2014-02-16
    相关资源
    最近更新 更多