OpenLayers在屏幕上显示所有标记

时间:2013-04-09 19:37:15

标签: javascript openlayers openstreetmap

如何在地图上获取所有标记,以便用户可以看到所有标记?

我有一些标记。我在地图上显示它们。 我得到的中心LonLat来自我所有标记的lon和lat的最高和最低数字的平均值。

所以我使用以下方法将地图设置为所有标记的中心点:

map.setCenter(centerLonLat, 8);

8只是一个随机缩放级别。有没有办法计算完美的缩放级别,以便所有标记都显示在地图中?

3 个答案:

答案 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)

使用zoomToExtent()

开始工作
var newBound = OpenLayers.Bounds();

对于每个标记lonlat:

newBound.extend(lonLat);

然后将其传递给函数:

map.zoomToExtent(newBound);