【问题标题】:Nested array in Google Maps to make many Polygons谷歌地图中的嵌套数组以制作许多多边形
【发布时间】:2012-05-14 09:35:49
【问题描述】:

我有一个数组:

[[[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 多边形。

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

  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);

}
}

但是,当绘制多边形时,它们都“连接”起来,因为它们被视为一个 - 而不是每个单独的多边形。

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    你已经有了你的要求的后半部分,所以你只需要将每个单独的多边形放入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
        ...
    }
    

    【讨论】:

    • 你不需要单独定义每个多边形,但谷歌地图不会将它们连接起来吗?
    • 或者你是说遍历每个多边形并在循环中绘制?那么在循环中包含谷歌多边形绘制调用吗?
    • 第二个。这就是我以为你在做的事情。
    • 我更新了我的问题以考虑您的第一个答案 - 这就是您的意思吗?
    • 我将打开一个新问题,因为您已经回答了原来的问题,谢谢!
    猜你喜欢
    • 2012-07-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多