【问题标题】:extra line in google map polygon谷歌地图多边形中的额外线
【发布时间】:2018-10-09 07:36:26
【问题描述】:

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

如图所示,这些点按顺序单击,但我在 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));
        }
    }

【问题讨论】:

  • 你能打印polygon_list的值吗?
  • 您可以尝试在 polygon() 中的 for-loop 之前调用 poly_shape.setMap(null) 以清除现有多边形,不确定是否有帮助?

标签: android google-maps line polygon


【解决方案1】:

您可以尝试一些建议。

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

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多