地図上にショップを表すマーカーを描いています。
クリックされたマーカーごとに、前にクリックされたマーカーで閉じた直後に表示される単一のグローバル情報ウィンドウがあります。
場合によっては、いくつかのショップが同じ住所を持っているため、マーカーが互いに重なり合って表示され、1つは一番上のマーカーしか見ることができません。
これを解決するために、infoWindowにページ付けを追加しました。
問題は、一番上のマーカーがリストの最後のマーカーであるため、infoWindowに最新のショップの情報が表示され、ページネーションに最初のショップと「次へ」ボタンが表示されるのではなく、「戻る」ボタンが表示されることです。
このように「for」ループの順序を逆にしてみましfor (i=limit; i>0; i--)
たが、機能しません。マップは、ajaxリクエストを実行しているかのようにスタックします。
コードは次のとおりです。
function drawShopsMarkers(){
var marker;
markersArray = [];
var i;
var limit = globalShopsArr.length;
for (i=0; i<limit; i++){
marker = new google.maps.Marker({
position: new google.maps.LatLng(globalShopsArr[i].shopLat, globalShopsArr[i].shopLng),
map: map,
title: globalShopsArr[i].shopTitle
});
markersArray.push(marker);
marker.setMap(map);
google.maps.event.addListener(markersArray[i], 'click', makeListener(i));
}
function makeListener(index) {
return function() {
globalInfowindow.disableAutoPan=true;
globalInfowindow.open(map,markersArray[index]);
CreateInfoWindowString(index);
globalInfowindow.setOptions({
content: globalContentString
});
}
}
}
このCreateInfoWindowString()
関数はglobalContentString
、ページネーションを含めて単純にデータを入力します。
問題の原因を教えてください。