[英]openlayers 3: don't zoom in outside the image
我正在使用openlayers创建人体贴图。 它显示了一个人的mri扫描,上面有很多标记。
完全缩小后,有很多空白(或者在我的情况下为黑色,因为背景是黑色的),我使用extent参数设置了openlayers,因此用户无法平移得比图像大。 但是,当用户将鼠标悬停在其周围的空白上并滚动以进行缩放时,图像将根据光标的位置放大,因此主体不在视线范围内。 用户再次开始平移后,范围就会开始播放并跳回到图像的边缘。
当光标在范围之外时,有没有办法禁用放大/缩小? 还是如果不可能,如何触发移动/平移,使其自动跳到图像边缘?
编辑14/12/2016:创建一个JSFiddle来说明此问题。
以及在那里运行的代码:
var pbm = {};
pbm.vars = {};
pbm.vars.extent = [0, 0, 1536, 5120];
pbm.vars.projection = new ol.proj.Projection({
code: 'xkcd-image',
units: 'pixels',
extent: pbm.vars.extent
});
/**
* initMap
* --------
* triggered by pbm.parseCases!
* outputs the bodymap to the #body-div
* this functions needs all the other ol-elements to work!
*/
pbm.initMap = function(){
pbm.map = new ol.Map({
layers: [
new ol.layer.Image({
source: new ol.source.ImageStatic({
url: 'https://s3-eu-west-1.amazonaws.com/norvell-philips/bodymap-static-hiress.jpg',
projection: pbm.vars.projection,
imageExtent: pbm.vars.extent
})
})
],
target: 'body',//Div#body
view: new ol.View({
projection: pbm.vars.projection,
center: ol.extent.getCenter(pbm.vars.extent),
zoom: 2,
maxZoom: 5,
minZoom: 1,
extent: pbm.vars.extent
}),
renderer: 'canvas',
controls: ol.control.defaults({attribution:false, rotate: false, zoom:false}),
interactions: pbm.vars.interactions
});
}
$(document).ready(function(){
pbm.initMap();
});
这是一个最近修复的错误。 包含此修复程序的第一个版本将是v3.21.0。 带有修复程序链接的凭单是#5824 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.