Как нарисовать полигоны с отверстиями в геометрии WKT - PullRequest
0 голосов
/ 26 февраля 2019

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

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

enter image description here

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

Мой код:

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, чтобы удалить один для цикла

1 Ответ

0 голосов
/ 26 февраля 2019

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

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

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

poly = new PolygonOptions();
// set the polygon's attributes
//...
//Iterable<LatLng> hole = //whatever contains the hole
poly.addHole(hole);
...