使用PHP将英国邮政编码转换为经度和纬度

过去,这个常见问题困扰着许多程序员,所以我想我会补充一小部分。在为此进行研究的同时,我设法找到了一个名为www.streetmap.co.uk的站点,该站点有一个不错的PostCode到地理参考工具。使用一个简单的URL参数,我就可以为站点提供一个PostCode,并从生成的HTML中删除经度和纬度。这是我想出的功能。

function postCode2Geog($code){

 $code = strtolower(str_replace(' ','',$code));

 $uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=".$code."&type=Postcode";

 

 $ch = curl_init($uri);

 curl_setopt($ch, CURLOPT_HEADER, 0);

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

 $output = curl_exec($ch);

 curl_close($ch);

 

 preg_match('#long \(wgs84\)\s*?\<\/td\>\s*?\\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$longMatch);

 preg_match('#lat \(wgs84\)\s*?\<\/td\>\s*?\\S{2,3}:\S{2}:\S{2} \( (.*?) \)#i',$output,$latMatch);

 $long = $longMatch[1];

 $lat = $latMatch[1];

 

 return array($lat,$long);

}

要使用该功能,请使用以下内容,在这种情况下,我要看伦敦的BBC工作室。

这将产生纬度为51.518561和经度为-0.143800的结果,似乎已经结账了。

$geog = postCode2Geog('W1A 1AA');

使用此方法的初步结果似乎很有希望,但Streetmap网站似乎自2004年以来就没有进行过更新。经过几分钟的搜索,我发现了此方法,我只需要将20个左右的邮政编码转换为地理坐标即可。一种替代方法是使用我之前在文章中讨论的方法,使用Google Maps And PHP查找PostCode或ZipCode的经度和纬度,但这需要您拥有有效且有效的Google Maps API密钥。如果您不想沿着那条路线走,则可以使用此方法。

以上是 使用PHP将英国邮政编码转换为经度和纬度 的全部内容, 来源链接: utcz.com/z/327654.html

回到顶部