2012-03-07 26 views
0

マーカ上にマーカーとリスナーを含むマップを実装しました。Google Maps API v3 MouseEventマウスの位置ではなくマーカの位置を返す

... 
google.maps.event.addListener(marker,'rightclick',function(event) {showRightClick(event, map, marker);}); 
... 

// Show Right Click Menu 
function showRightClick(event, map, marker) { 
     var point = map.getCanvasProjection().fromLatLngToContainerPixel(event.latLng); 
     var scriptInterface = getHeader(); 
     var screenX = point.x + window.screenLeft; 
     var screenY = point.y + window.screenTop; 
     scriptInterface.rightClick(marker.name, marker.objectid, marker.dimobjectid, screenX, screenY); 
} 

ただし、リスナーがトリガーすると、イベントの緯度と経度はマウスではなくマーカーのものになります。したがって、表示しようとしている右クリックメニューは、マウスの位置ではなくマーカーの下部に表示されます。

これはバグか予想される動作であるかどうかは知りませんか?

+0

マウスの絶対位置に基づいてページを基準にメニューを表示し、マップを完全に無視するだけでは(マーカオブジェクトを除いて)簡単にはできません。また、MAPの右クリックはマウスの位置です。マーカー上のイベントは常にマーカーの位置になります。 – whiteatom

答えて

0

ドキュメントはMouseEventイベントのLatLngはそれが動作を期待することができる

バージョン2中のマーカーの位置であった「イベントが発生したときにカーソルを下回った緯度/経度」であると述べているが、バージョン3と同じにする必要があります。私はそれがバグだとは思わないが、右クリックで予期しない結果が生じることがわかる。

代わりにDOMの右クリックイベントを使用する必要があります(ただし、マーカーに関連付けることは不可能ではないにしても困難です)。

+0

V2 APIを使用していた以前のバージョンでは、リスナーはマーカーオブジェクトではなくマップオブジェクト上にありました。右クリックが検出された場合、右クリックがマーカー上で実行された場合、イベントのオーバーレイを通過しました。これは、提供されたポイントがマーカではなくマウスのポイントであることを意味していました。しかし、これはV3で動作するようには見えず、リスナーがマップ上にあれば右クリックは利用できません。 – ijefferyes

関連する問題