javascript - 如何在形状上显示上下文菜单?

标签 javascript google-maps-api-3

我想通过右键单击在形状(圆形、矩形、多边形)上显示一个菜单,然后选择并在其上执行一个功能(更改颜色,...)。
1) 我首先根据我的形状定义一个事件:

google.maps.event.addListener(myShape, 'rightclick', function(event) {...}

2) 然后我定义一个 div 并创建菜单:

myMenu = document.createElement("div");
myMenu.className  = 'contextmenu';
myMenu.innerHTML = "<a id='menu1'>item 1<\/a><a id='menu2'>item 2<\/a>";

3) 在我必须将这个 div 关联到我的形状之后:
我不知道如何继续
4) 最后我必须在 event.LatLng 位置显示菜单:
我不知道如何继续,可能是这样的:

$('.contextmenu').css('left',x  );
$('.contextmenu').css('top',y );

你能帮忙吗?

最佳答案

您没有具体说明要添加上下文菜单的哪些元素,所以我只是添加了一个新圆圈并做了一些“快速而肮脏”的示例: http://jsfiddle.net/8Apwr/1/

技巧就在这里:

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);

google.maps.event.addListener(cityCircle, 'rightclick', function(event) {
   var pos = overlay.getProjection().fromLatLngToDivPixel(event.latLng);
   $('#menu').show();
   $('#menu').css("left", pos.x);
   $('#menu').css("top", pos.y);
});

为了获得最佳效果,您真的应该考虑创建一个新的自定义叠加层 (https://developers.google.com/maps/documentation/javascript/overlays#CustomOverlays) 来绘制您的上下文菜单。这样它就可以被重用,并且代码会得到更好的组织。

关于javascript - 如何在形状上显示上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068558/

相关文章:

javascript - 使用相对文件路径在 Google map 中显示自定义标记

javascript - 在 Javascript 中输入时 CSS Transition 不起作用

javascript - 如何使用谷歌地图 API 在源和目的地之间创建折线

javascript - 如何移动谷歌地图标记并获取当前的纬度和经度

javascript - 如何用 Prestashop 产品列表中的图片替换第三个产品?

google-maps - 如何使 Google map 控件具有响应性?

javascript - 谷歌地图 API 3/javascript : Markers suddenly become invisible

javascript - 使用 Ajax 的 onclick 事件更新数据库

javascript - 如何添加 fadeIn 效果或过渡到 scrolltop 菜单?

javascript - react native : How to apply ListView's contentContainerStyle to renderRow() to create grid while having renderHeader()?