2012-03-07 91 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

基于鼠标相对于页面的绝对位置显示菜单并且完全忽略地图(除了标记对象之外)是不是更容易?另外..地图的右键点击鼠标的位置..标记上的任何事件将始终是标记的位置。 – whiteatom 2012-03-23 02:17:15

回答

0

虽然文档说MouseEvent事件的LatLng是“经/纬度那是光标下方事件发生时,”它在第2版。

是标记的位置的行为可预期在版本3中是相同的。我不相信这是一个错误,尽管我可以看到它产生了意想不到的结果,用于右键单击。

您可能需要使用DOM右键单击事件(尽管如果不是不可能将它与标记关联起来将会很困难)。

+0

在我之前使用V2 API的版本中,侦听器位于地图对象上,而不是标记对象。当右键被捕获时,如果在标记上执行了右键单击,则在事件中通过叠加。这意味着提供的点是鼠标而不是标记。但是,这在V3中似乎不起作用,如果侦听器在地图上,右键不可用。 – ijefferyes 2012-03-07 16:24:08

相关问题