2016-03-11 3 views
0

Мне нужно реализовать функциональность «щелчок по функции» с помощью OpenLayers 3. Она отлично работает для всех типов функций, но при использовании «Точка» forEachFeatureAtPixel терпит неудачу, когда я нажимаю достаточно далеко от центра (достаточно близко к границе). Я создал пример здесь - https://jsfiddle.net/mstrop/4gvLhfje/7/.Openlayers 3 forEachFeatureAtPixel работает неправильно для очков

var pixel = map.getEventPixel(evt.originalEvent); 

var found = false; 

map.forEachFeatureAtPixel(pixel, function(feature, layer) 
{ 
    found = true; 
}); 

console.log((found?"":"not ") + "found"); 

Когда вы начинаете нажав на границе, и вы будете продолжать в направлении центра круга, вы увидите, что круг находится довольно далеко от границы. Пожалуйста, может кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

Проблема с геометрией точки является "скрытым" в его собственность. Он использует renderBuffer, который по умолчанию равен 100px. В случае, если радиус геометрии больше, свойство необходимо увеличить вручную.

0

Изменить

var pixel = map.getEventPixel(evt.originalEvent); 

в

var pixel = evt.pixel; 
+0

Спасибо, но нет никакой разницы - https://jsfiddle.net/mstrop/4gvLhfje/8/ – user3523426

0

Вы ищете это:

map.on('click', function(evt) { 
    var feature = map.forEachFeatureAtPixel(evt.pixel, function(ft){return ft;}); 
    if (feature) { 
    // ... 
    } 
}); 
Смежные вопросы