2013-02-27 11 views
7

Aktualnie tworzę funkcję "przeszukuj obszar" dla witryny, nad którą pracujemy. Trochę jak ten na Rightmove.Jak śledzić zmiany zdarzeń w wielokącie za pomocą interfejsu Google Maps API

Mam wszystko uruchomione, z wyjątkiem możliwości śledzenia zmian zdarzeń w wielokącie (ustawianie nowych punktów i modyfikowanie istniejących). Muszę być w stanie opublikować współrzędne do formularza do przesłania.

Próbowałem już dokumentów Google Code dla editing events. I za każdym razem, gdy go wypróbowuję, albo otrzymuję komunikat o tym, że "set_at" nie jest możliwe, albo mój obiekt nie jest zdefiniowany.

Przypuszczam nieco wiem, to źle jest thePolygon zmienna nie zostanie przeniesione na nowego google.maps.event.addListener(thePolygon, 'set_at', function() { // grab paths for infoWindow grabPaths(thePath); });

Ale nie wiem dlaczego. Jest to zmienna globalna. Czy nie jest?

Pytanie brzmi: jak mogę śledzić zmiany w wielokącie, aby przekazać zaktualizowane współrzędne do mojego formularza?

Cała pomoc jest bardzo doceniana.

Oto kod Obecnie mam:

var mapOptions = { 
    // options 
}; 

var map = new google.maps.Map(document.getElementById('map'), mapOptions); 

var drawingManager = new google.maps.drawing.DrawingManager({ 
    drawingMode: google.maps.drawing.OverlayType.POLYGON, 
    drawingControl: false, 
    polygonOptions: { 
    // drawing options 
    } 
}); 

drawingManager.setMap(map); 

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) { 
    // complete functions 
}); 

google.maps.event.addListener(thePolygon, 'set_at', function() { 
    // complete functions 
}); 

google.maps.event.addListener(thePolygon, 'insert_at', function() { 
    // complete functions 
}); 

Odpowiedz

22

te wydarzenia są zdefiniowane dla MVCArray, polilinia nie jest MVCArray. Musisz obserwować zdarzenia dla polilinii (która jest to MVCArray) w postaci path. Ponadto nie można dodać detektora do obiektu, który nie został jeszcze utworzony. Wielokąt nie jest dostępna przed polygoncomplete, więc trzeba dodać słuchaczy wewnątrz polygoncomplete-zwrotnego:

google.maps.event.addListener(drawingManager,'polygoncomplete',function(polygon) { 

    // complete functions 

    google.maps.event.addListener(thePath, 'set_at', function() { 
    // complete functions 
    }); 

    google.maps.event.addListener(thePath, 'insert_at', function() { 
    // complete functions 
    }); 

}); 
+0

Ha ha, działa wspaniale. Byłem tak blisko, a jednak daleko. Dzięki za pomoc. Zostało to bardzo docenione. To było chwytanie zmian ścieżek, których nie mogłem zgłębić. To było takie proste. –

+0

Zobacz http://stackoverflow.com/questions/12515748/event-after-modifying-polygon-in-google-maps-api-v3 – jjwdesign

+5

użyj 'polygon.getPath()' zamiast 'thePath' –

Powiązane problemy