Я хочу изменить текущее поведение моей Карты Google, чтобы она отображала информационное окно при наведении курсора мыши и открывала определенную ссылку при нажатии. Отображение информационного окна не является проблемой, но теперь проблема заключается в том, что центр карты изменится, если информационное окно не помещается в текущий div; что означает, что положение маркера изменится, и он больше не будет «наводиться мышью», а информационное окно исчезнет.
Я пытаюсь создать такое же поведение, как, например: http://www.booking.com/city/nl/amsterdam.html?sid=de243c5062b6be49f9a67baa38992974;city=-2140479
imho есть 2 решения, которые я могу придумать, которые помогут;
- вычисление положения маркера и позиционирование информационного окна на основе этого
- Не позволять карте менять положение при отображении информационного окна, но это будет означать, что в некоторых случаях информационное окно может быть невидимым, что не идеально.
В данном примере они не используют 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
},
Предпочтительно, чтобы информационное окно располагалось на основе положения маркера, чтобы оно всегда отображалось на текущей карте, возможно ли это?