Подтвердить что ты не робот

Полигон Google Maps API с "дырочкой" в центре

Вставка многоугольника внутри другого многоугольника должна сделать "отверстие" в центре (см. пример Google maps Pentagon). Тем не менее, моя программа не позволяет сделать отверстие и вместо этого делает два слоя многоугольных линий внутри.

http://cl.ly/1c243E1V1G2M1D3H3c0O < - изображение моей карты

Кто-то сказал, что изменение порядка координат зафиксировало их проблему, поэтому я выбрал именно координаты бермудского треугольника, данные Google в их примере, однако у него была та же самая проблема, с которой я столкнулся раньше. Соответствующий код ниже:

    var everythingElse = [
       new google.maps.LatLng(25.774252, -82.190262),
       new google.maps.LatLng(17.466465, -65.118292),
       new google.maps.LatLng(34.321384, -63.75737),
       new google.maps.LatLng(25.774252, -82.190262)
     ];

    var circleOverlay = [
       new google.maps.LatLng(25.774252, -80.190262),
       new google.maps.LatLng(18.466465, -66.118292),
       new google.maps.LatLng(32.321384, -64.75737),
       new google.maps.LatLng(25.774252, -80.190262)
     ];

    PropertySearch.tintPolygon = new google.maps.Polygon({
         paths: [ everythingElse, circleOverlay ],
        strokeColor: "#000000",
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: "#000000",
        fillOpacity: 0.5
    });

    PropertySearch.tintPolygon.setMap(PropertySearch.map);
4b9b3361

Ответ 1

На самом деле это вопрос направления индексов в ваших многоугольниках, в то время как один по часовой стрелке другой должен быть против часовой стрелки. Измените свой второй массив на:

var circleOverlay = [
   new google.maps.LatLng(25.774252, -80.190262),
   new google.maps.LatLng(32.321384, -64.75737),  //second and third coordinates
   new google.maps.LatLng(18.466465, -66.118292), //are swapped compared to your original
   new google.maps.LatLng(25.774252, -80.190262)
 ];

и он отобразит приятное отверстие в вашем треугольнике