Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取Google Maps V3 API标记鼠标上方的鼠标光标位置_Javascript_Jquery_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 获取Google Maps V3 API标记鼠标上方的鼠标光标位置

Javascript 获取Google Maps V3 API标记鼠标上方的鼠标光标位置,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我试图在使用jQuery将光标鼠标移到标记上时,使光标位置上的div可见。它有点像一个工具提示。但是,我似乎不知道如何获得光标下方点的X/Y坐标 当前代码: google.maps.event.addListener(marker, "mouseover", function(event) { $("#tooltip").css({ position: "absolute", top: event.pageY, left: event.p

我试图在使用jQuery将光标鼠标移到标记上时,使光标位置上的
div
可见。它有点像一个工具提示。但是,我似乎不知道如何获得光标下方点的X/Y坐标

当前代码:

google.maps.event.addListener(marker, "mouseover", function(event) {

    $("#tooltip").css({
        position: "absolute",
        top: event.pageY,
        left: event.pageX
    }).toggle();
我相信
event
没有jQuery事件中的
pageY
pageX
属性


如何获取鼠标光标的位置?将以下代码添加到侦听器函数中:

// to display a tooltip:
marker.setTitle("Hi");

// to get the geographical position:
var pos = marker.getPosition();
var lat = pos.lat();
var lng = pos.lng();
// ...

这是我先前关于像素位置计算的回答(Google maps API v3)的扩展。引入一个“全局”变量
覆盖

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map); // 'map' is new google.maps.Map(...)
在侦听器中使用
overlay
获取投影和像素坐标:

google.maps.event.addListener(marker, 'mouseover', function() {
    var projection = overlay.getProjection(); 
    var pixel = projection.fromLatLngToContainerPixel(marker.getPosition());
    // use pixel.x, pixel.y ... (after some rounding)
}); 

您还可以查看投影。从latlngtodivpixel()

对我有效的解决方案更直接:

map.data.addListener('mouseover', function (event) {
    posX = event.ub.clientX;
    posY = event.ub.clientY;
});

这给了鼠标位置,适合我

function CanvasProjectionOverlay() { }

CanvasProjectionOverlay.prototype = new google.maps.OverlayView();
CanvasProjectionOverlay.prototype.constructor = CanvasProjectionOverlay;
CanvasProjectionOverlay.prototype.onAdd = function () { };
CanvasProjectionOverlay.prototype.draw = function () { };
CanvasProjectionOverlay.prototype.onRemove = function () { };
在初始化函数中

canvasProjectionOverlay = new CanvasProjectionOverlay();
canvasProjectionOverlay.setMap(map);
像这样使用它

google.maps.event.addListener(marker, 'mouseover', function(event) { 
   var divPixel = canvasProjectionOverlay.getProjection().fromLatLngToContainerPixel(event.latLng);
   x = divPixel.x;
   y = divPixel.y;
}); 

这里有一个解决方案,它使用click事件的MouseEvent,但不依赖于通过一个可以随时更改的未记录属性(如“ub”或“wb”(我认为当前是“ya”)访问它

map.data.addListener('mouseover',函数(e){
var-keys=Object.keys(e);
变量x,y;
对于(变量i=0;i
如何转换为相对于文档或div的latlng坐标?转换“latlng->pixel coordinates”在我的第二个答案中给出。我也在没有google map api的情况下使用jquery解决了这个问题,但你提出的解决方案更好:)嗯,这不是鼠标光标的位置,而是监听事件的标记的位置耶,我也想要鼠标位置,如果你真的想得到这个值@Robin,我知道一种(非常粗糙的)方法来获得它。如果你愿意,我可以把它贴在这里。但它需要jQuery,因为它涉及延迟事件。这不再有效。你需要event.wb.clientX,叠加答案是唯一有效的答案。关于ub和wb,你是对的。我会去试试这个答案。我不知道为什么它对其他人都不起作用。这是一个完美的答案。请解释为什么这根本不是Jiri答案的复制品?它也和Jiri的答案一样,不提供鼠标坐标。它提供标记坐标。
map.data.addListener('mouseover', function (e) {
    var keys = Object.keys(e);
    var x, y;
    for (var i = 0; i < keys.length; i++) {
        if (MouseEvent.prototype.isPrototypeOf(e[keys[i]])) {
            x = e[keys[i]].clientX;
            y = e[keys[i]].clientY;
        }
    }
});
mapObject.marker.addListener("mouseover", (event) => {
  //USE THE COORDINATES HERE = { lat: event.latLng.lat(), lng: event.latLng.lng();
}