Google地图:如何在标记上准确定位OverlayView?

时间:2012-02-11 18:23:31

标签: jquery google-maps

我正在使用谷歌地图API 3和自定义叠加层(OverlayView) 我有这段代码:

http://jsfiddle.net/8X6cY/1/

请用鼠标悬停制造商,以便查看工具提示叠加。

如何在标记附近精确定位工具提示弹出窗口(黄色窗口)?我的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'
        }
    });

  });
}

2 个答案:

答案 0 :(得分:4)

万一有人正在寻找答案,我提出这样做​​:

// 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];

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

答案 1 :(得分:0)

我已更新并正常工作,已删除:“正确的中心”,我的:“左中心”,希望您想要http://jsfiddle.net/8X6cY/2/

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

var proj = overlay.getProjection();
var pos = marker.getPosition();
var p = proj.fromLatLngToContainerPixel(pos);

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