【问题标题】:loop over multipolygon feature google maps api v 3循环遍历多面体功能谷歌地图 api v 3
【发布时间】:2017-08-10 20:18:30
【问题描述】:

有没有办法使用谷歌地图 v3 循环遍历多面要素以提取每个子多边形,然后使用 containsLocation() 找出子多边形内的位置是否与我存储的经纬度坐标匹配?

我希望能够像这样使用循环:

//check if multipolygon
if(e.feature.getGeometry().getType()==='MultiPolygon'){

 //loop over sub polygons
  var polygons = e.feature.getGeometry().getArray();

  polygons.foreach(function(item, index){

    //item is our polygon?

    var coords = item.getAt(index).getArray();
    var poly = new google.maps.Polygon({

      paths: coords,

    });

    //check if the subpolygon contains my latlong

    if(google.maps.geometry.poly.containsLocation(myLatLong, poly)){

     // do something

    }

  });

}

但是,它不起作用,因为我认为“项目”实际上不是多边形?

任何帮助都会很好地帮助我实现这一目标。

【问题讨论】:

  • developers.google.com/maps/documentation/javascript/3.exp/… var 多边形应该在数组中吗?我认为 getArray() 返回一个数组。多边形.forEach();而不是 [polygons].forEach();
  • 是的,有可能。您需要从坐标中生成google.maps.Polygons,然后进行检查,因此发布的代码原则上应该可以工作。请提供一个 minimal reproducible example 来证明您的问题。
  • 它似乎可以很好地遍历多边形,但它的包含位置永远不会等于 true...

标签: javascript jquery arrays google-maps google-maps-api-3


【解决方案1】:

我发现问题出在 .getAt(i) 上,它必须是 .getAt(0)

if (e.feature.getGeometry().getType() === 'MultiPolygon' ) {
          var array = e.feature.getGeometry().getArray();
          array.forEach(function(item,i){

            var coords= item.getAt(0).getArray();
            var poly = new google.maps.Polygon({
              paths: coords
            });
            if (google.maps.geometry.poly.containsLocation(location, poly)) {
              //do something

            }

          });
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多