2016-02-22 3 views
0

У меня есть слой с перекрывающимися функциями (например, ограничивающие поля). В OL2 элемент управления выбора, по-видимому, выбирал ожидаемую функцию (например, функцию с меньшей площадью поверхности). В OL3 это, похоже, не так. Хотя я мог бы получить все функции на определенном пикселе, я бы предпочел, чтобы элемент управления select возвращал все функции, которые пересекаются с кликом. Любой способ сделать это?OpenLayers 3 выбор нескольких функций из того же уровня

ответ

0

Чтобы получить все функции в слое, которые пересекаются с помощью мыши щелкните я сделать что-то вроде этого:

map.on("click", function(event) { 
    var coordinate = event.coordinate; 
    var features = myVectorLayer.getSource().getFeaturesAtCoordinate(coordinate); 
    // Do something with the features that were clicked here... 
}); 
2

Вы можете установить multi член ol.interaction.Select в true (это позволяет выбрать все функции в координату, которую вы нажали) и добавьте событие, чтобы выбрать, какую функцию вы хотите выбрать среди всех перекрывающихся функций:

var select = new ol.interaction.Select({ 
    multi: true 
}); 

var fnHandler = function (e) { 
    e.selected; // array of selected features 
    e.target; // select interaction 
    var feature = e.selected.filter(function (feature) { 
    // do some filtering to choose what feature do you want 
    })[0]; 
    e.target.getFeatures().clear(); // unselect all features 
    e.target.getFeatures().push(feature); // select the feature you filtered 
}; 

select.on('select', fnHandler); 
Смежные вопросы