2016-06-02 2 views
-1

У меня есть карта с некоторыми надписями (DIVs с текстовым контентом). У меня зарегистрировано событие «click» для этой карты:Как правильно отправить событие для карты Openlayer 3?

map.on('click', function(evt) { 
    var click_coordinates = evt.coordinate; 
}); 

Он отлично работает, пока пользователь не нажмет наложение. В этом случае событие, вероятно, захватывает Overlay, но оно не распространяется на карту. Это нормально для некоторых ситуаций, но иногда мне нужно, чтобы событие обрабатывалось с помощью карты. Поэтому я поймать событие щелчка на Overlay, и я стараюсь делать отправить его на элемент карты по

map.dispatchEvent("click"); 

Хорошая вещь, событие на карте обжигают, к сожалению, это «другой» объект, чем изначально, как он не содержит атрибута «координат» и других материалов Openlayers. Есть ли способ, как отправить событие так же, как естественный щелчок на карте?

ответ

0

Вы можете достичь с этим:

// content is ol.Overlay#element therefore a DOM element 
content.addEventListener('click', function(evt){ 
    map.dispatchEvent(evt); 
}); 

map.on('click', function(evt){ 
    var pixel = [evt.clientX, evt.clientY]; 
    var coord = map.getCoordinateFromPixel(pixel); 

    console.info('event', evt); 
    console.info('pixel', pixel); 
    console.info('coord', coord); 
}); 

Или просто:

content.addEventListener('click', function(evt){ 
    var pixel = [evt.clientX, evt.clientY]; 
    var coord = map.getCoordinateFromPixel(pixel); 

    console.info('event', evt); 
    console.info('pixel', pixel); 
    console.info('coord', coord); 
}); 
+0

Возможно, мне не хватает точки, но это даст мне стандартный объект события вместо ПР даже объект (например, ЭВТ .координат отсутствует). Это означает, что та же самая процедура не может использоваться для обращения к клику по клику и клику объекта, или нужно предварительно преобразовать событие щелчка объекта (например, var coord = map.getCoordinateFromPixel (пиксель) для получения координат), прежде чем перейти к процедуре map.click , Вот почему я спрашивал о том, как отправить мероприятие так же, как естественный щелчок на карте, так как я верю, что OL имеет естественный способ сделать это. – user3523426

+0

Тогда ваш ответ ** НЕТ, нет никакого способа сделать это **. –

+1

В своем ответе я сказал: «Вы можете ** достичь ** с помощью ...» –

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