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