0

以下を使用して JavaScript からJSON 情報 ( https://maps.googleapis.com/maps/api/geocode/json?address=Mountain+View+Amphitheatre+Parkway&sensor=false )を読み込もうとしています:

$.getJSON("https://maps.googleapis.com/maps/api/geocode/json?address="+city+"+"+steet+"&sensor=false", function(json) {
if (json.status == 'ZERO_RESULTS'){
    alert('Wrong input');
}
else{
// Here I would like to read json.results.geometry.location.lat 
}

});

しかし、うまくいきません。json.results を読み取ろうとすると、[object Object] が返ってきます。jsonを印刷しても同じ結果が得られたので、ピリオドを続けることができると思っていましたが、うまくいきませんでした。

その後、json.results を反復処理して、オブジェクトを配列に解析しようとしましたが、すべてうまくいきませんでした。

4

3 に答える 3

2

results はオブジェクトの配列です。したがって、次を試してください:

json.results[0].geometry.location.lat
于 2013-01-30T15:49:46.430 に答える
1

json.resultsは配列です。その中の要素にアクセスする必要があります。

そのままのコードはlocation、 objectのプロパティにアクセスしようとしていますgeometry

しかし、json.resultsは配列でjson.results.geometryあるundefinedため、プロパティを持つことはできません。

コンソールでエラーを確認すると、次のような結果が得られるはずです

Uncaught TypeError: Cannot read property 'location' of undefined

必要なのは、配列の要素にアクセスすることです。その中のresults各要素は、アクセスしたい情報を保持する gMaps の 1 つの検索結果を表すためです。

たとえばjson.results[0]、最初の検索結果を表すオブジェクトが表示 json.results[1]され、2 番目の検索結果が表示されます。

したがって、次のように変更すると

$.getJSON("https://maps.googleapis.com/maps/api/geocode/json?address=Berlin+Alexanderplatz&sensor=false", function(json) {
if (json.status == 'ZERO_RESULTS'){
    alert('Wrong input');
}
else{
  console.log(json.results[0].geometry.location.lat) // 52.5218316
}

});

意図したとおりに、最初の結果の緯度が得られます。

ここにJSBinがあります。

于 2013-01-30T15:51:54.087 に答える
0

results は、ループする必要がある配列です。

for (var i = 0; i < json.results.length; i++) {
     console.log(json.results[i].geometry.location.lat);
}
于 2013-01-30T15:51:37.083 に答える