首页 文章

GoogleMaps绘制多条折线,即使我在绘制新折线之前删除了之前的折线

提问于
浏览
0

我通过在每个位置更新上传递坐标数组来使用谷歌 Map 并在其上绘制折线 . 在绘制折线后,我首先删除前一个,然后我根据更新的坐标数组列表绘制新的折线 . 问题是,谷歌 Map 正在绘制每个位置更新的起点到终点的单独折线 . 我知道错误是在调用事物的层次结构中的某个地方 . 任何人都可以帮我解决这个问题 .

这是我更新相机焦点和绘制折线的方法 .

private void moveCamera(Location location) {
        if (location != null) {
            if (polyline != null) {
                polyline.remove();
            }
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                    new LatLng(location.getLatitude(), location.getLongitude()), 16));


            coordList.add(new LatLng(location.getLatitude(), location.getLongitude()));

// Create polyline options with existing LatLng ArrayList
            polylineOptions.addAll(coordList);
            polylineOptions
                    .width(5)
                    .color(Color.RED);

// Adding multiple points in map using polyline and arraylist
            polyline = mMap.addPolyline(polylineOptions);

        }
    }

2 回答

  • 0

    只是打电话

    polylineOptions.clear(); -> delete current object
    

    map.clear() -> invalidate map
    

    在添加新折线之前

  • 0

    得到了解决方案 . 我一次又一次地使用相同的旧PolylineOptions,将其声明为全局变量 . 现在,在每个情节之前,我创建了一个新的PolylineOptions实例,现在很好 .

    这是更新的代码 .

    private void moveCamera(Location location) {
            if (location != null) {
                if (polyline != null) {
                    polyline.remove();
                }
                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                        new LatLng(location.getLatitude(), location.getLongitude()), 16));
    
    
                coordList.add(new LatLng(location.getLatitude(), location.getLongitude()));
    
    polyline = mMap.addPolyline(new PolylineOptions().addAll(coordList)
                        .width(5)
                        .color(Color.RED));
    
            }
        }
    

相关问题