Javascript json返回的标记数组指向最后一个标记
我所做的是在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
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我已经解决了它..谢谢你的时间