javascript - Google map 上的多个多边形 - 不起作用 - 加入

标签 javascript google-maps

使用下面的代码,我可以在 map 上绘制一个多边形,但是多边形被视为一个多边形,并且 API 将它们像在多边形上一样连接起来。我一直在用我的头撞这个!我需要每个多边形在 map 上加载不同的形状。数组内部的格式如下:

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

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




var polys = [[[51.4503639, -0.1006082], [51.4502851, -0.1000704], [51.4491791, -0.0992159], [51.4480629, -0.0978004], [51.4486121, -0.098658], [51.4503639, -0.1006082]], [[51.4225526, -0.1618125], [51.42297, -0.160525], [51.4222314, -0.1603534], [51.421847, -0.1590405], [51.4216169, -0.1583023], [51.4198131, -0.1587487], [51.4196633, -0.1579333], [51.4195509, -0.1571436], [51.4188674, -0.1577788], [51.4190548, -0.1585427], [51.4189852, -0.1594954], [51.4182427, -0.1601064], [51.4175419, -0.1606966], [51.416929, -0.1618334], [51.4175821, -0.1618763], [51.4183207, -0.1624428], [51.4181762, -0.1640049], [51.4182297, -0.1646916], [51.4191932, -0.1649233], [51.4204705, -0.1644732], [51.4211931, -0.1643445], [51.4216213, -0.1642758], [51.4209897, -0.1643016], [51.4201781, -0.163241], [51.4214072, -0.1623876], [51.4219531, -0.1621987], [51.4220602, -0.1621558], [51.4225526, -0.1618125]]]

  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,
           fillColor: "#FF0000",
           fillOpacity:0.1
           });
  }
          bermudaTriangle.setMap(map);


  }

最终这成功了:

  var latLng =[]
  var locs = []
  for (var _p=0; _p < polys.length; _p++) {
      locs = polys[_p];
      var  latLng = [];
      var bermudaTriangle = []
    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,
               fillColor: "#FF0000",
               fillOpacity:0.1
    });

    bermudaTriangle.setMap(map);
     }

    }

最佳答案

您应该将创建多边形的调用移到内部循环之外。并且每次都需要重新创建 latLng 数组。

var latLng =[];

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,
           fillColor: "#FF0000",
           fillOpacity:0.1
});

bermudaTriangle.setMap(map);

关于javascript - Google map 上的多个多边形 - 不起作用 - 加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584851/

相关文章:

javascript - 是否可以在绘制 Google Maps API 折线时取消它?

javascript - 关闭特定信息窗口/隐藏折线 Google map api v3

javascript - 响应式导航 - 单击时如何更改菜单图标

javascript - 如何摆脱谷歌地图中的小矮人?

google-maps - Google Directions API 首选交通方式

javascript - 如何区分内联链接和独立链接

javascript - Google Maps API 不在 DIV 标记内呈现

javascript - DocumentDB 模拟器 REST API

javascript - 在将数组推送到数组并像对象一样分配键值对之后,数组的长度是多少

javascript - 导入/导出声明可能只出现在模块的顶层