使用Google Maps和PHP查找PostCode或ZipCode的经度和纬度

从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。