2012-07-05 2 views
0

Il y a une option dans Openlayers sélectionnant des fonctionnalités sous le box. Mais, je veux sélectionner les caractéristiques lorsque je dessine une ligne (dessiner avec la touche Maj enfoncée main libre dessin). Dans mon script j'ai déjà implémenté le dessin et la sélection des options. Je peux dessiner une ligne et sélectionner (plusieurs) des caractéristiques indépendamment. Maintenant, je veux fusionner ce deux. Je veux sélectionner les caractéristiques qui sont touchées par ma ligne tracée. Existe-t-il un exemple d'exemple disponible?comment sélectionner la fonctionnalité en traçant une ligne dans Openlayers?

Ici, j'ai donné un exemple de code -

//Selection property--------------------------------------- 
      var selectControl = new OpenLayers.Control.SelectFeature(
       [vectorLayer], 
       { 
        clickout: true, toggle: true, 
        multiple: true, hover: false, 
        toggleKey: "ctrlKey", // ctrl key removes from selection 
        multipleKey: "shiftKey" // shift key adds to selection 
       } 
      ); 
      map.addControl(selectControl); 
      selectControl.activate(); 


var draw = new OpenLayers.Control.DrawFeature(
       vectorLayer, OpenLayers.Handler.Path, 
       {displayClass: "olControlDrawFeaturePoint", title: "Draw Features", handlerOptions: {holeModifier: "altKey"}} 
      ); 

Merci à l'avance.

Répondre

0

Vous devez enregistrer l'événement "sketchcomplete" qui va parcourir toutes les entités de la couche bo-be-selected et vérifier si elle a partagé la géométrie avec la ligne esquissée.

Quelque chose comme ça, malheureusement je ne peux pas le tester maintenant.

vectorLayer.events.register('sketchcomplete', vectorLayer, sketchCompleteFunc); 

function sketchCompleteFunc(obj) { 

    for (var i=0;i<layer-to-be-selected.features.length;i++) { 
     if (layer-to-be-selected.features[i].geometry.intersects(obj.geometry)) { 
      selectControl.select(layer-to-be-selected.features[i]) 
     } 

    } 
} 
Questions connexes