我先在Google地图上绘制多边形,然后将多边形点存储到sqlite。当我单击列表视图的任何项目时,我会使用一个多边形信息的列表视图,然后通过在sqlite中使用坐标在Google地图上绘制多边形,如上图所示。现在我想使用setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener()
this方法来编辑此多边形。然后使用此新坐标从sqlite更新我的坐标。
这是我的问题,我将放一张图片来说明它。
这里是代码:
myMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
}
@Override
public void onMarkerDrag(Marker marker) {
updateMarkerLocation(marker);
drawPolygon(coordinates);
}
private void updateMarkerLocation(Marker marker) {
LatLng latLng = (LatLng) marker.getTag();
int position = coordinates.indexOf(latLng);
if (position >= 0) {
coordinates.set(position, marker.getPosition());
marker.setTag(marker.getPosition());
}
}
@Override
public void onMarkerDragEnd(Marker marker) {
}
});
}
private void drawPolygon(List<LatLng> coordinates) {
if (polygon != null) {
polygon.remove();
}
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.fillColor(Color.GREEN);
polygonOptions.strokeColor(Color.GREEN);
polygonOptions.strokeWidth(3);
polygonOptions.addAll(coordinates);
polygon = myMap.addPolygon(polygonOptions);
}
像上面的图像一样,我的标记移动了,但没有形成多边形。
坐标包含来自sqlite的多边形坐标
似乎您正在使用Marker
标记来存储多边形点的最后显示的坐标(LatLng
)。要显示的坐标存储在coordinates
是吗?
如果是这样,我想您的代码应该是:
private void updateMarkerLocation(Marker marker) {
LatLng latLng = (LatLng) marker.getTag();
int position = coordinates.indexOf(latLng);
if (position >= 0) {
coordinates.set(position, marker.getPosition());
marker.setTag(marker.getPosition());
}
}