我有我的大的数据库,包含了像SL5 9JH值邮政编码传递到邮政编码maps.google.com,LU1 3TQ等取纬度经度通过使用Javascript
现在,当我在上面粘贴到邮政编码maps.google.com它指向一个完美的位置..
我的要求就像我想通过邮政编码maps.google.com,它应该返回相关的纬度和经度的指出位置,我想存储在我的数据库中。
所以,最有可能应该有一些JavaScript为...如果任何人有关于该请提供它的另一个想法..
在此先感谢...
我有我的大的数据库,包含了像SL5 9JH值邮政编码传递到邮政编码maps.google.com,LU1 3TQ等取纬度经度通过使用Javascript
现在,当我在上面粘贴到邮政编码maps.google.com它指向一个完美的位置..
我的要求就像我想通过邮政编码maps.google.com,它应该返回相关的纬度和经度的指出位置,我想存储在我的数据库中。
所以,最有可能应该有一些JavaScript为...如果任何人有关于该请提供它的另一个想法..
在此先感谢...
您描述的过程的技术术语称为reverse geocoding。 Google提供
The Google Geocoding Web Service
New working Google Geocoding Link,您可以在服务器端进行反向地理编码,而不是在客户端使用JavaScript。
例如,如果你尝试在浏览器下面的网址,你会回来的q
参数传递的邮政编码的经度和纬度,以CSV格式:
http://maps.google.com/maps/geo?q=SL59JH,+UK&output=csv&sensor=false
http://maps.google.com/maps/geo?q=LU13TQ,+UK&output=csv&sensor=false
这是你会怎样能够反向地理您的邮政编码在PHP,例如:
$url = 'http://maps.google.com/maps/geo?q=SL59JH,+UK&output=csv&sensor=false';
$data = @file_get_contents($url);
$result = explode(",", $data);
echo $result[0]; // status code
echo $result[1]; // accuracy
echo $result[2]; // latitude
echo $result[3]; // longitude
注意,作为Pekka suggested in another answer的Google Maps API Terms of Use似乎prohibit the storage of the results,除非店里充当数据的高速缓存将ü sed在谷歌地图。您可能希望与Google取得联系,并询问Google Maps API Premier有更灵活的地理编码要求条款。
的Google Geocoding API这样做,虽然如果我没有记错,他们的服务条款禁止本地存储地理编码结果。
我做了一个基于这个应用程序,我不记得有这个限制。我认为反对逻辑不是为了保存结果,因为它们不会在时间上发生变化,从而为Google保留未来的ping。 – 2010-04-15 09:44:00
@Elzo你是对的,如果在谷歌地图应用中使用它,它可以“暂时”缓存结果:10.3 http://code.google.com/intl/zh-CN/apis/maps/terms.html – 2010-04-15 09:46:07
有没有人知道如果这是一个https版本,通过邮政编码获取长期和格子? – AngularM 2016-01-11 13:39:31
军械测量局在知识共享许可证(CC-BY v3,IIRC)上有released the postcode locations。相反,使用它会少很多麻烦(合法性更好)。
甚至还有用WGS84(又名GPS)版本协调由mySociety
+1如果你有方便的话,一个到军械调查数据转储的链接也会很好。 – 2010-04-12 20:21:36
它链接后的链接,不能看到它在第一页上承诺没有20mb zip文件。 5分钟后,我放弃了。 – brux 2014-05-01 15:12:31
@brux从我给出的链接中,勾选“Code-Point®Open”产品的下载框,转到下一步,填写表单,然后等待带有下载链接的电子邮件。就那么简单。 – 2014-05-01 16:11:28
镜像我知道这是一个老问题,但只是小打小闹在这里与我如何设法达到同样的事情(在PHP中,但应相当简单):
我有一个数以千计不同格式的邮政编码的数据库。我打扫他们的了每一个,要均匀,用这个功能和批量更新:
function clean_postcode($postcode)
{
$out = preg_replace("/[^a-zA-Z0-9]/", '',strtoupper($postcode));
if(strlen($out)>3)
{
$out = substr($out, 0, (strlen($out) -3)).' '.substr($out, -3);
}
return $out;
}
现在所有邮政编码是统一格式,我下载并导入地形测量局的代码点数据组(免费) - https://www.ordnancesurvey.co.uk/opendatadownload/products.html
我在一个单独的codepoint
表中将其所有CSV导入到我的数据库中。从每个CSV导入邮政编码,以及Eastings和Northings值。
我在我的数据库中的所有Ordnance Survey数据上批量再次运行函数。大约50%的邮政编码有空格,50%的编码没有 - 之后,统一设置。
我跑了每个每个邮编在codepoint
表下面的PHP脚本,并拯救了纬度和经度值返回到这个表:http://bramp.net/blog/os-easting-northing-to-lat-long
全部完成!您现在可以匹配并根据格式良好的邮政编码拉取Lat/Lon值。
延伸阅读:http://www.deepbluesky.com/blog/-/converting-os-coodinates-into-longitude-latitude_7/
快速注意那些找到这个苏答案。 Daniel Vassallo的答案使用了现在已被弃用的Google Geocoding API V2。新V3 API使用像这样的请求格式:
http://maps.googleapis.com/maps/api/geocode/output?parameters
用于邮政编码查询的例子,JSON格式返回的数据是:
http://maps.googleapis.com/maps/api/geocode/json?address=SL59JH,+UK&sensor=false
这将返回一个JSON阵列,其包括lat和长在结果>的几何性质 - >位置 - > lat和结果>的几何性质 - >位置 - > LNG
实施例响应:
{
"results" : [
{
"address_components" : [
{
"long_name" : "SL5 9JH",
"short_name" : "SL5 9JH",
"types" : [ "postal_code" ]
},
{
"long_name" : "Windsor and Maidenhead",
"short_name" : "Windsor and Maidenhead",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "United Kingdom",
"short_name" : "GB",
"types" : [ "country", "political" ]
},
{
"long_name" : "Ascot",
"short_name" : "Ascot",
"types" : [ "postal_town" ]
}
],
"formatted_address" : "Ascot, Windsor and Maidenhead SL5 9JH, UK",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 51.39655490000001,
"lng" : -0.66024660
},
"southwest" : {
"lat" : 51.39457330,
"lng" : -0.6624574999999999
}
},
"location" : {
"lat" : 51.39539040,
"lng" : -0.66096740
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 51.39691308029150,
"lng" : -0.6600030697084980
},
"southwest" : {
"lat" : 51.39421511970851,
"lng" : -0.6627010302915021
}
}
},
"types" : [ "postal_code" ]
}
],
"status" : "OK"
}
API规范可在这里:https://developers.google.com/maps/documentation/geocoding/
退房ALgolia地方here。超快速,开放源代码和麻省理工学院
@Daniel ...非常感谢您的反馈..我会解决你的给定解决方案,并会回复你... – Nirmal 2010-04-12 12:26:47
这是仍然工作,因为在我的浏览器中使用上述示例我回到610,0,0,0。无论我的邮政编码样本是什么,总是610,0,0,0? – QFDev 2013-10-10 08:39:34
我认为这是因为这个答案中的例子使用了旧版本的maps API。一个新的例子会是这样的:http://maps.googleapis.com/maps/api/geocode/json?address=SL59JH,+UK&sensor=false。显然,提取lat/lng的查询将需要更改,因为输出现在返回JSON而不是CSV。 – Dan 2014-03-13 10:59:28