2

我正在尝试获取多边形的路径,然后将它们设置为另一个类似的多边形。

newpoly = new google.maps.Polygon({
                paths:poly.getPaths()
            });

这不是假设工作吗?它在控制台中给了我这个错误。

构造函数参数 0 的值无效:[object Object]

4

3 回答 3

1

如果您可以显示 poly 对象的代码并且 poly.getPaths() 返回任何内容,这将有所帮助。我只能建议 si 像这样详细调试它:

  1. 如果您评论 path:poly:Paths(); 是否有任何错误?
  2. Console.log(poly); 返回谷歌地图多边形?
  3. Console.log(poly.getPaths()) 返回一个路径数组?
  4. 如果是,您可以尝试从 poly.getPaths 创建一个数组,然后将其传递给 newpoly。
于 2012-09-16T07:25:57.620 回答
1

在实例化多边形对象之前尝试添加以下内容

var triangleCoords = [
    new google.maps.LatLng(25.774252, -80.190262),
    new google.maps.LatLng(18.466465, -66.118292),
    new google.maps.LatLng(32.321384, -64.75737),
    new google.maps.LatLng(25.774252, -80.190262)
  ];

现在使用您的代码并替换 poly.getPaths() - 假设您的其余代码有效。

newpoly = new google.maps.Polygon({
                paths:triangleCoords //there are probably more method to add here 
            });

如果它有效,那么您就知道 poly.getPaths() 有问题。将此用作参考https://developers.google.com/maps/documentation/javascript/overlays#PolygonOptions

请记住,我们只能使用提供的代码来制定解决方案。

于 2012-09-16T07:42:46.937 回答
0

以这种方式获取第一个多边形的坐标(假设已经创建了两个多边形):

           //store polygon path
            var vertices = firstPolygon.getPath();
            // Iterate over the vertices.
            pathOfFirstPolygon = [];
            for (var i =0; i < vertices.getLength(); i++) {
                var xy = vertices.getAt(i);
                item = {};
                item["lat"] = xy.lat();
                item["lng"] = xy.lng();
                pathOfFirstPolygon.push(item);
            };

           //Set path of the second polygon
           secondPolygon.setPath(pathOfFirstPolygon);
于 2015-09-01T11:50:13.573 回答