如何在地图上获取所有标记,以便用户可以看到所有标记?
我有一些标记。我在地图上显示它们。 我得到的中心LonLat来自我所有标记的lon和lat的最高和最低数字的平均值。
所以我使用以下方法将地图设置为所有标记的中心点:
map.setCenter(centerLonLat, 8);
8只是一个随机缩放级别。有没有办法计算完美的缩放级别,以便所有标记都显示在地图中?
答案 0 :(得分:8)
OpenLayers getDataExtent() function here给出了一种类似的方法,即避免循环。您需要在包含标记的图层上应用它:
var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);
答案 1 :(得分:4)
这是一个旧线程,但随着对OpenLayers的更改,我想我会发布一个新的解决方案。如果您使用[ol.source.Vector][1]
作为图层来源,则可以调用以下行来调整数据周围的地图视图。
map.getView().fit(vectorSource.getExtent());
这同时使地图居中并设置缩放,以便一次显示所有数据。
答案 2 :(得分:3)
var newBound = OpenLayers.Bounds();
对于每个标记lonlat:
newBound.extend(lonLat);
然后将其传递给函数:
map.zoomToExtent(newBound);