我想在谷歌地图上绘制可以调整大小的多边形。 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
}
那么,如何正确删除之前的标记点呢?
最佳答案
首先将所有 LatLng 点保存在 LatLng 的数组列表中。 不要删除标记 onMarkerDragStart(Markermarker) 甚至将其保存到新的 LatLng 变量中。现在在 onMarkerDragEnd(Markermarker) 处,首先获取新点,然后删除保存在新 LatLng 变量中的旧点。同时,您需要从已保存的数组列表中删除相同的标记并添加此新值,然后再次绘制多边形。
例如,假设您声明了一个像这样的 latlng 数组列表 ArrayList 点 = new ArrayList();
然后在onMarkerDragEnd(Markermarker)中绘制一个多边形,如下所示
Polygon polygon = map.addPolygon(new PolygonOptions()
.addAll(points)
.strokeColor(Color.BLACK)
.strokeWidth(5)
.fillColor(0x884d4d4d));
试试这个。希望它会有所帮助。 :)
关于java - Android 谷歌地图 v2 : resize polygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004328/