2012-05-23 8 views

Odpowiedz

3

sposób, aby osiągnąć cel, który jest zarejestrowanie zdarzenia na razie „zoomend” na mapie z czymś jak

map.events.register(type, obj, listener); 

można znaleźć więcej informacji tam: http://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Map-js.html

Może powinieneś także załadować zarówno twojego kml, a następnie ukryj/pokaż właściwą warstwę, zależy od poziomu powiększenia.

+0

chcę, że każda zmiana zoom zrobić something.Th zdarzenie, że włożona jest zoom_changed ale nie jest working.maybe masz listę wszystkich wydarzeń – user1365697

6

Jako wspomniany j_freyre należy zarejestrować funkcję, która zmienia widoczność twoich warstw KML, na "zoomend" -event. W twoim przypadku to musi wyglądać następująco:

map.events.register("zoomend", map, zoomChanged); 

zoomChanged() 
{ 
    zoom = map.getZoom(); 
    if (zoom == 3) 
    { 
    kml1.setVisibility (true); 
    kml2.setVisibility (false); 
    } 
    else if (zoom == 4) 
    { 
    kml1.setVisibility (false); 
    kml2.setVisibility (true); 
    } 
} 
+0

Bardziej wydajne jest przechowywanie wartości 'getZoom' w zmiennej typu' zoom = map.getZoom(); ', a następnie sprawdzanie jej w instrukcjach if takich jak' if (zoom == 3) '. W ten sposób unikasz wywoływania 'getZoom' za każdym razem. – Mahdi

+0

W pełni się z tobą zgadzam i edytuję moją odpowiedź. – ischas

Powiązane problemy