Google将用户可编辑的多边形映射到android中固定数量的点?

问题描述 投票:0回答:1

我先在Google地图上绘制多边形,然后将多边形点存储到sqlite。当我单击列表视图的任何项目时,我会使用一个多边形信息的列表视图,然后通过在sqlite中使用坐标在Google地图上绘制多边形,如上图所示。现在我想使用setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() this方法来编辑此多边形。然后使用此新坐标从sqlite更新我的坐标。

这是我的问题,我将放一张图片来说明它。

This is my polygon

这里是代码:

    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);

}

after dragging marker

像上面的图像一样,我的标记移动了,但没有形成多边形。

坐标包含来自sqlite的多边形坐标

java google-maps google-maps-markers polygon
1个回答
0
投票

似乎您正在使用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());
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.