可以polygon.setPath(); 用于完全重新定义多边形?

Ben*_*tFX 6 javascript google-maps polygon

Google Maps JavaScript API V3.

我的映射让我处理多边形的想法,我正在尝试在深入研究代码之前制定策略.

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

我的理解是正确的,多边形setPath(); 函数将移动多边形以表示一个新的点数组?文档说......"从MVCArray插入或删除LatLng将自动更新地图上的多边形." 但它并没有说出你可以使用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
Run Code Online (Sandbox Code Playgroud)

我是否认为我可以在这个时代重复使用相同的多边形对象,或者我是否需要重新考虑我的策略?

谢谢.

跳跃

编辑:答案是肯定的.我将更好地挖掘我的代码,并尝试提供一个写得很好的答案,这显示了我遇到的警告.例如,map.fitBounds();必须是可见的; 给出有说服力的结果.

Ben*_*tFX 5

是的,很可能重用相同的多边形对象...

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

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

如前所述,地图不能style="display: none;"map.fitBounds();工作按预期。

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

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

最初解析多边形路径时,请构建LatLngBounds对象,然后将其bounds.getSouthWest();bounds.getNorthEast();与路径一起保存。这样可以map.fitBounds();在显示时快速简便地进行操作,并且避免多次重新计算相同的边界。

无论如何,是的,这肯定是可能的,而且我认为以不同的路径重用同一多边形对象非常有效。

旧金山和奥克兰回收同一多边形对象... BayArea.png

这就是我得到的!

跳跃

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