openlayers 5: переместить центр карты на значение в пикселях - PullRequest
0 голосов
/ 26 января 2019

У меня есть карта открытых слоев 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;
};

но это не работает, оно ломает карту.

Как правильно сделать ход?

Ответы [ 2 ]

0 голосов
/ 26 января 2019

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]);
0 голосов
/ 26 января 2019

Как указано в примере документации Расширенное позиционирование вида это должно быть сделано view.centerOn(coordinate, size, position); Подробный API можно найти здесь CenterOn API

...