1

我想在可以调整大小的谷歌地图上绘制多边形。onMarkerClick 成功删除了任何标记,但我无法通过将其拖动到另一个位置来更改标记位置。这是我的代码:

        PolygonOptions polygon = new PolygonOptions(); 
        Polygon my_polygon ;
        polygon.fillColor(Color.RED);
....
@Override
public boolean onMarkerClick(Marker arg0) {
    my_polygon.remove();
    arg0.remove();
    polygon.getPoints().remove(arg0.getPosition()); //it's ok, marker deleted

    return true;
}

 @Override
  public void onMarkerDrag(Marker marker)
  {  
      polygon.getPoints().remove(marker.getPosition()); //marker still in polygon list

  }
  @Override
  public void onMarkerDragStart(Marker marker)
  {  

  polygon.getPoints().remove(marker.getPosition());  //marker still in polygon list


  }
  @Override
  public void onMarkerDragEnd(Marker marker)
  {  
      my_polygon.remove(); 
      polygon.getPoints().remove(marker.getPosition());  //marker still in polygon list
    polygon.add(marker.getPosition());
  my_polygon=map.addPolygon(polygon); //created new polygon which contains previous marker position
  }

那么,如何正确删除以前的标记点?

4

1 回答 1

0

首先将所有 LatLng 点保存在 LatLng 的数组列表中。不要删除 onMarkerDragStart(Marker marker)中的标记, 甚至将其保存到新的 LatLng 变量中。现在在onMarkerDragEnd(Marker marker),首先获取新点,然后删除您保存在新 LatLng 变量中的旧点。同时,您需要从您保存的数组列表中删除相同的标记并添加此新值,然后再次绘制多边形。

例如,如果假设你已经声明了一个 latlng 的数组列表,像这样 ArrayList points = new ArrayList();

然后在 onMarkerDragEnd(Marker marker)中绘制一个多边形,如下所示

Polygon polygon = map.addPolygon(new PolygonOptions()
        .addAll(points)
        .strokeColor(Color.BLACK)
        .strokeWidth(5)
        .fillColor(0x884d4d4d));

尝试这个。希望它会有所帮助。:)

于 2013-09-25T12:13:52.527 回答