0

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');
                });
4

1 に答える 1