0

私はGoogleマップアプリケーションに取り組んでおり、いくつかのマーカーをデータベースからロードしてマップに表示したいと考えています。そこで、配列を作成し、このようなオブジェクトを定義しました。

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' を呼び出すと、'undefined' と表示されます。緯度経度も解析してみました。ここで、lat、lng は MySQL データベースの double 変数です。name,type,lat,lng を呼び出すだけで、受信した ajax データから lat,lng 値を問題なく取得できます。しかし、それらをすべて配列に入れて、配列から呼び出すと、問題が発生します。どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1

このような関数定義があるので、 latitudeor longitudefrom all_shops[i]not latorを呼び出す必要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 に答える
1

から変更する

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

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

単純なコピー/貼り付けエラーがあります。

于 2012-10-25T01:28:04.937 に答える