从PostCode转换为映射参考远非准确,但可以使用Google Maps API来完成。尽管每天您的请求数量受到一定限制,但您只需要询问即可从Google获得Google Maps API密钥。
Google Maps通常通过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。