Javascript OpenLayers在屏幕上显示所有标记

Javascript OpenLayers在屏幕上显示所有标记,javascript,openlayers,openstreetmap,Javascript,Openlayers,Openstreetmap,如何获取地图上的所有标记,以便用户可以看到所有标记 我有一些记号笔。我正在地图上显示它们。 我从所有标记的lon和lat的最高值和最低值的平均值中得到中心LonLat 因此,我使用以下方法将地图设置为所有标记的中心点: map.setCenter(centerLonLat, 8); 8只是一个随机缩放级别。有没有办法计算出完美的缩放级别,以便所有标记都显示在地图上?使用 对于每个标记lonlat: newBound.extend(lonLat); 然后将其传递给函数: map.zoomToE

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

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

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

map.setCenter(centerLonLat, 8);
8只是一个随机缩放级别。有没有办法计算出完美的缩放级别,以便所有标记都显示在地图上?

使用

对于每个标记lonlat:

newBound.extend(lonLat);
然后将其传递给函数:

map.zoomToExtent(newBound);

OpenLayers提供了一种类似的方法,即避免循环。您需要将其应用于包含标记的图层:

var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);

这是一个旧线程,但随着OpenLayers的更改,我想我会发布一个新的解决方案。如果使用图层作为图层源,则可以调用以下行以适应数据周围的地图视图

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

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

您也可以使用该功能。但是因为我已经在标记上循环了,所以最好在循环中进行;我使用了您的解决方案,但不起作用,因为标记上的lonLat为null。但是我使用了
getCoords()
,工作方式如下:
bounds.extend(新的OpenLayers.Geometry.Point(marker.getCoords().lon,marker.getCoords().lat).transform(fromProjection,toProjection))这是ol2的吗?ol3解决方案是什么?
map.getView().fit(vectorSource.getExtent());