右键单击标记 - Google Maps V3

Sea*_*son 5 javascript jquery google-maps right-click google-maps-api-3

我一直在尝试对我的标记进行右键单击,但到目前为止,似乎该事件并未触发。作为一种解决方法,我目前正在检测地图上的右键单击,然后找到最近的标记并触发右键单击方法 - 显然那不是很好。

根据文档,标记确实有一个右键单击事件,所以我不确定我做错了什么。https://developers.google.com/maps/documentation/javascript/reference#Marker

google.maps.event.addListener(marker, 'rightclick', handleRightClick)
Run Code Online (Sandbox Code Playgroud)

不起作用但是

google.maps.event.addListener(map, 'rightclick', handleRightClick)
Run Code Online (Sandbox Code Playgroud)

工作正常。就像:

google.maps.event.addListener(marker, 'click', handleRightClick)
Run Code Online (Sandbox Code Playgroud)

我还使用了一个名为 markerWithLabel 的自定义标记插件 - http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.9/docs/reference.html - 我以为我'当我发现这并没有为右键单击添加事件侦听器时,我破解了它,但是即使我在自己中添加了一个事件侦听器,仍然没有运气。我在第 257 行添加了这个:

google.maps.event.addDomListener(this.eventDiv_, "rightclick", function(e) {
    if (me.marker_.getClickable()) {
        google.maps.event.trigger(me.marker_, "rightclick", e);
        cAbortEvent(e);
    }
})
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过类似的问题或找到更好的解决方法?

提前致谢。

ame*_*iel 4

假设您有地图对象,它被称为 globalmap (您创建了一个新的 google.maps.Map)

这将在地图中心添加一个标记:

var newmarker=new google.maps.Marker({map:globalmap, position: globalmap.getCenter()});
Run Code Online (Sandbox Code Playgroud)

这将监听标记上的右键单击;

google.maps.event.addListener(newmarker,  'rightclick',  function(mouseEvent) { alert('Right click triggered'); });
Run Code Online (Sandbox Code Playgroud)

编辑:关于MarkerWithLabel插件,我可以看到它是从google.maps.OverlayView扩展的,并在对象的marker_属性中传递一个标记。这意味着您仍然可以按自己的方式做(从示例中复制):

 var marker1 = new MarkerWithLabel({
   position: homeLatLng,
   draggable: true,
   raiseOnDrag: true,
   map: map,
   labelContent: "$425K",
   labelAnchor: new google.maps.Point(22, 0),
   labelClass: "labels", // the CSS class for the label
   labelStyle: {opacity: 0.75}
 });
Run Code Online (Sandbox Code Playgroud)

然后添加右键单击行为

google.maps.event.addListener(marker1.marker_,  'rightclick',  function(mouseEvent) { alert('Right click triggered'); });
Run Code Online (Sandbox Code Playgroud)