php – 使用谷歌反向地理编码获取街道,城市和国家
发布时间:2020-12-13 16:28:42 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试从google json获取$street,$city和$country字符串. 它适用于我的家庭住址: http://maps.googleapis.com/maps/api/geocode/json?latlng=52.108662,6.307370sensor=true $url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat."
我正在尝试从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']; } 但是对于一个不同的地址,数组中有更多的数据就像这个例子: 如何选择我需要的类型(long_name)? > for street:long_name其中“types”:[“route”] 地理编码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" ] },"types" : [ "administrative_area_level_2",{ "long_name" : "Gelderland","short_name" : "GE","types" : [ "administrative_area_level_1",{ "long_name" : "Nederland","short_name" : "NL","types" : [ "country",{ "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']; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |