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

时间:2018-03-20 08:35:29

标签: android google-maps google-polyline

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

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

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 :(得分:0)

只需致电

polylineOptions.clear(); -> delete current object

map.clear() -> invalidate map

在添加新折线之前

答案 1 :(得分: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));

        }
    }