从GeoCode Maps API获取区域



我正在尝试从GeoCode API Google Maps获取区域名称。

我能够通过以下代码获得经度和悠久的状态:

$address ="London";
$coordinates = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?key=API_KEY_HERE&address=' . urlencode($address) . '&sensor=true');
$coordinates = json_decode($coordinates);

$latitude = $coordinates->results[0]->geometry->location->lat;
$longitude = $coordinates->results[0]->geometry->location->lng;

我从Google API中获得的信息是

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "London",
               "short_name" : "London",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "London",
               "short_name" : "London",
               "types" : [ "postal_town" ]
            },
            {
               "long_name" : "Greater London",
               "short_name" : "Greater London",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "England",
               "short_name" : "England",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United Kingdom",
               "short_name" : "GB",
               "types" : [ "country", "political" ]
            }
         ],

我想获得该区域(在此示例中(是England最好的方法是什么?

谢谢

首先,我不确定您是否需要file_get_contents中的 &sensor=true
据我所知,这是用于移动设备和内置的GPS。

要回答您的问题,您可以解码到一个数组并使用array_column到达"类型"'0'数组,并使用arra_search查找管理级别1的位置,并在Echo语句中使用该级别以获取'England'。

$arr =json_decode($json, true);
$key = array_search("administrative_area_level_1", array_column(array_column($arr["results"][0]["address_components"], "types"),0));
echo $arr["results"][0]["address_components"][$key]["long_name"];

https://3v4l.org/gsnv4

检查所有address_components是否存在administrative_area_level_1类型

最新更新