Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can polygon.setPath();是否用于完全重新定义多边形?_Javascript_Google Maps_Polygon - Fatal编程技术网

Javascript Can polygon.setPath();是否用于完全重新定义多边形?

Javascript Can polygon.setPath();是否用于完全重新定义多边形?,javascript,google-maps,polygon,Javascript,Google Maps,Polygon,谷歌地图JavaScript API V3 我的映射让我处理多边形的概念,在深入代码之前,我正在尝试制定一个策略 我永远不会在地图上一次有多个多边形,所以我希望我可以定义一个多边形,并像使用标记一样重用它 我的理解正确吗,多边形设置路径();函数将移动多边形以表示新的点阵列?文件上说。。。“从MVCArray中插入或删除LatLngs将自动更新地图上的多边形。”但它并没有说您可以使用setPath();给它一个全新的点阵列 我在用伪代码思考 // some event fires polygon

谷歌地图JavaScript API V3

我的映射让我处理多边形的概念,在深入代码之前,我正在尝试制定一个策略

我永远不会在地图上一次有多个多边形,所以我希望我可以定义一个多边形,并像使用标记一样重用它

我的理解正确吗,多边形设置路径();函数将移动多边形以表示新的点阵列?文件上说。。。“从MVCArray中插入或删除LatLngs将自动更新地图上的多边形。”但它并没有说您可以使用setPath();给它一个全新的点阵列

我在用伪代码思考

// some event fires
polygon.setPath(latlngArray);
bounds = new google.maps.LatLngBounds();
$.each(latlngArray, function(key, ll){
  bounds.extend(ll);
});
polygon.setMap(MyMap);
MyMap.fitBounds(bounds);

//a different event fires
polygon.setMap(null);
// build a new latlngArray
// do it again
我是否正确地认为我可以在这种情况下重用相同的多边形对象,或者我需要重新考虑我的策略

谢谢

跳过


编辑:答案是可以的。我将更好地分析我的代码,并尝试提供一个写得很好的答案,这表明了我遇到的警告。例如,map.fitBounds()的映射必须可见;给出令人信服的结果。

是的,重复使用同一个多边形对象是完全可能的

我真的没有任何代码可以提供。我在问题中列出的伪代码基本上是有效的

这些是我在充实我的解决方案时学到或选择的东西

如前所述,映射不能是
map.fitBounds()的
style=“display:none;”“
以按预期工作

我已经保留了一个容器对象来保存我的标记。我为多边形路径创建了一个容器对象,并为与多边形关联的标记添加了“多边形”属性,以便多个标记可以引用同一个多边形路径

即使对于具有单个路径的多边形,我也选择将路径数组嵌入到另一个数组中,然后使用
polygon.setpath()这样,如果我扩展到具有多条路径的多边形,代码将更容易缩放

最初解析多边形路径时,构建LatLngBounds对象,然后保存其
bounds.getSouthWest()&
bounds.getNorthEast()以及路径。这允许快速且简单地
map.fitbunds()在显示时,并避免多次重新计算相同的边界

无论如何,是的,这当然是可能的,我认为用不同的路径重用同一个多边形对象是非常有效的

旧金山和奥克兰回收相同的多边形对象。。。

我只有这些

跳过


更新:我发现一些具有多条路径的多边形数据。它正确插入。

是的,你们都认为重新定义设置路径将重新定义多边形,这是正确的,但之后必须设置贴图才能重新绘制多边形。多边形可能位于api窗口之外,这与此无关。为了便于使用,一旦“重新绘制”,由于多边形可能在您的查看窗口之外,使用地图上的setCenter方法重新定义窗口的中心将是一种良好的可用性实践。这段代码是我从一个应用程序中删除的,该应用程序允许用户绘制一条多段线,然后将其转换为多边形(因为用户可能想要固定周长,所以我允许她在多段线和多边形之间来回移动)。我总是使用相同的多边形,只需设置路径SSS(多边形的末尾有一个S):


目前,在2020年12月,其仅可用于:

myOldPolygon.setPath(newLatLngs)
在不重置
map
属性的情况下,使用新路径重新绘制一个

你已经试过了,效果还可以

myOldPolygon.setPath(newLatLngs)