缩放到图层范围1
需积分: 0 36 浏览量
更新于2022-08-03
收藏 763KB PDF 举报
在本文中,我们将探讨如何使用OpenLayers库实现地图视图的缩放和平移,特别是在图层范围内。OpenLayers 是一个流行的开源JavaScript库,用于创建交互式地图应用。在这个特定的例子中,我们将关注如何根据图层上的几何形状(如圆圈)调整地图视图的范围。
我们需要创建一个基本的HTML结构,其中包含一个用于展示地图的`<div>`元素以及一个用于放置按钮的面板,如以下代码所示:
```html
<div id="js-map"></div>
<div>
<button id="js-zoom">Zoom to extent</button>
</div>
```
接着,我们需要引入OpenLayers库,并创建两个图层:一个栅格图层用于显示背景地图,一个矢量图层用于存放我们的几何形状。这里,我们使用Thunderforest的Cycle地图作为背景,创建一个包含三个圆圈的矢量图层:
```javascript
var rasterLayer = new ol.layer.Tile({
source: new ol.source.OSM({
attributions: [
new ol.Attribution({
html: 'Tiles courtesy of ' +
'<a href="http://www.thunderforest.com">Andy Allan</a>'
}),
ol.source.OSM.ATTRIBUTION
],
url: 'http://{a-c}.tile.thunderforest.com/cycle/' +
'{z}/{x}/{y}.png'
})
});
var vectorLayer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [
new ol.Feature(new ol.geom.Circle([-376645, 7762876], 200)),
new ol.Feature(new ol.geom.Circle([-375955, 7762195], 200)),
new ol.Feature(new ol.geom.Circle([-376953, 7761632], 200))
]
})
});
```
然后,我们需要创建一个地图实例并设置初始视图的中心和缩放级别:
```javascript
var map = new ol.Map({
view: new ol.View({
zoom: 11,
center: [-372592, 7763536]
}),
target: 'js-map',
layers: [rasterLayer, vectorLayer]
});
```
我们要为按钮添加点击事件监听器,以便在点击时执行缩放和平移操作。在OpenLayers中,我们可以通过`beforeRender`方法添加动画效果,然后使用`fit`方法来调整视图以适应图层的范围:
```javascript
document.getElementById('js-zoom')
.addEventListener('click', function() {
map.beforeRender(
ol.animation.pan({ source: map.getView().getCenter(), duration: 150 }),
ol.animation.zoom({ resolution: map.getView().getResolution() })
);
map.getView().fit(vectorLayer.getSource().getExtent());
});
```
在这个示例中,`fit`方法会计算所有几何形状的边界框(即范围),然后调整地图视图以完全显示这个范围。同时,我们使用了`pan`和`zoom`动画,使得这一过程更加平滑自然。在点击按钮后,地图会平滑地移动到图层的边界,并缩放到刚好能完全显示所有几何形状的级别。
总结来说,这个例子展示了如何使用OpenLayers来实现基于图层几何形状的动态地图视图调整。通过结合`fit`方法、动画效果和用户交互,我们可以创建出更加直观、响应式的地图应用。这在Web开发中的地理信息系统(GIS)应用中尤其有用,可以帮助用户更好地探索和理解地图数据。
lowsapkj
- 粉丝: 1015
- 资源: 312
最新资源
- 核密度估计及ks检验确定最优核密度估计 使用Normal、box、triangle、Epanechnikov四种方法,默认是Normal 矩形框颜色可以自定义设置 可以对实际数据进行更精确的概率分布拟
- foc风机方案 高压 支持顺风启动 使用弦波 svpwm驱动方式 使用龙贝格观测器 无感FOC方案 包括原理图,源代码
- PSO优化极限学习机ELM matlab代码,备注详细,易于使用
- 细说数据分析模型之RFM模型以及代码实现
- 汽车EPB仿真模型,Carsim和Simulink联合仿真 1.其中包括 制动钳系统 的动力学建模 2.电机的转角三环pid控制,可以在模型中通过与制动钳模型的结合,实现电机的堵转效果,真实还
- COMSOL 激光烧蚀3D体热源引力场温度场仿真
- COMSOL 3D脉冲激光刻槽
- Simulink仿真:级联光伏发电MPPT追踪并网 关键词: 参考文献:具备同步电机特性的级联型光伏发电系统+视频讲解 仿真平台:MATLAB Simulink 主要内容:3个单独光伏发电MPPT级联
- FOC电流环模块进行,包含Park,Clark变,id、iq PI控制,限幅输出,角度查表,斜率步长,配合SVPWM模块可以实现电流模式的运行,包含说明书,物有所值,非普通代码,注释超级详细
- critic法计算指标权重 根据指标数据(每行是一个样本,每列是不同变量)计算各个指标的权重值并画图展示 MATLAB代码,备注清晰,易于使用
- 高斯回归拟合x与y,带置信区间 置信区间可自定义 根据案例数据准备自己的自变量x与因变量y数据 按照相应格式替为自己数据即可 MATLAB代码,备注清晰,易于使用
- 加权拟合2个正态分布参数与比例 一组数据可能由2个正态组合形成,可以进行拟合计算得到每组正态分布的参数与比例 matlab代码,根据自己需要修改案例数据即可
- LLC,变频与移相混合控制,有参考文献 变频控制与移相控制组成的混合式控制全桥LLC谐振变器仿真(PFM+PSM混合控制) 输出电压闭环控制,软开关,宽范围,可实现调频和移相的自动切,调频和移相控制
- matlab交通标志识别系统(含gui可视化界面,完整源码,代码配详细注释,程序实现识别交通标志图片并以文字形式输出结果) 附赠报告,代码结构清晰,有注释
- IMU与GPS融合定位,扩展卡尔曼滤波,cpp实现,机器人状态估计,有注释和运行说明
- 双峰高斯分布蒙特卡洛模并画pdf和cdf图 可设置双峰组合分布中不同正态参数的分布比例,也可以对多个组合进行计算 matlab代码,备注清楚,更改为自己需要的分布比例与参数即可