Google マップに情報ウィンドウを表示しようとしています。完璧に表示されます。マーカーにカーソルを合わせると、情報ウィンドウが読み込まれますが、マップはウィンドウに収まるようにジャンプします。地図を動かしたくはありませんが、地図に従って情報ウィンドウの位置を設定します。Booking.comにはこんなものがあります。
編集:私のコードを追加しました
これが私のコードの簡素化されたバージョンです。私はAJAXサービスからすべての情報を取得していますが、このサービスは返されますresponse
(さらに多くの情報も保持しています)。
$.ajax({
url: 'URL',
dataType: "json",
type: "GET",
success: function(response) {
// delete all markers
clearOverlays();
var infowindow = new google.maps.InfoWindow();
for (var i = 0; i < response.length; i++) {
item = response[i];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(item.lat, item.lng),
map: map,
url: item.detail_url
});
markersArray.push(marker);
// display infowindow
google.maps.event.addListener(marker, "mouseover", (function(marker, item) {
return function() {
infowindow.setOptions({
content: 'SOME CONTENT HERE FOR INFOWINDOW'
});
infowindow.open(map, marker);
}
})(marker, item));
// remove infowindow
google.maps.event.addListener(marker, 'mouseout', function() {
infowindow.close();
});
// marker click
google.maps.event.addListener(marker, 'click', function() {
window.location.href = marker.url;
});
}
}
});
以下に示すように、最初の画像はマーカーの下部に表示された情報ウィンドウを示し、2 番目の画像はマーカーの上に表示された情報ウィンドウを示しています。マップは移動しませんが、情報ウィンドウはマップの境界内にその位置を設定します。