2017-03-04 27 views
1

逆ジオコーディング方法でURLからjsonを取得しようとすると問題が発生します。 私はこの問題を、stackoverflowで見つかった解決策に基づいて試しました。私は私の警告でJSONを表示しようとすると それは示しています。未定義URLからjsonを取得して特定のデータを表示

adressReverseGeoCode(item: any, elementId: any) { 
var getJSON = (url: any, callback: any) => { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', url, true); 
    xhr.responseType = 'json'; 
    xhr.onload =() => { 
    var status = xhr.status; 
    if (status == 200) { 
     callback(null, xhr.response); 
    } else { 
     callback(status); 
    } 
    }; 
    xhr.send(); 
}; 

getJSON('http://nominatim.openstreetmap.org/reverse?format=json&lat=' + item.latitude + '&' + 'lon=' + item.longitude + '&addressdetails=1', 
    (err: any, data: any) => { 
    if (err != null) { 
     alert('Something went wrong: ' + err); 
    } else { 
     alert(data.result); 
    } 

    }); 

} 

を私は後でテキスト入力にそれを置くために、JSONから「DISPLAY_NAME」を取得したいです。あなたは

{ 
"place_id":"154253419", 
"licence":"Data © OpenStreetMap contributors, ODbL 1.0. http:\/\/www.openstreetmap.org\/copyright", 
"osm_type":"way", 
"osm_id":"424211755", 
"lat":"-23.56183", 
"lon":"-46.6598392", 
"display_name":"Alameda Ministro Rocha Azevedo, Jardim Paulista, São Paulo, Microrregião de São Paulo, RMSP, Mesorregião Metropolitana de São Paulo, São Paulo, Southeast Region, 01410-001, Brazil", 
"address":{"road":"Alameda Ministro Rocha Azevedo","suburb":"Jardim Paulista","city_district":"Jardim Paulista","city":"São Paulo","county":"Microrregião de São Paulo","state_district":"Mesorregião Metropolitana de São Paulo","state":"São Paulo","postcode":"01410-001","country":"Brazil","country_code":"br"}, 
"boundingbox":["-23.5642064","-23.5601209","-46.662319","-46.6580485"] 
} 

JSONファイルを表示するには、このリンクを試すことができ あなたは私を与えることができます任意の助けを事前にありがとうございます!

+1

data.resultはありません!それはなぜそれが未定義であるかです。あなたのデータはJSONです。だから単に 'data.display_name'を実行してください – Smit

+2

また、オブジェクトにjson文字列を解析する必要があります。 – charlietfl

答えて

1

data.resultはありません!それはなぜそれが未定義であるかです。あなたのデータはJSONです。 data.display_nameを実行してください。多分!

var obj = JSON.parse(data); // as suggested by @charlietfl 
console.log(obj.display_name); 
alert(obj.display_name); 
+1

ありがとうございます、クールダウン時間が終了したら、私はあなたの答えを4分で受け入れます^^ – Uness

関連する問題