迭代数组时多边形Google地图中的多个孔

时间:2012-05-16 10:59:22

标签: javascript google-maps-api-3 coffeescript

我有以下代码:

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++

通过一个数组绘制很多单独的多边形。它工作得很好。然而,当我尝试引入一个“容器多边形”时,许多多边形将会形成洞,我很难过。我理解这里的演示......

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

我知道你可以有两条路径。但是我遍历我的多边形构建器,所以我得到的是一个非常黑的地图,因为它不断重绘容器。

我想要的是一个0.5不透明度的容器,它有一个孔,它们是迭代的较小多边形。 编辑1: 如果我只使用一种形状,我可以为这些多种形状获得所需的效果。我想我需要将所有路径移动到他们自己的变量中,然后将它们放入地图中?

1 个答案:

答案 0 :(得分:0)

我无法看到你在代码片段中构建多边形的方式。

但是,对于带孔的多边形,每个单独的路径都需要是定义多边形的数组中的条目。对于具有四个孔的多边形,您需要在一个多边形内定义五个路径。

要使孔在支持Canvas图形的浏览器中正确显示,必须考虑缠绕方向:每个孔的定义方向应与包含它的多边形相反。也就是说,对于由顺时针前进的点定义的包含多边形,它包含的每个孔都需要逆时针定义。