我正在努力从"administrative_area_level_2"类型中获得"Adams County"从这个API响应中http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947 -104.8011589050293,传感器= false。
我只需要根据纬度和经度输出县。
$query = @unserialize(file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947,-104.8011589050293&sensor=false'));
echo 'Hello visitor from '.$query["response"];
这是我现在有的。谢谢你。
您需要使用递归搜索并跟踪结果数组中先前找到的项。
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947,-104.8011589050293&sensor=false';
$query = @json_decode(file_get_contents($url),true);
$address_components = $query['results'][0]['address_components'];
array_walk_recursive( $address_components,
function($item, $key) use(&$prev_item, &$stop){
if($item == 'administrative_area_level_2'){
$stop = true;
}
else {
if(!$stop)
$prev_item = $item;
}
});
var_dump($prev_item);
使用json_decode
代替unserialize
,因为响应是JSON格式的。
然后在一两个循环中迭代项,例如:
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947,-104.8011589050293&sensor=false'; $response = json_decode(file_get_contents($url), true);
if (empty($response['results'])) {
// handle error
}
$long_name = null;
foreach ($response['results'] as $r) {
if (empty($r['address_components']) || empty($r['types']))
continue;
if (array_search('administrative_area_level_2', $r['types']) === false)
continue;
foreach ($r['address_components'] as $ac) {
if (array_search('administrative_area_level_2', $ac['types']) !== false) {
$long_name = $ac['long_name'];
break;
}
}
}
echo $long_name;
输出Adams County