2015-10-13 5 views
1

У меня есть взаимодействие Select и Draw в openlayers 3 (v3.9.0), и я хотел бы добавить к нему какое-то уникальное поведение. В настоящее время, после того, как нарисовано feature, я должен нажать на feature на select. Есть ли способ обойти событие click вообще и использовать функцию автоматического выбора на drawend?функция автоматического выбора после рисования

Благодаря

+0

Выберите правильный ответ, чтобы он не оставался неразрешенным. –

ответ

1

решаемые его. ol.interaction.select пожары ПОСЛЕ draw.on('drawend',()) решает сам. Хитрость заключается в том, чтобы принудительно отменить select.condition, чтобы вернуть false после добавления новой функции. См. Использование selectedFeature.push(evt.feature) и var featureadded в моем jsfiddle для получения более подробной информации.

http://jsfiddle.net/williemaddox/0um2ud3v/

2

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

selectCtrl = new ol.interaction.Select(); 
drawCtrl = new ol.interaction.Draw(); 

drawCtrl.on("drawend",function(e){ 
     selectCtrl.getFeatures(); 
     features.push(e.feature); 
}); 
+0

Это работает только в том случае, если курсор находится непосредственно над функцией при выдвижении чертежа. – wmaddox

1

Если, как я, вы также хотите, чтобы автоматически выйти из режима рисования и вернуться в режим выбора после завершения рисования (и функция выбрана), вы можете сделать что-то вроде этого:

mySelect = new ol.interaction.Select(); 
myDraw = new ol.interaction.Draw(); 
lastDrawnFeature = null; 

myDraw.on('drawend',function(e){ 
    lastDrawnFeature = e.feature; 

    // switch to select interaction 
    myDraw.setActive(false); 
    mySelect.setActive(true); 
}); 

mySelect.on('select',function(e){ 
    if (lastDrawnFeature) { 
     // Actual selection has to be done here, 
     // otherwise the last point drawn will be selected instead. 
     mySelect.getFeatures(); 
     features.clear(); 
     features.push(lastDrawnFeature); 
     lastDrawnFeature = null; 
    } 
}); 
Смежные вопросы