限制打开图层地图拖出屏幕

Mat*_*Mat 2 javascript openlayers

我希望我的开放图层地图适合整个屏幕.我希望用户能够在里面导航,缩放和拖动它.

这是一个小提琴:http://jsfiddle.net/mhicauber/t8K4p/1/

我的问题是我不明白我在制作地图时给出的一些价值观:

mapLayer = new OpenLayers.Layer.Image(
     'My map',
     'http://tchanca.com/private/Masse1080.jpg',
 OpenLayers.Bounds.fromString("-160,-90.0,160,90.0"), new OpenLayers.Size(screenSize.width, screenSize.height), {
     maxExtent: OpenLayers.Bounds.fromString("-160,-90.0,160,90.0")
 });
Run Code Online (Sandbox Code Playgroud)

使用这些值,用户可以将地图的一部分拖出屏幕.如果我将maxExtent值更改为0,0,0,0,那么,map将包含在屏幕中,并且不能拖到外面但是只要我放大,我就无法拖动地图.

有什么-160,-90.0,160,90.0价值可以参考?我应该用什么代码:

  • 使地图适合加载时的屏幕
  • 允许用户缩放和拖动它
  • 但限制拖动到屏幕大小?

非常感谢你.请原谅我对制图学缺乏了解,我对这个问题很不错...

Blu*_*oid 12

对于那些来到这里并使用OpenLayers 3的人来说,这里有一些可能有用的信息.

没有更多的限制范围.相反,您必须在图层和视图中设置"范围"选项.

也没有更多的OpenLayers.Bounds.而是使用ol.extent,这是一个包含4个值的数组.

例:

var maxExtent = ol.proj.transformExtent([-122.445717,47.576989,-122.218094,47.71623], 'EPSG:4326', 'EPSG:3857')
    var map = new ol.Map({
      layers: [
        new ol.layer.Tile({
          source: new ol.source.Stamen({
            layer: 'watercolor'
          }),
          extent: maxExtent
        }),
        new ol.layer.Tile({
          source: new ol.source.Stamen({
            layer: 'terrain-labels'
          }),
          extent: maxExtent
        })
      ],
      target: 'map',
      view: new ol.View({
        center: ol.proj.transform(
            [-122.333407, 47.607436], 'EPSG:4326', 'EPSG:3857'),
        extent: maxExtent,
        zoom: 14
      })
    });
Run Code Online (Sandbox Code Playgroud)

  • 我有一个ol.layer.Image与ol.source.ImageStatic,但似乎我仍然可以将'地图'移动到最左边/右边(顶部/底部),它停在'中心',但我希望它停在边缘(即左边缘最大值是图像的左边缘) (2认同)
  • 确实dan2k3k4,范围似乎是在地图的中心强制执行,而不是在边缘.即地图的中心将始终在提供的范围内. (2认同)