gpt4 book ai didi

google-maps - 单击时显示上下文菜单(标记)

转载 作者:行者123 更新时间:2023-12-04 06:33:02 25 4
gpt4 key购买 nike

我有此代码 上下文菜单 它工作正常

google.maps.event.addListener(map, 'rightclick', function(e)
{
// start buy hiding the context menu if its open
contextMenu.hide();

var mapDiv = $(map.getDiv()),
x = e.pixel.x,
y = e.pixel.y;

// save the clicked location
clickedLatLng = e.latLng;

// adjust if clicked to close to the edge of the map
if ( x > mapDiv.width() - contextMenu.width() )
x -= contextMenu.width();

if ( y > mapDiv.height() - contextMenu.height() )
y -= contextMenu.height();

// Set the location and fade in the context menu
contextMenu.css({ top: y, left: x }).fadeIn(100);
});

我的问题是为什么这不起作用,同样的事情,但现在点击 开始标记 *点击*?
google.maps.event.addListener(startMarker, 'click', function(e) {
// start buy hiding the context menu if its open
contextMenu.hide();

var mapDiv = $(map.getDiv()),
x = e.pixel.x,
y = e.pixel.y;

// save the clicked location
clickedLatLng = e.latLng;

// adjust if clicked to close to the edge of the map
if ( x > mapDiv.width() - contextMenu.width() )
x -= contextMenu.width();

if ( y > mapDiv.height() - contextMenu.height() )
y -= contextMenu.height();

// Set the location and fade in the context menu
contextMenu.css({ top: y, left: x }).fadeIn(100);
});

其余的代码
// Create the context menu element
var contextMenu = $(document.createElement('ul')).attr('id', 'contextMenu');

// Fill our context menu with links
contextMenu.append(
'<li><a href=\"#startMenu\">Start</a></li>' +
'<li><a href=\"#stopMenu\">End</a></li>'
);

// Disable the browser context menu on our context menu
contextMenu.bind('contextmenu', function() { return false; });

// Append it to the map object
$(map.getDiv()).append(contextMenu);


// Set some events on the context menu links
contextMenu.find('a').click( function()
{
// fade out the menu
contextMenu.fadeOut(75);

// The link's href minus the #
var action = $(this).attr('href').substr(1);

switch (action) {
case 'startMenu':
$.get('something1.php', method1);
break;

case 'stopMenu':
$.get('something2.php', method2);
break;
}

return false;
});

最佳答案

我必须激活上下文菜单右键单击 map 并标记,步骤:

1) 创建一个新的 MapCanvasProjection 以使用 fromLatLngToContainerPixel 函数:

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

2)对于每个标记包括右键单击监听器:
google.maps.event.addListener(marker, 'rightclick', function() {

google.maps.event.trigger(map, 'rightclick', this);

});

3) 将 RightClick 监听器映射替换为:
g.event.addListener(this.theMap, 'rightclick', function(e)
{

try {

var lpx = overlay.getProjection().fromLatLngToContainerPixel(e.getPosition());
var latLng_r=e.getPosition();

} catch(err) {

var lpx=e.pixel;
var latLng_r=e.latLng;

}

// Shorthand some stuff
var mapDiv = $(self.theMap.getDiv()),
menu = self.theMenu,
x = lpx.x,
y = lpx.y;

// Hide the context menu if its open
menu.hide();

// Save the clicked location
self.clickedLatLng = latLng_r;

// Adjust the menu if clicked to close to the edge of the map
if ( x > mapDiv.width() - menu.width() )
x -= menu.width();

if ( y > mapDiv.height() - menu.height() )
y -= menu.height();

// Set the location and fade in the context menu
menu.css({ top: y, left: x }).fadeIn(200);
});

// Hide context menu on several events
$.each('click dragstart zoom_changed maptypeid_changed center_changed'.split(' '), function(i,name){
g.event.addListener(self.theMap, name, function(){ self.theMenu.hide(); });
});
}

关于google-maps - 单击时显示上下文菜单(标记),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com