定位Gmaps infowindow以便不使地图平移

时间:2011-04-03 19:05:40

标签: google-maps google-maps-api-3 google-maps-markers


我想改变我的谷歌地图的当前行为,以便它显示鼠标悬停时的信息窗口并打开某个链接点击。显示infowindow不是问题,但现在的问题是如果infowindow不适合当前div,mapcenter将会改变;这意味着标记位置将会改变,并且不再是“鼠标悬停”而且信息窗口会消失。

我正在尝试创建类似于例如:http://www.booking.com/city/nl/amsterdam.html?sid=de243c5062b6be49f9a67baa38992974;city=-2140479

的行为

imho有两个我能想到的解决方案可以解决问题;

  1. 根据
  2. 计算标记的位置并定位信息窗口
  3. 当显示信息窗口时,不要让地图改变位置,但这意味着在某些情况下信息窗口可能不可见,所以不太理想。
  4. 在给定的示例中,他们不使用google.maps.Marker()来添加标记,但是他们使用自己的代码添加div。

    createMarker: function (d, g, n, l, e, m) {
        var i = this.b_map_icons[e];
        var b = (i.height) ? i.height : 20;
        var h = (i.width) ? i.width : 17;
        var f = i.iconAnchor[0];
        var a = (i.zOrder) ? i.zOrder : 20;
        var k = g - i.iconAnchor[1];
        var o = (e == "cluster") ? '<div class="ml-text">' + m + "</div>" : "";
        var c = "display:block;width:" + h + "px;height:" + b + "px;left:" + (d - f) + "px;top:" + k + "px;position:absolute;cursor:pointer;z-index:" + (a + 1) + ";";
        var j = $('<div class="marker marker_type_' + e + '" id="' + n + '" style="' + c + '">' + o + '<img alt="' + l + '" src="' + i.image + '" style="position:absolute;top:0px;left:0px;z-index:12000;" /></div>');
        return j
    },
    

    我最好根据标记位置定位信息窗口,以便它始终显示在当前地图中,这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,它很可能只是在标记中添加一个eventlistener:

 google.maps.event.addListener(marker, 'mouseover', function () {
       info.open(map, this.position);
 });

以上是我写的解决方案,但我认为你得到了图片:)只需使用标记位置(this.position)

修改

在看了你的例子之后,我发现你根本不需要信息窗口,你需要一个自定义叠加层,它本质上是一个带有Coords的DOM元素。

Documentation