Javascript 获取Google Maps V3 API标记鼠标上方的鼠标光标位置
我试图在使用jQuery将光标鼠标移到标记上时,使光标位置上的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
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();
}