получить координаты карты событий openlayers 4.6.5 ~ 5 - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь получить координаты клика по карте открытых слоев. Мой код выглядит следующим образом:

const localmap = new ol.Map({
    layers: [
      new ol.layer.Tile({
        source: new ol.source.OSM()
      })
    ],
    target: 'map',
    view: new ol.View({
      center: [0, 0],
      zoom: 2
    })
  });

  function getPosition(event){
    console.log(localmap.getEventCoordinate(event));
}

  localmap.on('click', getPosition(event));

Но единственное, что я получаю таким образом, это ошибка:

Uncaught TypeError: Cannot read property 'changedTouches' of undefined

Я пытался добавить слушателя как

localmap.on('click', getPosition);

Он отображает массив при каждом клике, но это Филлы со значениями Nan.

Я попытался найти документ и все, но он слишком старый или записал функцию непосредственно в слушателе, чего я не хочу, потому что хочу иметь возможность удалить ее

У кого-нибудь есть подсказка, чтобы получить эти координаты в 4.6.5 ~ 5?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вам потребуется источник векторных данных, чтобы получить позиционные данные, такие как пиксели и координаты в выбранном вами месте. Я добавил это, попробуйте включить дополнительные вещи, и вы получите это. Обратите внимание, что координаты, которые вы получите, находятся в EPSG:3857 форме, используйте ol.proj.transform(), чтобы преобразовать их в EPSG:4326.

const localmap = new ol.Map({
        layers: [
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })
        ],
        source: vectorSource,
        target: 'map',
        view: new ol.View({
            center: [0, 0],
            zoom: 2
        })
});


var vectorSource = new ol.source.Vector({
});
var vectorLayer = new ol.layer.Vector({
    source: vectorSource
});
localmap.addLayer(vectorLayer);

localmap.on('singleclick', function (evt) {
    console.log(evt.coordinate);

    // convert coordinate to EPSG-4326
    console.log(ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326'));
});
0 голосов
/ 02 июля 2018

Хорошо, получается, что он работает только с event.coordinate, отображая координаты в SRC, определенной в слое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...