-1

コールバック配列から緯度と経度を取得しようとしています。配列には、内部に 1 つのオブジェクトが含まれる場合と、2 つのオブジェクトが含まれる場合があります。

オブジェクト { 場所={...}, 参照={...}} または [オブジェクト { 場所={...}, 参照={...}}, オブジェクト { 場所={...}, 参照={...}}]

    Placemaker.getPlaces(text,function(o){
    console.log(o);
    if (typeof o.match!=='undefined' || o.length==1){
     latitude=o.match.place.centroid.latitude, longitude=o.match.place.centroid.longitude; 
     console.log(latitude,longitude);}
     /*else if(o=='null'){
         latitude='', longitude=''; 
     }*/
     else if (typeof o.match[0]!=='undefined' || o.match.length==2){
        latitude=o.match[0].place.centroid.latitude, longitude=o.match[0].place.centroid.longitude; 
     console.log(latitude,longitude);
     }

基本的に、内部に2つのオブジェクトセットがある場合からではなく、1つのオブジェクトを持つ配列から緯度と経度を取得できます.これは私が得るエラーです

TypeError: o.match is undefined
[Break On This Error]   

else if (typeof o.match[0]!=='undefined' || o.match.length==2){

助けてくれてありがとう!

4

1 に答える 1

0

スクリーンショットに表示されているのは、次の JavaScript データ構造だと思います。

var match = [
    {
        place: {
            centroid: {latitude: xx, longitude: yy},
            name: "London, England",
            type: "Town",
            woeld: "44418"
        }
        reference: {...}
    },
    {
        place: {
            centroid: {latitude: xx, longitude: yy},
            name: "Germany",
            type: "Country",
            woeld: "23424829"
        }
        reference: {...}
    }
];

次のように、配列内の各要素の緯度と経度にアクセスします。

for (var i = 0; i < match.length; i++) {
    var centroid = match[i].place.centroid;
    // latitude is centroid.latitude
    // longitude is centroid.longitude
}
于 2012-08-12T21:28:27.477 に答える