如何让用户在地图上看到所有标记?
我有一些标记。我正在地图上显示它们。 我从所有标记的经纬度中取最高和最低值的平均值来获取中心点。
所以我使用以下代码将地图设置为所有标记的中心点:
map.setCenter(centerLonLat, 8);
8只是一个随机的缩放等级。是否有方法计算出完美的缩放等级,以便在地图上显示所有标记?
如何让用户在地图上看到所有标记?
我有一些标记。我正在地图上显示它们。 我从所有标记的经纬度中取最高和最低值的平均值来获取中心点。
所以我使用以下代码将地图设置为所有标记的中心点:
map.setCenter(centerLonLat, 8);
8只是一个随机的缩放等级。是否有方法计算出完美的缩放等级,以便在地图上显示所有标记?
OpenLayers提供了一个避免使用循环的类似方法,可以使用getDataExtent()函数。您需要将其应用于包含标记的图层:
var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);
虽然这是一个旧帖子,但由于OpenLayers的更改,我认为应该发布一个新的解决方案。如果您正在使用ol.source.Vector作为图层源,则可以调用以下代码行来适应地图视图以围绕您的数据。
map.getView().fit(vectorSource.getExtent());
此操作可将地图居中,并设置缩放级别,以便一次性查看所有数据。
使用zoomToExtent()方法使其正常工作。
var newBound = OpenLayers.Bounds();
对于每个标记lonlat:
newBound.extend(lonLat);
map.zoomToExtent(newBound);
getCoords()
并且像这样工作:bounds.extend(new OpenLayers.Geometry.Point(marker.getCoords().lon, marker.getCoords().lat).transform(fromProjection, toProjection));
- IgniteCoders