来自谷歌地图的LatLng多边形getPath()

时间:2012-07-14 17:19:46

标签: google-maps-api-3

根据Google Maps JavaScript API v3 documentationgoogle.maps.Polygon类的getPath()函数返回MVCArray。在简单的情况下,Polygon的路径可以是LatLngs的单个数组,在传递到google.maps.Polygon类的MVCArray函数时会转换为setPath()类型。

上述案例是我目前正在处理的案件。我传入一个LatLngs数组,当我在我的Polygon对象上调用MVCObject时,返回(我假设的)getPath()。我的问题是:如何将此MVCObject转换回形成Polygon形状的LatLngs数组?我是否缺少一些内置的Google Maps API v3方式?我觉得必须有某种明显的内置转换功能,或API中的某些东西让我不知所措。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:26)

当您致电Polygon.getPath() api-doc时,返回的是MVCArray api-docLatLng个实例,代表Polygon的第一条路径。您可以通过两种方式直接联系MVCAarray的成员:

  1. 致电MVCAarray.getArray,它将返回包含Array成员的基础JavaScript LatLng
  2. 使用MVCArray.getAt( index ),它将返回MVCArray中该索引处的任何内容(本例中为LatLng)。这为您提供了一种设置JavaScript for循环来迭代数组成员的方法。
  3. 您还可以使用MVCArray功能间接使用forEach(callback:function(*, number))的成员。在这种情况下,您必须传递一个接受两个参数的回调函数:

    1. MVCArray
    2. 的实际成员元素
    3. 该元素所在的数组索引。

答案 1 :(得分:0)

    var polygonBounds = polygon.getPath();
    var bounds = [];
    for (var i = 0; i < polygonBounds.length; i++) {
          var point = {
            lat: polygonBounds.getAt(i).lat(),
            lng: polygonBounds.getAt(i).lng()
          };
          bounds.push(point);
     }