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