我想在谷歌地图上绘制多边形,可以调整大小。通过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
}
那么,我该如何正确删除普通标记点呢?
答案 0 :(得分:0)
首先将所有LatLng点保留在LatLng的arraylist中。 不要删除标记 onMarkerDragStart(标记标记)甚至将其保存到新的LatLng变量。现在在 onMarkerDragEnd(标记标记),首先获取新点,然后删除您在新LatLng变量中保存的旧点。同时,您需要从已保存的arraylist中删除相同的标记,然后添加此新值,然后再次绘制多边形。
例如,假设你已经像这样声明了一个latlng的arraylist ArrayList points = new ArrayList();
然后在 onMarkerDragEnd(标记标记)中绘制一个ploygon,如下所示
Polygon polygon = map.addPolygon(new PolygonOptions()
.addAll(points)
.strokeColor(Color.BLACK)
.strokeWidth(5)
.fillColor(0x884d4d4d));
试试这个。希望它会有所帮助。 :)