2012-03-27 83 views
0

我想做我自己的js彈出,同時在標誌點擊。 因爲我沒有在API中關於這一發現任何東西,我只是想 得到 鼠標的xy POS的,而且比「繪圖」我的股利。谷歌地圖V3:對標記定義彈出鼠標點擊xy位置,fromLatLngToContainerPixel

找到這個例子:

Get Position of Mouse Cursor on Mouseover of Google Maps V3 API Marker

但是當我做的console.log(marker.getPosition())始終是0,0。

任何人這樣做是自己的自定義彈出,並且可以給我一個提示如何做到這 ? 我應該用「fromLatLngToContainerPixel」還是另有 優雅的方式?

這裏是一些代碼。 _spots是一個json對象。

for (var i = 0; i <= _spots.length; i++) { 

     var myLatLng = new google.maps.LatLng(_spots[i].lat, _spots[i].long); 
     var spotMarker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
      title: _spots[i].name, 
      animation: google.maps.Animation.DROP, 
      icon: image, 
      street: _spots[i].street, 
      zipcode: _spots[i].zipcode, 
      info: _spots[i].info, 
     }); 

     markersArray.push(spotMarker); 

     google.maps.event.addListener(spotMarker, 'click', function() { 
      console.log(this); 

      alert(spotMarker.getPosition());   // -> at this point I get 0,0 
      var projection = overlay.getProjection(); 
      var pixel = projection.fromLatLngToContainerPixel(spotMarker.getPosition()); 
      console.log(pixel); 

     });  
} 

最好的問候, SV

+0

marker.getPosition不應該返回座標,而是google.maps.latLng。你可以發佈一些代碼嗎?有時候(我遇到過這種情況)標記將返回未定義的getPosition,除非你明確設置了position()。看到這裏http://code.google.com/p/gmaps-api-issues/issues/detail?id=3023 – Pete 2012-03-27 10:16:38

+0

在這裏,我們去....參見上文 – 2012-03-27 22:50:37

回答

0
for (var i = 0; i <= _spots.length; i++) 

這必須是:

for (var i = 0; i < _spots.length; i++) 

否則最後的循環將在非法偏移點。

但是,你應該使用

alert(this.getPosition()); 

..to訪問點擊的標記。

spotMarker總是會返回相同的標記(已創建了最後一個)