【问题标题】:openlayers 3: don't zoom in outside the imageopenlayers 3:不要在图像之外放大
【发布时间】:2017-01-10 18:26:41
【问题描述】:

我正在使用 openlayers 创建人体地图。它显示了一个人的核磁共振扫描,上面有很多标记。

完全缩小,有很多空白(或者在我的情况下,背景是黑色的黑色空间)我已经使用范围参数设置了 openlayers,因此用户无法平移超过图像大的范围。 但是当用户将鼠标悬停在其周围的空白处并滚动以进行缩放时,图像会根据光标的位置进行放大,因此主体不在视野范围内。一旦用户再次开始平移,范围就会开始播放并跳回到图像的边缘。

有没有办法在光标超出范围时禁用放大/缩小?或者,如果这不可能,我如何触发移动/平移,使其自动跳转到图像边缘?

编辑 2016 年 12 月 14 日:创建了 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();
});

【问题讨论】:

  • 创建一个 plunker 示例。它将帮助我们解决您的问题吗?
  • 我添加了一些代码和一个 jsfiddle 示例

标签: javascript jquery openlayers-3


【解决方案1】:

这是最近修复的错误。包含该修复程序的第一个版本将是 v3.21.0。带有修复链接的票是#5824

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2016-10-23
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多