Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 谷歌反向地理编码JSON:与全球城市名称匹配的属性是什么?_Php_Json_Google Maps_Google Maps Api 3 - Fatal编程技术网

Php 谷歌反向地理编码JSON:与全球城市名称匹配的属性是什么?

Php 谷歌反向地理编码JSON:与全球城市名称匹配的属性是什么?,php,json,google-maps,google-maps-api-3,Php,Json,Google Maps,Google Maps Api 3,我正在使用谷歌反向地理编码解析世界各地的坐标。 在JSON响应中,我很难为每个国家匹配正确的“行政区域级别” 以下是一个响应示例: 据我所知,我可以在以下各项中寻找财产: 政治的 行政区一级 行政区二级 行政区第三级 行政区4级 行政区第五级 口语区 地点 病房 亚局部 邻里 下面是我对PHP函数的尝试: public static function getCity($json) { $types = array('administrative_area_level_1', 'adm

我正在使用谷歌反向地理编码解析世界各地的坐标。 在JSON响应中,我很难为每个国家匹配正确的“行政区域级别”

以下是一个响应示例:

据我所知,我可以在以下各项中寻找财产:

  • 政治的
  • 行政区一级
  • 行政区二级
  • 行政区第三级
  • 行政区4级
  • 行政区第五级
  • 口语区
  • 地点
  • 病房
  • 亚局部
  • 邻里
下面是我对PHP函数的尝试:

public static function getCity($json) {
    $types = array('administrative_area_level_1', 'administrative_area_level_2', 'administrative_area_level_3', 'locality', 'country');

    foreach ($json["results"] as $result) {
        foreach ($types as $t) {

            if ($city = self::Find_Long_Name_Given_Type($t, $result['address_components'])) {
                return $city;
            }
        } 
    }
}

private static function Find_Long_Name_Given_Type($type, $array, $short_name = false) {
    foreach ($array as $value) {
        if (in_array($type, $value["types"])) {
            if ($short_name) {
                return $value["short_name"];
            }
            return $value["long_name"];
        }
    }
}
(如您所见,如果未提供任何其他属性,我将搜索国家/地区)

我注意到有些地方至少有上面列表中所有属性中的一个。那么,对于世界上所有的城市来说,什么样的房产值得呢? 我应该如何解析每一对坐标以获得正确的(英文)城市名称


例如,我注意到某个字段包含欧洲城市的城市名称,但与美国城市的名称不同。那么,我如何才能为世界上每个国家获得正确的属性呢?

我认为全球范围内的城市名称没有唯一的属性(地址组件)。在同一国家的不同国家和地区,您可以在不同的地址组件中使用城市名称。我相信地址组件的选择取决于谷歌在不同国家使用的内部数据模型

请查看以下示例页面:

您可以在本页上看到以下说明

您可能需要调整它以与每个国家的邮政地址对齐。此示例显示数据库中的位置地址组件。这通常代表城市。然而,在英国和瑞典,正确的组成部分是邮政城镇,而在日本,正确的组成部分在各个县之间是不同的。布鲁克林和纽约市的其他地区不使用该市作为地址的一部分。他们使用次局部性级别1

所以,至少你可以使用这里提到的地点、邮政城镇和次地点级别1


希望这有帮助

谢谢你的回答,无论如何,你的解决方案对某些欧洲国家不起作用。因此,没有解决办法:(