Javascript Openlayers-将信息数组放入popupmarker
我有一个到数据库(db)的连接。我从数据库中获取lon、lat和名称,并对其进行排序:Javascript Openlayers-将信息数组放入popupmarker,javascript,openlayers,Javascript,Openlayers,我有一个到数据库(db)的连接。我从数据库中获取lon、lat和名称,并对其进行排序: while ($row_ChartRS = mysql_fetch_array($sql1)) { $latitude=$row_ChartRS['latitude']; $longitude=$row_ChartRS['longitude']; $bus_name =$row_ChartRS['short_name']; //echo $latitude.'--'.$longitude.'<br&g
while ($row_ChartRS = mysql_fetch_array($sql1))
{
$latitude=$row_ChartRS['latitude'];
$longitude=$row_ChartRS['longitude'];
$bus_name =$row_ChartRS['short_name'];
//echo $latitude.'--'.$longitude.'<br>';
echo $bus_name;
但是,弹出标记中的名称对于所有标记都是相同的。i、 e.从db中提取的姓氏。有人能帮我吗?我已经花了整整三天的时间试图修复它
提前谢谢 一些评论:
名称
和位置
不会在您发布的代码中的任何位置声明。它们包含什么功能
对象,但您将它们都指定给同一个属性(从而每次都覆盖该属性)。这是故意的吗
//add info into box
for (z in names) {
feature.data.popup = new OpenLayers.Feature(new OpenLayers.LonLat(names[z]).transform(projLonLat,projMercator));
}
//add info into box
feature.data.popup = new OpenLayers.Feature(new OpenLayers.LonLat(names[k]).transform(projLonLat,projMercator));
因为在PHP中,您使用相同的索引($v
)来填充两个数组,所以在javascript中使用相同的索引来读取它们是有意义的
除此之外,在Javascript数组上使用for…in循环被认为是不好的做法。最好使用以下选项:
for (k = 0; k < Locations.length; k += 1) {
// your code
}
for(k=0;k
我也遇到了同样的问题,我解决了它。。。
问题是覆盖
您不必在函数内部循环,请为函数执行循环,例如:
function init(z)
{
feature.data.popup = new OpenLayers.Feature(new OpenLayers.LonLat(names[z]).transform(projLonLat,projMercator));
}
for (z in names)
{
init(z)
}
@谢谢你的回复。请查看上面的代码以了解它们是如何使用的。@user639439:感谢PHP代码。我已经更新了我的答案;如果您按照建议更改代码,它应该可以工作。
function init(z)
{
feature.data.popup = new OpenLayers.Feature(new OpenLayers.LonLat(names[z]).transform(projLonLat,projMercator));
}
for (z in names)
{
init(z)
}