JSON 応答の解析で問題が発生しています。私はこれを何度も行ってきましたが、これは私が識別できない理由で機能していません。これが私がやっていることです:
誰かがそれを提案する前に-私が取り組んでいるプロジェクトのいくつかの要件により、サーバー側のGoogleジオコーディングWebサービスを使用する必要があります.クライアント側ですべてを行うことはできません.
サーバー側の部分にPHPを使用しています。私はAJAX(jQuery経由)を使用してサーバーに場所を送信し、応答を取得してJSONとしてエンコードして返します。サーバー側のコードは次のとおりです。
<?php
if(!empty($_POST['theLocation']))
{
$loc = urlencode($_POST['theLocation']);
$response = file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?address=$loc,+CA&sensor=false");
echo json_encode($response);
}
?>
theLocation が場所の名前であるクライアント側の呼び出しは次のとおりです。
var postdata = "theLocation=" + encodeURIComponent(theLocation);
$.ajax( {
type : "POST",
url : "GeoEncode.php",
data :postdata ,
dataType : "JSON",
success : function(data) {
data = $.parseJSON(data);
lat = data.results[0].geometry.location.lat;
lng = data.results[0].geometry.location.lng;
},
error: function (request, status, error) {
log("Error: getLatLong Status - " + status + " ErrorText - " + error);
}
});
アクセスしようとするdata.results[0]
と、エラーが発生しますUncaught TypeError: Cannot read property '0' of undefined
。これは明らかに結果プロパティがないことを意味します。ただし、console.log(data)
これを行うと、次のようになります。
{
"results": [
{
"address_components": [
{
"long_name": "Halifax",
"short_name": "Halifax",
"types": [
"locality",
"political"
]
},
{
"long_name": "Halifax",
"short_name": "Halifax",
"types": [
"administrative_area_level_3",
"political"
]
},
{
"long_name": "Halifax Regional Municipality",
"short_name": "Halifax Regional Municipality",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "Nova Scotia",
"short_name": "NS",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "Canada",
"short_name": "CA",
"types": [
"country",
"political"
]
}
],
"formatted_address": "Halifax, NS, Canada",
"geometry": {
"bounds": {
"northeast": {
"lat": 44.7035312,
"lng": -63.55963089999999
},
"southwest": {
"lat": 44.5949302,
"lng": -63.68627009999999
}
},
"location": {
"lat": 44.6488625,
"lng": -63.5753196
},
"location_type": "APPROXIMATE",
"viewport": {
"northeast": {
"lat": 44.7035312,
"lng": -63.55963089999999
},
"southwest": {
"lat": 44.5949302,
"lng": -63.68627009999999
}
}
},
"types": [
"locality",
"political"
]
}
],
"status": "OK"
}
これは有効な JSON であり、明らかに results プロパティがあります。なぜこれで問題が発生するのかわかりません。何か不足しているに違いありませんが、デバッグを通じてまだ何がわかっていません。誰かが提案を提供できれば、それは非常に高く評価されます。ありがとう!