13

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

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

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

map.setCenter(centerLonLat, 8);

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

4

3 回答 3

11

OpenLayers getDataExtent() 函数在此处给出了一种类似的避免循环的方法。您需要将其应用于包含标记的图层:

var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);
于 2013-04-10T06:14:18.473 回答
9

这是一个旧线程,但是随着对 OpenLayers 的更改,我想我会为此发布一个新的解决方案。如果您使用ol.source.Vector作为图层源,那么您可以调用以下行来使地图视图适合您的数据。

map.getView().fit(vectorSource.getExtent());

这同时使地图居中并设置缩放,以便您的所有数据一次可见。

于 2017-12-28T20:12:28.910 回答
5

使用zoomToExtent()让它工作

var newBound = OpenLayers.Bounds();

对于每个标记 lonlat:

newBound.extend(lonLat);

然后将其传递给函数:

map.zoomToExtent(newBound);
于 2013-04-09T19:58:11.417 回答