kullanarak ters coğrafi kodlama ile sokak, şehir ve ülke. Benim ev adresi için çalışır:
$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'];
}
Fakat bu örnekteki gibi dizilerde daha verilerle farklı bir adrese için http://maps.googleapis.com/maps/api/geocode/json?latlng=52.108662,6.307370&sensor=true
: http://maps.googleapis.com/maps/api/geocode/json?latlng=52.154184,6.199592&sensor=true çalışmıyor, json dizide fazla veri olduğundan ve eyaleti ülkeye yapar.İhtiyacım olan türü nasıl seçebilirim (long_name)? cadde için
- : long_name burada "türleri": [ "rota"] şehir için
- : long_name burada "türleri": [ "yerellik", "siyasi"] ülkesi için
- : long_name " türleri": [ "ülke", "siyasi"] coğrafi kod JSON'dan
Örnek çıkışı:
{
"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" ]
}
Ben burada, ben düzelttim kendimi düşünüyorum kodum:
// 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"];
}
}
}
Bu işe yaramaz çünkü ilk bileşen en güvenilir olanıdır, sadece 'case'leri,' if 'döngülerini yapın ve iyi olacaktır. –