Javascript json返回的标记数组指向最后一个标记

Javascript json返回的标记数组指向最后一个标记,javascript,arrays,google-maps-api-3,Javascript,Arrays,Google Maps Api 3,我所做的是在json数组返回的映射上放置多个标记,下面是我的代码。我的标记绘制正确,但当我单击每个标记时,它会生成一个标记的信息窗口,该标记是数组的最后一个标记 function latLongCallback(latitutde,longitutde){ var latlng = new google.maps.LatLng(latitutde, longitutde); var options = {zoom: 4, center: latlng, mapTypeId: g

我所做的是在json数组返回的映射上放置多个标记,下面是我的代码。我的标记绘制正确,但当我单击每个标记时,它会生成一个标记的信息窗口,该标记是数组的最后一个标记

 function latLongCallback(latitutde,longitutde){
    var latlng = new google.maps.LatLng(latitutde, longitutde);
    var options = {zoom: 4, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP};
    var map = new google.maps.Map(document.getElementById('map'), options);
    $.ajax({type: "GET",
      dataType: 'json',
      url: "http://www.xyz.com/xcv/xainee/test/markers.php",
    success: function(response){
         var total=response.length;
       data_array,name,type,address,lat,lon,point,infowindow,marker,arrival,departure,notes;
         var icon_image = 'http://www.xyz.com/userftp/fawad/test/images/map-icon.png';


       for(var i=0; i < total; i++) 
       {
            data_array=response[i];
            name=data_array['name'];
            address=data_array['address'];
            arrival=data_array['arrival'];
            departure=data_array['departure'];
            notes=data_array['notes'];
            lat=data_array['lat'];
            lon=data_array['lon'];
         contentString ="Name : "+name+"<br/> Location : "+address+"<br/> Arrival :"+arrival+"<br/> Departure : "+departure+"<br/> Notes : "+notes;
            point = new google.maps.LatLng(lat,lon);

            infowindow = new google.maps.InfoWindow({content: contentString,maxWidth: 400,maxHeight: 201});

            marker = new google.maps.Marker({map: map,icon: icon_image, position: point});

            marker.setMap(map);
            google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker);});

       }
        }
    });
    return;
}
函数latLongCallback(latitude,longitude){
var latlng=新的google.maps.latlng(latitude,longitutede);
var options={zoom:4,center:latlng,mapTypeId:google.maps.mapTypeId.ROADMAP};
var map=new google.maps.map(document.getElementById('map'),options);
$.ajax({type:“GET”,
数据类型:“json”,
url:“http://www.xyz.com/xcv/xainee/test/markers.php",
成功:功能(响应){
var total=响应长度;
数据数组、名称、类型、地址、纬度、经度、点、信息窗口、标记、到达、离开、备注;
var图标_图像编辑器http://www.xyz.com/userftp/fawad/test/images/map-icon.png';
对于(变量i=0;i位置:“+address+”
到达:“+Arrival+”
出发:“+foreival+”
备注:“+Notes; point=新的google.maps.LatLng(lat,lon); infowindow=new google.maps.infowindow({content:contentString,maxWidth:400,maxHeight:201}); marker=new google.maps.marker({map:map,icon:icon\u image,position:point}); marker.setMap(map); google.maps.event.addListener(标记,'click',function(){infowindow.open(映射,标记);}); } } }); 回来 }
这是我的markers.php

     <?php session_start();
  include_once("database.php");
 $data=array();

      $retrive_marker_query = "SELECT fb_user.name,schedule.location,schedule.arrival,schedule.departure,schedule.notes,schedule.lat,schedule.lon FROM schedule,fb_user where fb_user.fb_id = schedule.fb_id";
     $result         =    db_execute($retrive_marker_query);
     $cnt=0;
   while ($row = @mysql_fetch_assoc($result)){
$name=$row['name'];
$address= $row['location'];
$arrival= $row['arrival'] ;
$departure= $row['departure'] ;
$notes= $row['notes'] ;
$lat= $row['lat'];
$lon= $row['lon'];

$data[$cnt]['name']=$name;
$data[$cnt]['address']=$address;
$data[$cnt]['arrival']=$arrival;
$data[$cnt]['departure']=$departure;
$data[$cnt]['notes']=$notes;
$data[$cnt]['lat']=$lat;
$data[$cnt]['lon']=$lon;

$cnt++;
 }
  $data=json_encode($data);
  echo($data);

 ?>


为什么我的标记内容相同尽管所有标记都以不同的纬度和经度绘制

在循环中创建所有变量之前尝试使用
var
关键字,尤其是
infowindow
marker
。可能是单击回调正在抓取
窗口。infowindow
,这将是您在循环中创建的最后一个infowindow对象。@ampersand我已经添加了变量数据数组、名称、类型、地址、纬度、经度、点、infowindow、标记、到达、离开、注释;这不是问题我检查我的代码我添加了var关键字我在发布问题时错过了它抱歉当你在控制台(
console.log(contentString)
)中检查
contentString
)每次通过循环时,内容是否真的不同?@ampers我已经解决了它..谢谢你的时间