Как рисовать многоугольники с отверстиями в геометрии WKT

Я разрабатываю приложение, которое использует карту. Я хочу показать многоугольник с «дыркой» в Java Android. Я искал, но, к сожалению, не нашел решения. Я думаю, что моя проблема в том, что я не могу установить правильный fillColor. Кто-нибудь может мне помочь?

Мой результат:

введите здесь описание изображения

Я хочу, чтобы цвет отверстия был прозрачным.

Мой код:

List<ArrayList<LatLng>> multiLatLon;
...
//draw polygon hole 
for(int i=0; i<multiLatLon.size(); i++){
                    poly = new PolygonOptions();
                    for (int j=0; j<multiLatLon.get(i).size(); j++){
                        mop.position(multiLatLon.get(i).get(j));
                        poly.add(multiLatLon.get(i).get(j));
                        Marker m = mMap.addMarker(mop);
                    }
                    poly.fillColor(R.color.colorOcher);
                    Polygon polygon = mMap.addPolygon(poly);
                }

Дайте мне знать, если вам нужна дополнительная информация.

Решение:

...
poly = new PolygonOptions ();
poly.fillColor (ColorUtils.setAlphaComponent (Color.BLUE, 128));
for (int i = 0; i <multiLatLon.size (); i ++) {
 if (i == 0) {
  poly.addAll (multiLatLon.get (i));
 } else {
  poly.addHole (multiLatLon.get (i));
 }
}
mMap.addPolygon(poly);

В моем случае я знаю, что первый массив точек (multiLatLon.get(i)) определяет геометрию полигона; в то время как другие - многоугольные отверстия.

Примечание. Я использовал addAll, чтобы удалить цикл for


person Baby    schedule 26.02.2019    source источник


Ответы (1)


Я думаю, что решение, которое вы ищете, — это addHole в классе PolygonOptions.

Дайте этой функции свои очки (как Iterable<LatLng>), вы хотите иметь дыру, и вы должны быть готовы к работе.

Я не знаю точно, где в вашем коде находятся значения вашей дыры, но в основном вы просто вызываете эту функцию следующим образом:

poly = new PolygonOptions();
// set the polygon's attributes
//...
//Iterable<LatLng> hole = //whatever contains the hole
poly.addHole(hole);
person Sirmyself    schedule 26.02.2019
comment
Спасибо. Это дорога, по которой я пытаюсь идти. Я сообщу вам, как только у меня появятся новости. - person Baby; 26.02.2019