Google Maps Android中无法平滑跟踪多段线

Google Maps Android中无法平滑跟踪多段线,android,google-maps,google-maps-markers,google-polyline,Android,Google Maps,Google Maps Markers,Google Polyline,我正在使用以下代码在谷歌地图上为多段线跟踪设置动画。根据LatLong列表(markerPojoList)跟踪多段线。 我已经在某种程度上实现了跟踪的平滑,但我希望这些线能够以更平滑的方式进行跟踪。 `private void animateMarkers(final Marker marker) { final PolylineOptions polylineOptions = new PolylineOptions().color(Color.RED); final Handler

我正在使用以下代码在谷歌地图上为多段线跟踪设置动画。根据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);
}
});
}`
`private void animateMarkers(最终标记){
最终PolylineOptions PolylineOptions=新的PolylineOptions().color(color.RED);
最终处理程序=新处理程序();
handler.post(新的Runnable(){
@凌驾
公开募捐{
ValueAnimator ValueAnimator=ValueAnimator.Offload(0,
1);
valueAnimator.setDuration(0);
valueAnimator.setInterpolator(新的LinearInterpolator());
valueAnimator.addUpdateListener(新)
ValueAnimator.AnimatorUpdateListener()的值{
@凌驾
AnimationUpdate(ValueAnimator)上的公共无效
valueAnimator){
v=valueAnimator.getAnimatedFraction();
如果(i
我已编辑了您的代码,请尝试以下操作

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);
        }
    });
}
private void animateMarkers(最终标记){
最终PolylineOptions PolylineOptions=新的PolylineOptions().color(color.RED);
最终处理程序=新处理程序();
handler.post(新的Runnable(){
@凌驾
公开募捐{
ValueAnimator ValueAnimator=ValueAnimator.Offload(0,
1);
valueAnimator.setDuration(0);
valueAnimator.setInterpolator(新的LinearInterpolator());
valueAnimator.addUpdateListener(新的valueAnimator.AnimatorUpdateListener(){
@凌驾
AnimationUpdate(ValueAnimator)上的公共无效
值(动画师){
if(i
谢谢!比我现有的代码更好,但它能更平滑吗?这也是一个问题,同时跟踪多段线贴图看起来有点扭曲。有什么解决方法吗?尝试增加延迟时间并检查它可能会解决您的问题。现在工作几乎很好。谢谢我对多段线选项做了以下更改,现在工作更平滑了!final PolylineOptions PolylineOptions=新的PolylineOptions().color(color.RED).width(3).jointType(jointType.斜面);