2010-09-05 158 views
3

我目前正在開發一個項目,要求我在Google Map上方放置一個div。不過,我需要將div的mousemove事件傳遞給Map。爲此,我需要從地圖容器像素座標中找到LatLng座標(因爲觸發地圖mousemove事件需要LatLng座標)。Google Maps API V3:fromContainerPixelToLatLng

是否有任何其他方式將div移動到地圖上的鼠標移動事件,如果不是,我該如何從Map容器​​座標轉到LatLng。我讀到這樣做需要創建一個虛擬覆蓋圖,然後使用getProjection()獲得MapCanvasProjection,最後調用fromContainerPixelToLatLng()。有沒有更簡單的方法,或者我真的必須先創建一個虛擬覆蓋?

+0

看到http://code.google.com/intl/ vi/apis/maps/documentation/javascript/maptypes.html#Projections – 2011-03-16 07:35:57

回答

1

據我所知,這是你必須這樣做的方式。起初我也很不情願,因爲它看起來像這樣的矯枉過正,但是一旦我做到了,一切都很好。這裏有一個方便delayedInit()回調的範例:

function Dummy(map) { 
    this.setMap(map); 
} 
Dummy.prototype = new google.maps.OverlayView(); 
Dummy.prototype.draw = function() { 
    if (!this.ready) { 
     this.ready = true; 
     google.maps.event.trigger(this, 'ready'); 
    } 
} 
Dummy.prototype.onAdd = function(){ 
    // the Overlay dummy is ready and can be called upon 
    delayedInit(); 
} 
var dum; 

...和你實例化你的谷歌地圖後:

dum = new Dummy(map); 
+0

謝謝你。試驗後,我在同一個地方結束了。雖然,我只是定義了draw,onAdd和onRemove函數,並將它們留空。像魅力一樣工作!謝謝。 – Jibran 2010-11-02 13:39:45