Googleストリート、$都市および$国の文字列をGoogle jsonから取得しようとしています。 それは私の自宅の住所のために働く:JSON配列でより多くのデータがあるので、 http://maps.googleapis.com/maps/api/geocode/json?latlng=52.154184,6.199592&sensor=true それは動作しません。 http://maps.googleapis.com/maps/api/geocode/json?latlng=52.108662,6.307370&sensor=trueGoogleを使用して逆ジオコーディングで道路、都市および国を取得する
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&sensor=true";
$data = @file_get_contents($url);
$jsondata = json_decode($data,true);
if(is_array($jsondata) && $jsondata['status'] == "OK")
{
$city = $jsondata['results']['0']['address_components']['2']['long_name'];
$country = $jsondata['results']['0']['address_components']['5']['long_name'];
$street = $jsondata['results']['0']['address_components']['1']['long_name'];
}
しかし、この例のような配列で、より多くのデータと異なるアドレスのためにそれは州を国にします。
必要なタイプ(long_name)を選択するにはどうすればよいですか?ストリート用
- :[ "ルート"]都市のための
- :LONG_NAME "タイプ":[ "地域"、 "政治的"]国の
- :LONG_NAME " "種類" LONG_NAMEタイプ」:[ "国"、 "政治的"]ジオコードJSONから
出力例:
{
"results" : [
{
"address_components" : [
{
"long_name" : "89",
"short_name" : "89",
"types" : [ "street_number" ]
},
{
"long_name" : "Wieck De",
"short_name" : "Wieck De",
"types" : [ "establishment" ]
},
{
"long_name" : "Industrieweg",
"short_name" : "Industrieweg",
"types" : [ "route" ]
},
{
"long_name" : "Zutphen",
"short_name" : "Zutphen",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Zutphen",
"short_name" : "Zutphen",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Gelderland",
"short_name" : "GE",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Nederland",
"short_name" : "NL",
"types" : [ "country", "political" ]
},
{
"long_name" : "7202 CA",
"short_name" : "7202 CA",
"types" : [ "postal_code" ]
}
は、私はここに、私はそれを修正自分自身を考えます私のコード:
// street
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("route", $address["types"])) {
$street = $address["long_name"];
}
}
}
// city
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("locality", $address["types"])) {
$city = $address["long_name"];
}
}
}
// country
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("country", $address["types"])) {
$country = $address["long_name"];
}
}
}
最初のコンポーネントが最も信頼性が高く、 'cases'、' if'ループを作成するだけで正常に動作するため、これは機能しません。 –