15

根据Google Maps JavaScript API v3 文档google.maps.Polygon类的getPath()函数返回一个MVCArray. 在一个简单的例子中,Polygon 的路径可以是一个数组,它在传递给 google.maps.Polygon 类的函数时被LatLngs转换为类型。MVCArraysetPath()

上述案例是我目前正在处理的。当我调用我的 Polygon 对象时,我传入一个数组LatLngs,并返回(我假设是)一个。我的问题是:如何将其转换回多边形形状的单个数组?是否有一些我缺少的内置 Google Maps API v3 方式?我觉得必须有某种明显的内置转换功能或 API 中的某些东西让我望而却步。MVCObjectgetPath()MVCObjectLatLngs

任何帮助,将不胜感激。

4

2 回答 2

32

当您调用Polygon.getPath()api-doc时,返回的是一个MVCArrayapi-doc实例,这些LatLng实例代表Polygon. MVCAarray您可以通过两种方式直接获取成员:

  1. Call MVCAarray.getArray,它将返回Array包含LatLng成员的底层 JavaScript。
  2. 使用MVCArray.getAt( index ),它将返回MVCArrayLatLng在本例中为 a )中该索引处的任何内容。这为您提供了一种设置 JavaScriptfor循环以遍历数组成员的方法。

MVCArray您还可以通过使用该forEach(callback:function(*, number))函数间接与 的成员一起工作。在这种情况下,您必须传递一个接受两个参数的回调函数:

  1. 的实际成员元素MVCArray
  2. 该元素所在的数组索引。
于 2012-07-14T17:45:56.183 回答
6
    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);
     }
于 2019-07-07T11:34:03.477 回答