0

我正在开发一个谷歌地图应用程序,我希望从数据库加载一些标记并将它们显示在地图上。所以我创建了一个数组并定义了一个这样的对象。

function shop_data(name,latitude,longitude,type)
    {
    this.name=name;
    this.latitude=latitude;
    this.longitude=longitude;
    this.type=type;
    }

然后,我将从 ajax 请求中检索到的一些数据添加到“shop_data”对象数组中。该数组定义为“all_shops”。

var i=0;
for(var o in data){
var name = data[o].name;
    var type = data[o].type;
var lat = data[o].lat;
var lng = data[o].lng;

all_shops[i]=new shop_data(name,lat,lng,type);
i++
}

然后,当我调用“all_shops[i].name”时,它会按原样给我这个名字。但是当我调用“all_shops[i].lat”或“all_shops[i].lng”时,它给了我“未定义”。我也尝试解析 lat,lng。这里 lat, lng 是 MySQL 数据库中的双变量。我可以通过调用名称、类型、lat、lng 从接收到的 ajax 数据中毫无问题地获取 lat、lng 值。但是当我将它们全部放在一个数组中并从数组中调用它们时,事情就出错了。任何帮助,将不胜感激。谢谢。

4

3 回答 3

1

从改变

this.latitude=latitude;
this.longitude=longitude;

this.lat=latitude;
this.lng=longitude;

您有一个简单的复制/粘贴错误。

于 2012-10-25T01:28:04.937 回答
1

你应该调用你的latitudeor longitudefrom all_shops[i]notlat或者lng 你有这样的shop_data函数定义

function shop_data(name,latitude,longitude,type)
{
   this.name=name;
   this.latitude=latitude;
   this.longitude=longitude;
   this.type=type;
}

或者如果想使用lat或者lng改变shop_data函数定义,比如

function shop_data(name,latitude,longitude,type)
{
   this.name=name;
   this.lat=latitude;
   this.lng=longitude;
   this.type=type;
}
于 2012-10-25T01:29:08.577 回答
1

更改变量名称以匹配并进行一些清理会给出:

function shop_data(name,latitude,longitude,type){
    this.name=name;
    this.lat=latitude;
    this.lng=longitude;
    this.type=type;
}

和:

var i=0;
for(var o in data){
    var name = data[o].name;
    var type = data[o].type;
    var lat = data[o].lat;
    var lng = data[o].lng;

    all_shops[i]=new shop_data(name,lat,lng,type);
    i++
}
于 2012-10-25T01:29:32.580 回答