openlayers - 使用 OpenLayers 放大单个点簇
问题描述
我有很多点使用ol.source.Cluster
. 我需要放大单个集群扩展,我正在尝试使用以下代码执行此操作:
map.on('singleclick', event => {
extent = feature.getGeometry().getExtent();
options = {
size: map.getSize(),
padding: [50, 50, 50, 50],
duration: 1000
}
map.getView().fit(extent, options);
})
当该点未聚类并单击它时,我可以在地图中心正确看到它,并且比例线从 2000 公里移动到 50 毫米;但是当我有一个点集群时,当我点击集群时,我看到比例线从 2000 公里移动到 50 毫米,我看不到这些点。
我该如何解决?
解决方案
簇的几何形状是显示簇的单个点。当您放大集群时,将扩展到单个要素,因此您应该使用这些范围:
import (createEmpty, extend} from 'ol/extent'
...
extent = createEmpty();
feature.get('features').forEach(function(feature){
extend(extent, feature.getGeometry().getExtent());
});
...
map.getView().fit(extent, options);
推荐阅读
- java - 从服务发送短信
- angular - ionic 4 - 动态改变导航过渡方向
- continuous-integration - Buildbot 设置和混淆密码集作为构建属性
- r - 检验回归系数是否显着小于 1(单尾 t 检验)
- python - 使用 python 从 yaml 读取和转储 [bracket, list]
- flutter - 当我尝试仅显示一半的 response.body 时如何在控制台中显示 response.body
- java - 如何从邮件中读取附件?
- python - 如何使用 json 格式的查询在 tinydb 中搜索条目?
- javascript - 如果条件无法正常工作,则在 php 中进行字符串比较
- c++ - 为什么我不能为一个 asio io_service 使用两个计时器?