2012-05-14 69 views
0

我有一个数组:在谷歌地图的嵌套阵列,使许多多边形

[[[11.11,11.11],[22.22,22.22],[33.33,33.33]],[[11.11,11.11],[22.22,22.22],[33.33,33.33]]] 

我需要在JavaScript中做的是喙每个

[11.11,11.11],[22.22, 22.22],[33.33,33.33]]

出来并创建一个新的Google多边形。

我目前有一个多边形下面的代码工作,它工作正常,但我手动从数组复制和粘贴,以查看代码是否工作,以便能够自动迭代它会很好,然后创建多个Google地图上的多边形。

var locs = [[51.4840407, -0.0318375], [51.4840351, -0.0306535], [51.4839436, -0.0300458], [51.4840184, -0.0285545]] 

var latLng = [] 
var point, _i, _len; 
for (_i = 0, _len = locs.length; _i < _len; _i++) { 
    point = locs[_i]; 
    latLng.push(new google.maps.LatLng(point[0], point[1])); 
} 

如何取顶部数组,然后拉出每个多边形,然后将其作为单独的多边形绘制到地图上。

按照第一个答案 - 我已经修改了代码为:

var latLng =[] 
var locs = [] 
for (var _p=0; _p < polys.length; _p++) { 
    locs = polys[_p]; 
    for (_i = 0, _len = locs.length; _i < _len; _i++) { 
     point = locs[_i]; 
     latLng.push(new google.maps.LatLng(point[0], point[1])); 
     bermudaTriangle = new google.maps.Polygon({ 
     paths: [latLng] 
     }); 

     bermudaTriangle.setMap(map); 

} 
} 

然而,当多边形被绘制时,他们都“连接”在他们被视为一个 - 不是作为一个单独的多边形每。

回答

0

您已经拥有了您的后半部分需求,因此您只需要将每个单独的多边形分解为locs然后使用它即可。

var polys = [[[11,11],[22,22],[33,33]],[[44,44],[55,55],[66,66]]]; 
for (var _p=0; _p < polys.length; _p++) { 
    locs = polys[_p]; 
    // locs is [[11,11],[22,22],[33,33]] first time 
    // locs is [[44,44],[55,55],[66,66]] second time 
    ... 
} 
+0

你不需要分别定义每个多边形,但谷歌地图不加入它们吗? –

+0

或者你是否在循环遍历每个poly并在循环内绘制?那么在循环中包含google多边形绘制调用? –

+0

第二个。这就是我以为你在做什么。 –