Jquery 谷歌地图:如何在标记上准确定位OverlayView?

Jquery 谷歌地图:如何在标记上准确定位OverlayView?,jquery,google-maps,Jquery,Google Maps,我正在使用谷歌地图API 3和一个自定义覆盖(OverlyView) 我有以下代码: 请将鼠标悬停在maker上以查看工具提示覆盖 如何准确定位标记附近的工具提示弹出窗口(黄色窗口)?。我的X,Y想法不起作用,因为它与地图有关,因此如果页面的布局是流动的,我的解决方案(X,Y)就一文不值 有什么想法吗 google.maps.event.addListener(marker, 'mouseover', function(event) { var pixel = latLngToP

我正在使用谷歌地图API 3和一个自定义覆盖(OverlyView) 我有以下代码:

请将鼠标悬停在maker上以查看工具提示覆盖

如何准确定位标记附近的工具提示弹出窗口(黄色窗口)?。我的X,Y想法不起作用,因为它与地图有关,因此如果页面的布局是流动的,我的解决方案(X,Y)就一文不值

有什么想法吗

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

    var pixel = latLngToPixel.getProjection().fromLatLngToContainerPixel(event.latLng);

    // Grab marker position
    var pos = [ pixel.x, pixel.y ];

    // Create the tooltip on a dummy div and store it on the marker
    marker.tooltip = $('<div />').qtip({
        content: {
            text: 'I\'m a replacement tooltip for the regular google one<br />New line<br /> new line<br />Newer line',
            title: {
                text: 'aaa',
                button: true
            }
        },
        position: {
            at: "right center",
            my: "left center",
            target: pos,
            container: $('#map_canvas')
        },
        show: {
            ready: true,
            event: false,
            solo: true
        },
        hide: {
            event: 'mouseleave unfocus'
        }
    });

  });
}
google.maps.event.addListener(标记'mouseover',函数(事件){
var pixel=latLngToPixel.getProjection().fromLatLngToContainerPixel(event.latLng);
//抓取标记位置
var pos=[pixel.x,pixel.y];
//在虚拟div上创建工具提示并将其存储在标记上
marker.tooltip=$('').qtip({
内容:{
text:“我是常规google one的替换工具提示
新行
新行
更新行”, 标题:{ 文本:“aaa”, 按钮:正确 } }, 职位:{ 在“右中”, 我的:“左中锋”, 目标:销售点, 容器:$(“#映射_画布”) }, 展示:{ 准备好了吗, 事件:假, 索洛:是的 }, 隐藏:{ 事件:“无焦点鼠标” } }); }); }
我已经对它进行了更新和工作,删除了“右中”,删除了我的“左中”,希望你喜欢


现在通过在SO上找到的p.x和p.y访问像素坐标。希望它能对您有所帮助。

我已经对它进行了更新并正在工作,删除了“右中”,删除了我的“左中”,希望您喜欢


现在通过在SO上找到的p.x和p.y访问像素坐标。希望它能对您有所帮助。

为了以防万一有人在寻找答案,我做了以下工作:

// getting marker x,y offset from left-top map
var pixel = latLngToPixel.getProjection().fromLatLngToContainerPixel(event.latLng);
// then get the map_canvas offset with jquery
var left = $('#map_canvas').offset().left;
var top = $('#map_canvas').offset().top;
// x,y position tooltip
var pos = [ pixel.x + left, pixel.y + top];

我希望这对某人有所帮助,我花了相当多的时间

万一有人在寻找答案,我就这么做了:

// getting marker x,y offset from left-top map
var pixel = latLngToPixel.getProjection().fromLatLngToContainerPixel(event.latLng);
// then get the map_canvas offset with jquery
var left = $('#map_canvas').offset().left;
var top = $('#map_canvas').offset().top;
// x,y position tooltip
var pos = [ pixel.x + left, pixel.y + top];

我希望它能帮助别人,它花了我相当多的时间

你说的工具提示是什么意思?像一个小标签,当你在上面悬停时,它会在延迟后出现吗?或者像你点击图标时出现的实际弹出窗口?如果你将鼠标悬停在任何市场上,你会看到一个黄色窗口,这就是我关于工具提示的意思,你想要它在哪里?直接在谷歌弹出窗口上?为什么?如果你想覆盖弹出窗口,为什么不把它从地图上取下来,做一个自定义覆盖。或者你想把它放在弹出窗口附近吗?嗨,谢谢!我想在标记附近定位。问题是我的布局是流动的,地图可能位于“任何”位置,因此根据地图位置,如果我使用X,Y是无用的。谢谢看看赫拉的评论。现在要面对的最大问题是,如果要显示工具提示的项目接近视口的极限,则需要使贴图将项目移动到足够的焦点,以显示工具提示。您可以通过使用
map.panToBounds
并将标记的边界+工具提示作为新边界来完成此操作。在执行此操作之前,请仔细检查以确保边界位于视口中,以保存不必要的调用工具提示是什么意思?像一个小标签,当你在上面悬停时,它会在延迟后出现吗?或者像你点击图标时出现的实际弹出窗口?如果你将鼠标悬停在任何市场上,你会看到一个黄色窗口,这就是我关于工具提示的意思,你想要它在哪里?直接在谷歌弹出窗口上?为什么?如果你想覆盖弹出窗口,为什么不把它从地图上取下来,做一个自定义覆盖。或者你想把它放在弹出窗口附近吗?嗨,谢谢!我想在标记附近定位。问题是我的布局是流动的,地图可能位于“任何”位置,因此根据地图位置,如果我使用X,Y是无用的。谢谢看看赫拉的评论。现在要面对的最大问题是,如果要显示工具提示的项目接近视口的极限,则需要使贴图将项目移动到足够的焦点,以显示工具提示。您可以通过使用
map.panToBounds
并将标记的边界+工具提示作为新边界来完成此操作。但在执行此操作之前,请仔细检查以确保边界位于视口内,以避免不必要的调用谢谢!但这不是我想要的。我想将黄色弹出窗口定位在标记附近。问题是我的布局是流动的,地图可能在“任何”位置,因此根据地图位置,X,Y方法是无用的;例如:把身体填充物换成500px,那么你的解决方案就一文不值了。ThanksBTW它毫无价值,因为弹出窗口将位于顶部,而地图将位于底部,ThanksBTW看一看我从中未成功实现的MBO代码,它不返回标记位置,并且X包含-180偏移量,知道如何获得市场位置吗?谢谢!但这不是我想要的。我想将黄色弹出窗口定位在标记附近。问题是我的布局是流动的,地图可能在“任何”位置,因此根据地图位置,X,Y方法是无用的;例如:把身体填充物换成500px,那么你的解决方案就一文不值了。ThanksBTW它毫无价值,因为弹出窗口将位于顶部,而地图将位于底部,ThanksBTW看一看我从中未成功实现的MBO代码,它不返回标记位置,并且X包含-180偏移量,知道如何获得市场位置吗?