首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenLayers在屏幕上显示所有标记

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

Stack Overflow用户
提问于 2013-04-10 03:37:15
回答 3查看 9K关注 0票数 13

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

我有一些记号笔。我把它们显示在地图上。通过取所有标记中最高和最低数字的平均值,我得到了中心LonLat。

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

代码语言:javascript
运行
复制
map.setCenter(centerLonLat, 8);

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-10 03:58:11

使用zoomToExtent()使其正常工作

代码语言:javascript
运行
复制
var newBound = OpenLayers.Bounds();

对于每个标记lonlat:

代码语言:javascript
运行
复制
newBound.extend(lonLat);

然后将其传递给函数:

代码语言:javascript
运行
复制
map.zoomToExtent(newBound);
票数 5
EN

Stack Overflow用户

发布于 2013-04-10 14:14:18

OpenLayers getDataExtent() function here给出了一种类似的方法,即避免循环。您需要将其应用于包含您的标记的图层:

代码语言:javascript
运行
复制
var newBound = map.myLayer.getDataExtent();
map.zoomToExtent(newBound);
票数 11
EN

Stack Overflow用户

发布于 2017-12-29 04:12:29

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

代码语言:javascript
运行
复制
map.getView().fit(vectorSource.getExtent());

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15910968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档