google 地图多边形中的额外线条

extra line in google map 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));
        }
    }

您可以尝试一些建议。

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

目前您在 PolygonOptions 中添加一个点并在 for 循环中每次创建一个新的多边形。这可能是 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));
    }