2014-10-17 4 views
6

Я пытаюсь обновить свою систему от Openlayers 2 до Openlayers 3, и у меня есть одна конкретная проблема, которую я не могу понять.Openlayers 3: Выбор функции программно

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

В OpenLayers 2 я использовал следующее:

self.selectControl.select(feature[0]); 

Я не могу найти или понять, как сделать то же самое в OpenLayers 3.

Так быть понятно, у меня есть функция, которую я нашел программно, и я хочу выбрать эту функцию на карте (программно)!

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

ответ

10

Для этого вам нужно сделать следующее:

mySelectControl.getFeatures().clear() -> removes the selected items 

mySelectControl.getFeatures().push(featureToSelect) -> selects the applied feature 
+0

Вы можете пометить это как 'accepted', если вы счастливы с решением? Благодарю. :) –

+0

@bebraw - я буду, когда StackOverflow позволит мне, говорит, что я должен ждать еще час (со времени написания) –

+1

Спасибо за это. Это далеко не очевидно в любой официальной документации или в любом из примеров, которые я нашел, что вы можете 'push()' в массив 'getFeatures()'. _ [Да, я знаю, это связано с определением 'ol.Collection', но это очевидно только в ретроспективе] _ – Auspex

1
  1. Добавить отборное взаимодействие на карту.

    var selectInteraction = new ol.interaction.Select(); 
    map.addInteraction(selectInteraction); 
    
  2. Добавить любые функции, которые вы хотите выбрать в массиве функций выбора взаимодействия.

    selectInteractions.getFeatures().push(featureToSelect); 
    
0
var selectInteraction = new ol.interaction.Select(}); 
map.addInteraction(selectInteraction); 

function highlightFeature(feat){ 
    selectInteraction.getFeatures().push(feat); 
    selectInteraction.dispatchEvent({ 
     type: 'select', 
     selected: [feat], 
     deselected: [] 
    }); 
} 

работает как полукокса на последних OpenLayers 4.5