2012-05-16 3 views
0

У меня есть код ниже:Несколько отверстий в Polygon Google Maps, когда Перебор массива

while p < points.length 
    locs = points[p] 
    latLng = [] 
    i = 0 
    len = locs.length 

    while i < len 
    point = locs[i] 
    latLng.push new google.maps.LatLng(point[0], point[1]) 
    i++ 
    marker = new google.maps.Polygon(
    paths: latLng 
    fillColor: "#000000", 
    fillOpacity: 0 
    map: @gMap 
) 
    markers.push(marker) 
    p++ 

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

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

Получаю, что у вас могут быть два пути. Однако я перебираю свой многоугольник, так что я получаю очень черную карту, поскольку он продолжает перерисовывать контейнер.

То, что я пытаюсь получить, представляет собой контейнер с непрозрачностью 0,5, в котором есть отверстия, которые являются меньшими многоугольниками, которые повторяются. Редактировать 1: Если я использую только одну форму, я могу получить желаемый эффект для этих нескольких фигур. Я думаю, мне нужно переместить все пути в их собственную переменную, а затем поместить их на карту?

ответ

0

Я не вижу, как вы строите многоугольник в своих фрагментах кода.

Однако для многоугольника с отверстиями каждый отдельный путь должен быть элементом в массиве, определяющем многоугольник. Для многоугольника с четырьмя отверстиями вам нужно определить пять путей в одном полигоне.

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

+0

Как я могу вывести свой массив во множество отдельных путей вместо повторения каждого из них? Я думаю, у меня есть массив google lat, lng массивов? Http: //stackoverflow.com/questions/10619599/convert-array-to-google-lat-lng-array –

+0

спасибо, что имеет смысл! Раньше я делал это глупо! –