谷歌地图多边形中的额外行

时间:2018-10-09 07:36:26

标签: android google-maps line polygon

在以下屏幕截图中,我通过单击Google地图绘制一个多边形。 使用setOnMapClickListener将被单击的点的位置(如图中1-10所示)存储到数组列表中,然后使用显示多边形的方法多边形。

按图所示的顺序单击点,但是在8到10之间有一条额外的线。 如何获得地图上单击的确切点的多边形。

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                    polygon_list.add(latLng);
                    mMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.mipmap.dot)).anchor(0.5f, 0.5f));
                }
            }
        });

public void polygon() {
        PolygonOptions opts = new PolygonOptions();
        for (LatLng location : polygon_list) {
            opts.add(location);
            poly_shape = mMap.addPolygon(opts.strokeColor(Color.RED).fillColor(Color.BLUE));
        }
    }

Map Screenshot]

1 个答案:

答案 0 :(得分:1)

您可以尝试一些建议。

  1. 清除polygon_list,然后再添加点击侦听器。
  2. 在for循环外创建一次poly_shape

此刻,您每次在for循环内向PolygonOptions添加一个点并创建一个新的多边形。这可能是在8到10之间增加一行的原因。

更新后的代码如下

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                    polygon_list.add(latLng);
                    mMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromResource(R.mipmap.dot)).anchor(0.5f, 0.5f));
                }
            }
        });

public void polygon() {
        PolygonOptions opts = new PolygonOptions();
        for (LatLng location : polygon_list) {
            opts.add(location);
        }
       poly_shape = mMap.addPolygon(opts.strokeColor(Color.RED).fillColor(Color.BLUE));
    }