2016-04-19 3 views
-1

Для моего проекта я хочу заполнить текстовое поле координатами x и y всякий раз, когда я нажимаю на карте. У меня есть координаты, отображаемые на моем экране с этим этим стандартным кодом:получить coördinates как переменные от openlayer 3 map

var mousePositionControl = new ol.control.MousePosition({ 
    className: 'custom-mouse-position', 
    target: document.getElementById('location'), 
    coordinateFormat: ol.coordinate.createStringXY(5), 
    undefinedHTML: ' ' 
    }); 

так я подумал: если я использую mousePositionControl в качестве переменной для й и у координат я получаю это в текстовом поле. Так что я попытался это:

map.on('click', function() { 
document.getElementById("coördinates").value = mousePositionControl; 
}); 

но результат я получаю в текстовом поле заключается в следующем: [объект Object]

Может кто-нибудь помочь мне с этой проблемой?

+0

Строковое представление объекта типа 'ol.control.MousePosition' является«[объект Object]», так что код делает именно то, что вы просите его сделать , Обработчик 'click' получает объект' event', который уже содержит координаты щелчка пикселя, поэтому нет необходимости включать элемент управления. – kryger

+0

- элемент 'location', показывающий' x' и 'y'. Зачем вам нужно использовать 'x' и' y' второй раз для элемента 'coördinates'? – Nurlan

+0

В качестве побочного примечания «coördinates» и «coöperate» записываются как «координаты» и «сотрудничают» на английском языке. –

ответ

-1

Я только что понял это. Я попросил весь элемент и полосатый и заменил его, поэтому я получил то, что получил.

Код:

map.on('click', function() { 
    var show = document.getElementById("location").innerHTML; 
    var clean = show.replace('<div class="custom-mouse-position">', ""); 
    var clean_again = clean.replace('</div>', ""); 
    var split = clean_again.split(','); 
}); 
+0

Вы не должны обрабатывать html-код как строки; он не чист и может выйти из строя с некоторыми браузерами или в будущих версиях. Вместо этого рекомендуется работать с DOM, чтобы выбрать нужный элемент. –

-1
map.on('click', function(evt){ 
    document.getElementById('coördinates').innerHTML = evt.coordinate.join(", "); 
}); 
+1

Некоторые комментарии относительно того, почему это исправляет проблему, сделают это намного лучшим ответом – planetmaker

Смежные вопросы