0

我有一个由以下内容生成的 openlayers 5 地图:

// create the map with the proper center
var map = new ol.Map(
    {
        view: new ol.View(
            {
                center: ol.proj.fromLonLat([center.long, center.lat]),
                zoom: zoom
            }
        ),
        layers: [
            new ol.layer.Tile(
                {
                    source: new ol.source.OSM()
                }
            )
        ],
        target: 'mapdiv',
    }
);

我想通过单击元素将地图的中心移动 [10, 10] 像素,并且我正在尝试以下事件:

document.getElementById('mover').onclick = function() {
  center = map.getView().getCenter();
  map.view.setCenter(center[0] + 10, center[1] + 10);
  return false;
};

但它不起作用,它破坏了地图。

实现移动的正确方法是什么?

4

2 回答 2

5

map.view将导致错误,应该是map.getView() 您需要将像素乘以分辨率(即每像素米)以将移动距离从像素转换为米

var center = map.getView().getCenter();
var resolution = map.getView().getResolution();
map.getView().setCenter([center[0] + 10*resolution, center[1] + 10*resolution]);
于 2019-01-26T13:37:06.653 回答
1

如示例文档Advanced View Positioning中所述, 您可以在此处的CenterOn APIview.centerOn(coordinate, size, position);中找到详细的API

于 2019-01-26T13:16:24.743 回答