2010-05-06 4 views
3

overlay이 Google지도 오버레이이고 offsetx, offsetylatlong으로 이동하려는지도 중심에서의 픽셀 거리 인 경우 다음이 작동합니다.화면의 특정 픽셀 위치 (API v3)에 대한 Google지도의 이동 지점

var projection = overlay.getProjection(); 
var pxlocation = projection.fromLatLngToContainerPixel(latlong); 
map.panTo(projection.fromContainerPixelToLatLng(new google.maps.Point(pxlocation.x+offsetx,pxlocation.y+offsety))); 

그러나, 나는 항상지도에 오버레이가없는 map.getProjection()projection이 아니라 내가 필요로하는 방법이없는 MapCanvasProjection 반환합니다.

구체적으로 오버레이를 만들지 않고이를 수행 할 수있는 방법이 있습니까?

답변

4

아무도 더 좋은 방법을 찾지 못했기 때문에 여기 내 해결책이 있습니다. 나에게 MapCanvasProjection 개체를 제공하는 유일한 작업으로 오버레이를 만듭니다.

var helper = new google.maps.OverlayView(); 
helper.setMap(map); 
helper.draw = function() { 
    if (!this.ready) { 
     this.ready = true; 
     google.maps.event.trigger(this, 'ready'); 
    } 
}; 
var projection = helper.getProjection(); 
... 

희망이 있으면 도움이 될 것입니다. 더 나은 제안을 환영합니다.

+1

감사합니다. –

+1

Google 문서에서 "onAdd가 API에 의해 호출 될 때까지 투영이 초기화되지 않습니다." 그래서 helper.getProjection() 호출; 헬퍼를 작성하면 (자), null가 돌려 주어집니다. 따라서 이것을 사용하십시오 : helper.onAdd = function() { projection = helper.getProjection(); }; – nidheeshdas