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

标签 javascript google-maps polygon

Google map JavaScript API V3。

我的映射让我处理了多边形的概念,在我深入研究代码之前,我试图制定一个策略。

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

我的理解是否正确,多边形 setPath();函数将移动多边形以表示新的点数组?文档说......“从 MVCArray 插入或删除 LatLngs 将自动更新 map 上的多边形。”但它并没有直接说你可以使用 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 必须对 map.fitBounds() 可见;给出令人信服的结果。

最佳答案

是的,重复使用同一个多边形对象是很有可能的...

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

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

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

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

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

当最初解析多边形路径时,构建一个 LatLngBounds 对象,然后将其 bounds.getSouthWest(); & bounds.getNorthEast(); 与路径一起保存。这允许在显示时快速轻松地 map.fitBounds();,并且避免多次重新计算相同的边界。

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

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

这就是我的全部!

跳过

更新:我发现了一些多路径的多边形数据。它直接插入。

关于javascript - 可以 polygon.setPath();用于完全重新定义多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954691/

相关文章:

javascript - 如何在 Metro 风格应用中实现类似 UI 的 Bing Travel

javascript - 是或否单选按钮显示不同的 DIV

ios - 错误 EXC 错误指令试图从另一个类获取当前位置?

javascript - 将 KML 叠加层转换为适用于 Google map 的 PNG 叠加层

java - 在正方形内绘制正方形

javascript - 检查 Bootstrap Modal 当前是否显示

javascript - 允许路由使用 Meteor 访问集合中的数据

Android:从像素坐标获取纬度/经度

html - HTML 多边形 iframe 可能吗?

c++ - 如何在cgal中加载COFF网格?