首页 文章

使用Google Map 解码PHP中的API响应

提问于
浏览
-2

我正在努力从这个api响应http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947,-104.8011589050293&sensor=false中获取"administrative_area_level_2"类型的"Adams County" .

我只需要根据纬度和经度输出县 .

$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"];

这就是我现在所拥有的 . 谢谢 .

2 回答

  • 0

    使用 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
    
  • 2

    您将需要使用递归搜索并跟踪结果数组中之前找到的项目 .

    $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);
    

相关问题