дополнительная линия в многоугольнике карты Google - PullRequest
0 голосов
/ 09 октября 2018

На следующем скриншоте я рисую многоугольник, нажимая карты Google.Используя setOnMapClickListener, ширина выбранных точек (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));
        }
    }

Map Screenshot]

1 Ответ

0 голосов
/ 09 октября 2018

Есть несколько предложений, которые вы можете попробовать.

  1. Очистите polygon_list перед добавлением прослушивателя щелчков.
  2. Создайте poly_shape один раз вне цикла for.

В данный момент вы добавляете точку к 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));
    }
...