ajax 呼び出しからの情報ウィンドウの読み込みに問題があります データは json 配列から取得されます これはループ コードです...
function getResults(map){
//remove all existing markers
deleteOverlays();
bounds = new google.maps.LatLngBounds();
//set search center
c = map.center;
var cLat = c.lat().toFixed(6);
var cLng = c.lng().toFixed(6);
//get search radius
var radius = $("#radius option:selected").val()
$.ajax({
url:"ajax/search_radius.php?lat="+cLat+"&lng="+cLng+"&radius="+radius,
cache:false,
async:true,
type:"POST",
dataType: "json",
success:function(data){
var l = data.markers.length;//alert(l);
for (i = 0; i < l; i++) {
var point = new google.maps.LatLng(data.markers[i][3], data.markers[i][4]);
var pin = 'images/pins/' + data.markers[i][1] + '.png';
//alert(pin);
marker = new google.maps.Marker({
position: point,
panControl: false,
map:map,
icon:pin
});
bounds.extend(point);
map.fitBounds(bounds);
//add to valid array
markersArray.push(marker);
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
load_content(this,'5');
});
}
}
});
};
これはコンテンツをロードする関数です
function load_content(marker, id){
$.ajax({
url: 'ajax/get_infowindow_content.php?id='+id,
cache:true,
dataType:"html",
success: function(data){
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
}
私が抱えている問題は、マーカーのIDを関数に渡すことです(上記は、IDを明示的に設定しても、phpファイルが実行されたときに未定義を返すことを示しています。
load_content(this,'5');
私も試しました..(他のバリエーションの中でも)
load_content(this, data.markers[i][0]);
id に対して未定義を返す次のように修正されました
google.maps.event.addListener(marker, 'click', function() {
alert (id); //returns undefined
return $.ajax({
type: "POST",
url: "ajax/get_infowindow_content.php?",
data:{
'id':id
},
success: function(data){
infowindow.setContent(data);
infowindow.setOptions({
position: marker.getPosition()
});
infowindow.open(map, marker);
}
});
//infowindow.close();
//load_content(this,'5');
});