使用Google Maps和PHP查找PostCode或ZipCode的经度和纬度
从PostCode转换为映射参考远非准确,但可以使用GoogleMapsAPI来完成。尽管每天您的请求数量受到一定限制,但您只需要询问即可从Google获得GoogleMapsAPI密钥。
GoogleMaps通常通过JavaScript工作,但是可以要求Google以JSON格式返回数据,然后使用PHP函数json_decode()将信息解码为可用的数组格式。要使Google以JSON格式返回数据,您必须在查询字符串中传递参数“output=json”。
以下功能可以采用邮政编码并将其转换为经度和纬度。
function getLatLong($code){ $mapsApiKey = 'your-google-maps-api-key'; $query = "http://maps.google.co.uk/maps/geo?q=".urlencode($code)."&output=json&key=".$mapsApiKey; $data = file_get_contents($query); //如果返回数据 if($data){ //转换为可读格式 $data = json_decode($data); $long = $data->Placemark[0]->Point->coordinates[0]; $lat = $data->Placemark[0]->Point->coordinates[1]; return array('Latitude'=>$lat,'Longitude'=>$long); }else{ return false; } }
该功能可以按以下方式使用。为了保持主题不变,以下两个邮政编码分别是Google在英国的一个地址和在美国的办公地点。
print_r(getLatLong('SW1W 9TQ')); print_r(getLatLong('10011'));
这将产生以下输出。
Array ( [Latitude] => 51.489943 [Longitude] => -0.154065 ) Array ( [Latitude] => 40.746497 [Longitude] => -74.009447 )
我已经用英国和美国的邮政编码进行了尝试,但是很有趣的是,看看它是否可以与其他任何邮政编码一起使用。此外,查询当前查找的是google.co.uk,但这仅是因为我位于英国。您应该将其更改为最近的Google域,因此,如果您位于美国,则应将其更改为google.com。