Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌地图多边形中的额外线条_Android_Google Maps_Line_Polygon - Fatal编程技术网

Android 谷歌地图多边形中的额外线条

Android 谷歌地图多边形中的额外线条,android,google-maps,line,polygon,Android,Google Maps,Line,Polygon,在下面的屏幕截图中,我通过点击谷歌地图绘制了一个多边形。 使用setOnMapClickListener,单击点(如图所示1-10)的lat lng存储到阵列列表中,然后使用如图所示的多边形方法绘制多边形 点击点的顺序如图所示,但我得到了一个额外的8和10之间的线。 如何获得地图上单击的精确点的多边形 mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override

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

点击点的顺序如图所示,但我得到了一个额外的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));
        }
    }

有几条建议你可以试试

  • 在添加单击侦听器之前,清除多边形列表
  • 在for循环外部创建一次
    poly_形状
  • 此时,向
    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));
        }
    

    能否打印
    polygon\u list
    的值?可以尝试在
    polygon()
    中的
    for
    -循环之前调用
    poly\u shape.setMap(null)
    以清除现有多边形,但不确定这是否有帮助?