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();必须是可见的; 给出有说服力的结果.
是的,很可能重用相同的多边形对象...
我真的没有提供任何代码。我在问题中列出的伪代码基本上可以正常工作。
这些是我在充实解决方案时学到的或选择的东西。
如前所述,地图不能style="display: none;"为map.fitBounds();工作按预期。
我已经保留了一个保存标记的容器对象。我为多边形路径创建了一个容器对象,并向与多边形关联的标记添加了“多边形”属性,因此多个标记可以引用同一多边形路径。
即使对于具有单个路径的多边形,我也选择将我的路径数组嵌入另一个数组中,然后使用polygon.setPaths();。这样,如果我扩展到具有多个路径的多边形,代码将更容易缩放。
最初解析多边形路径时,请构建LatLngBounds对象,然后将其bounds.getSouthWest();&bounds.getNorthEast();与路径一起保存。这样可以map.fitBounds();在显示时快速简便地进行操作,并且避免多次重新计算相同的边界。
无论如何,是的,这肯定是可能的,而且我认为以不同的路径重用同一多边形对象非常有效。
旧金山和奥克兰回收同一多边形对象...

这就是我得到的!
跳跃
更新:我发现一些具有多个路径的面数据。它插入正确。