【问题标题】:Polylines not being removed from GoogleMap没有从谷歌地图中删除折线
【发布时间】:2017-02-06 19:31:42
【问题描述】:

我有一张地图,我在其中放置标记并将它们与折线连接:

PolylineOptions p = new PolylineOptions();
p.color(Color.BLUE);
p.width((float) 7.0);
Polyline polyLine = this.mMap.addPolyline(p);
p.add(actualLocation);
LatLng previousPoint = latLngs.get(latLngs.size() - 2);
p.add(previousPoint);
this.polyLines.add(polyLine);
mMap.addPolyline(p);

我将对象 p 保存在一个数组列表中:

ArrayList<Polyline> polyLines = new ArrayList<>();

当我删除最后一个标记时,我也想删除最后一个折线。我正在做下一个:

if (polyLines.size() > 0) {
     Polyline polyLine = polyLines.get(polyLines.size() - 1);
     polyLine.remove();
     polyLines.remove(polyLines.size() - 1);
}

我正在移除标记,但折线保留在地图中。我也将它从 ArrayList 中删除。

谁能帮我看看发生了什么?我已尝试使折线不可见或更改颜色,但它不起作用。

【问题讨论】:

  • 我对 GoogleMap API 并不完全熟悉,但据我所知,您需要重新绘制地图上的折线。清除地图,然后重新添加。
  • 感谢您的想法。成功了!

标签: java android google-maps polyline


【解决方案1】:

在我看来,您实际上是在向地图添加两条折线...如果 PolylineOptions() 在附加到折线后是可变的,则它们位于同一个位置,否则您添加的是一条没有定位的折线,然后是第二。只有第二条折线被添加到您的列表中。

而不是这个:

PolylineOptions p = new PolylineOptions();
p.color(Color.BLUE);
p.width((float) 7.0);
Polyline polyLine = this.mMap.addPolyline(p); // Add before location set
p.add(actualLocation);
LatLng previousPoint = latLngs.get(latLngs.size() - 2);
p.add(previousPoint);
this.polyLines.add(polyLine);
mMap.addPolyline(p); // Add after location set

你想这样做吗?

PolylineOptions p = new PolylineOptions();
p.color(Color.BLUE);
p.width((float) 7.0);
p.add(actualLocation);
LatLng previousPoint = latLngs.get(latLngs.size() - 2);
p.add(previousPoint);
Polyline polyLine = mMap.addPolyline(p);
this.polyLines.add(polyLine);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多