2010-02-09 4 views
1

웹 응용 프로그램에서 google maps v2를 사용하고 있습니다. 줌 또는 드래그로 인해 맵 범위가 변경되면 데이터베이스를 호출하여 레코드를 가져 오려고합니다. 지금까지는 모든 타일이로드 될 때지도 경계가 변경 될 것이라고 가정하여 tilesloaded 이벤트 핸들러를 사용했습니다.이 가정에 대한 설명도 필요합니다.Google지도 v2 경계 변경 이벤트

확대/축소하고 zoomend 이벤트를 처리하여 tilesloaded 이벤트 핸들러에서 확인한 플래그를 설정하면 새로운 경계를 사용하여 데이터베이스를 쿼리합니다. zoomend 이벤트가 발생한 후 tilesloaded 이벤트가 발생하는 한이 작동합니다. 하지만 (annoyingly) 많은 시간 전에 zoomend 이벤트가 발생하기 때문에 zoom 플래그가 tilesloaded 이벤트 핸들러에 설정되지 않고 db 호출이 발생하지 않습니다.

같은 일이 발생합니다. 그리고지도를 조금이라도 끌면 몇 번이나 타일로드 이벤트가 시작되지 않습니다. Google에서지도 타일에 대한 캐시 메커니즘을 사용합니까 (야생 추정치).

나는 bounds_changed 이벤트가 v2에서 해고되기를 바랍니다. 누군가 제발 도와주세요.

답변

2

나는 moveend 이벤트를 사용합니다. 지도가 확대되거나 이동 될 때마다 (마우스 업시) 실행됩니다.

var moveListener = GEvent.addListener(map, "moveend", function() { 
    var bounds = map.getBounds(); 
    var sw = bounds.getSouthWest(); 
    var ne = bounds.getNorthEast(); 

    var sBound = sw.lat(); 
    var wBound = sw.lng(); 
    var nBound = ne.lat(); 
    var eBound = ne.lng(); 

    // AJAX call to the database with the map bounds 
}); 
+0

답장을 보내 주셔서 감사합니다. 나는 moveend에 대해 알고 있었지만 moveend 이벤트 핸들러에서 줌/드래그 된 맵의 최신 경계를 즉시 가져올 지 여부를 알고 싶습니다. 이걸 좀 더 자세히 설명해 주시겠습니까? 답장을 다시 보내 주셔서 감사합니다. – Prashant

+0

@Prashant - 사용자가 마우스를 놓자 마자 'moveend'이벤트가 발생하여 최신 경계를 확실히 얻습니다. –

+0

크리스. 감사합니다. 지금 나에게 분명하다. – Prashant