如何解决OpenLayers:将地图锁定到向量的范围
我正在学习如何使用OpenLayers在JavaScript中创建一个库。通常,我使用以下代码将地图锁定在手动传递的矢量范围上。
var minX= 3.0025038498794938;
var minY= 47.7706339888675302;
var maxX= 5.1702255722362533;
var maxY= 49.5690401585264695;
var maxExtent = [minX,minY,maxX,maxY];
var boundary = ol.proj.transformExtent(maxExtent,'EPSG:4326','EPSG:3857');
var center = ol.proj.transform([4.0863647111,48.6698370737],'EPSG:3857');
var view = new ol.View({
extent: boundary,center: center,zoom: 9,maxZoom: 18,minZoom: 8,});
map.setView(view);
我的目标是使用相同的方法,但使用特定功能内的向量范围。我可以在矢量扩展名上缩放加载地图:
function getPolygonsExtent() {
vectorsLayer.getSource().once('change',function(evt) {
if (vectorsLayer.getSource().getState() === 'ready') {
if (vectorsLayer.getSource().getFeatures().length > 0) {
extent = vectorsLayer.getSource().getExtent();
options = {
size: map.getSize(),padding: [0,0],}
map.getView().fit(extent,options);
}
}
});
};
但是我不知道如何实现自己的目标。我以为有一个像map.getView().setExtent(extent);
这样的函数,但事实并非如此。有什么建议吗?
解决方法
没有setExtent()
方法,因此您需要创建一个新视图
map.getView().fit(extent,options);
var newView = new ol.View({
extent: extent,showFullExtent: true,center: map.getView().getCenter(),zoom: map.getView().getZoom(),maxZoom: 18,minZoom: 8,});
map.setView(newView);
fit()
方法适合地图内的范围,但是默认情况下,extent选项将地图限制在范围内,请使用showFullExtent
来实现与fit()
类似的行为。如果适合选项包括duration
,则在以内联代码完成视图后,还需要callback
更新视图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。