GMap primefaces组件中的ContextMenu



有谁知道如何创建一个primefaces上下文菜单,它将在GMap上右键单击时启动?

正常情况下,代码应该是这样的:

<p:gmap id="gmapElement" widgetVar="gmtls" center="41.381542, 2.122893" zoom="15" type="hybrid" styleClass="mapClass"/>
<p:contextMenu for="gmapElement" >  
    <p:menuitem value="Method A" onclick="method1()" />  
    <p:menuitem value="Method B" onclick="method2()" />  
</p:contextMenu>  

但是,google api覆盖了右键事件。我认为最好的处理方法是在谷歌地图中增加一个监听器。但是我找不到任何信息如何显示上下文菜单编程:

var mapComponent = gmtls.getMap();
google.maps.event.addListener(mapComponent, 'rightclick', function(mouseEvent) {
    //show context menu at coordinates: mouseEvent.latLng
});

谁能告诉我应该在听众体中放些什么?

所以这就是我一直在寻找的答案。在GMap组件初始化期间,必须注册google maps API中的附加侦听器:

var mapComponent = gmtls.getMap();
google.maps.event.addListener(mapComponent, 'rightclick', function(mouseEvent) {
    $(PrimeFaces.escapeClientId('mainForm:contextMenu')).css({
        top: yPos+'px',
        left: xPos+'px'                        
    }).show();
});

获取坐标(yPos, xPos)最简单的方法是使用jQuery来监听mouseMove事件:

var xPos = 0;
var yPos = 0;
jQuery(document).ready(function(){
    $(document).mousemove(function(e){
        xPos = e.pageX;
        yPos = e.pageY;
    }); 
})

相关内容

  • 没有找到相关文章

最新更新