Jak mogę odznaczyć funkcję w Openlayers?

9

Jestem w stanie zidentyfikować wybrane obiekty na mojej mapie za pomocą następującego wiersza:

vector_layer.selectedFeatures

Chciałbym móc odznaczyć tę funkcję za pomocą autonomicznej funkcji (nie obsługi zdarzeń). Próbowałem użyć funkcji unselect()i unselectAll()bezskutecznie i nie mogę znaleźć żadnych przykładów tego podejścia.

Zdaję sobie sprawę, że kliknięcie wybranego obiektu można wykorzystać unselect. W tym przypadku chcę programowego rozwiązania.

djq
źródło
To nie do końca to, co próbuję zrobić, ale unSelectproblemy są omawiane tutaj: github.com/openlayers/openlayers/pull/486
djq
dzięki za sugestie. Widziałem je i próbowałem dostosować do mojej warstwy siatki. O ile wiem, każdy przykład wyboru funkcji wiązał się z jej pierwszym utworzeniem. Nie widziałem (jeszcze) działającego przykładu, w którym ładowana jest istniejąca warstwa, a użytkownik wybiera funkcje z tej warstwy. Zaczynam myśleć, że selectFeature działa tylko dla wektorów, które tworzysz w locie. Mam nadzieję, że to nieprawda, bo inaczej mam kłopoty. ;)
user2378729

Odpowiedzi:

13

OpenLayers 2: Możesz odznaczyć funkcje za pomocą unselect i unselect Wszystkie metody sterowania SelectFeature:

selectControl = new OpenLayers.Control.SelectFeature(vectorLayer);
...
map.addControls([selectControl]);
selectControl.activate();

// unselect any specific feature...
selectControl.unselect(vectorLayer.features[0]);
// ...or all features
selectControl.unselectAll();

Jeśli to nie zadziała, prawdopodobnie w twoim kodzie jest błąd.

Oto skrzypce: http://jsfiddle.net/dHxnh/1/

użytkownik1702401
źródło
Nie widzę tego w dokumentacji ... ale działa!
pakman
1

Openlayery odznaczające obiekty - różne metody

Użyj klawisza Shift, aby wybrać wiele funkcji. Użyj klawisza Ctrl, aby przełączać zaznaczenie funkcji pojedynczo. Uwaga: opcja „kliknięcia” nie działa, gdy wybrane jest „najechanie kursorem”

http://openlayers.org/dev/examples/select-feature.html

kliknij, aby odznaczyć funkcje

Mapperz
źródło
1
Przepraszamy, powinienem dodać słowo programmatic. Chcę unselectużyć funkcji, a nie kliknięcia.
djq