当前位置: 首页 > 面试题库 >

使用Google反向地理编码获取街道,城市和国家

邵鸿福
2023-03-14
问题内容

我正在尝试从Google json获取$ street,$ city和$
country字符串。它适用于我的家庭住址:http
:
//maps.googleapis.com/maps/api/geocode/json?latlng=52.108662,6.307370&sensor=true

$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'];
    }

但是,对于像这样的示例中数组中包含更多数据的其他地址:http
:
//maps.googleapis.com/maps/api/geocode/json?latlng=52.154184,6.199592&sensor=true,
它不起作用,因为存在json数组中有更多数据,这使该省成为了国家。

如何选择所需的类型(long_name)?

  • 街道:long_name,其中“类型”:[“路线”]
  • 对于城市:long_name,其中“类型”:[“位置”,“政治”]
  • 对于国家:long_name其中,“类型”:[“国家”,“政治”]

地理编码JSON的示例输出:

{
   "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" ]
            }

我想我自己修复了它,据此是我的代码:

// 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"];
        }
    }
}

问题答案:

您可以将数据转换为关联数组并像这样使用它

 $data = array();
 foreach($jsondata['results']['0']['address_components'] as $element){
     $data[ implode(' ',$element['types']) ] = $element['long_name'];
 }
 print_r($data);

 echo 'route: ' . $data['route'] . "\n";
 echo 'country: ' . $data['country political'];


 类似资料:
  • 问题内容: 在我当前的android应用程序中,我想根据输入的城市名称,街道名称或邮政编码获取地理坐标。我该怎么做? 最好的问候,罗尼 问题答案: 查看方法。 像这样使用它:

  • 我正在寻找一个解决方案来获取数据来创建一个简单的道路专用地图。 在lat/long指定的小区域内,我需要能够在给定街道坐标之间绘制自定义线的数据(起点和终点基本上足够了,并且只能从主要街道开始)。交叉点的坐标也可以连接到我的自定义线。 另一种方法是通过反向地理编码获得指定区域内的所有主要街道名称,然后以某种方式获得每条街道的坐标。 几年前有一个类似的请求:使用谷歌地图API为游戏获取街道图,我想知

  • 问题内容: 我设法使用基于HTML的地理位置来获取用户的纬度和经度。 我想显示城市名称,看来获得城市名称的唯一方法是使用反向地理位置API。我阅读了Google的反向地理位置文档,但是我不知道如何在我的网站上获得输出。 我不知道该如何使用:在页面上显示城市名称。 我该如何实现? 问题答案: 您将使用Google API执行类似的操作。 请注意,您必须包括google maps库才能起作用。Goog

  • 有没有办法通过lat和液化天然气从mapbox API V5获取每个城市的所有街区。 例如,如果我使用长滩的lat和lng进行搜索-118.1937, 33.7701 我期望要回所有的街区,相反,我只要回"place_name的一个结果:"Downtown, Long Beach, California 90802, United America"" 我更改了响应限制和绑定框,但没有结果。 这是m

  • 问题详情: 拉绍夫是埃姆兰市市长。埃姆兰由十字路口和街道组成。从每个交叉口到任何其他交叉口都只有一条路径。交点用正整数1...n表示。一家建筑公司向Rashof提出要重建埃姆兰的所有街道,但Rashof最多可以选择建筑公司为每条街道提供了一个新的长度,这意味着在街道重建后,街道的长度会发生变化。现在,作为城市的市长,拉绍夫必须明智地做出选择,使所有对交叉口之间的路径长度之和最小化。救救Rashof

  • 有没有可能在Android上使用开放式街道地图提供商和新的Google Maps V2 Api?如果是,你能提供一个例子或文档吗?我快速查看了这些文档,找到了UrlTileProvider(),所以看起来这是可能的。 好处:简单地将MapFragment类与OSM tiles一起使用,是否仍受Google Maps TOS的约束?