市面上基本没有免费获取地理位置的方法,特别是对实时性要求比较高的情况下,基本上都是付费服务。

  本文使用Google地图API,在实时性要求不太高的情况下,能够不断获取GPS对应地址位置信息。

原理

  调用Google地图API

http://maps.google.cn/maps/api/geocode/json?latlng=lat,lng

返回的数据为5条距离该GPS最近的地表信息,第一条一般为距离最近的建筑物信息。我们获取的信息为:formatted_address,即为格式化的地址信息。样例:

中国浙江省嘉兴市南湖区凤启路98号

可以看出,该地中具有国家、省份、城市、区县、路名、具体位置等信息,完全符合我们的实际需求。

测试结果

  本文作者通过随机生成的30万条GPS数据测试,能够获取最终结果不会存在获取不到的情况。

  通常情况下该API获取的内容存在状态字段,即:status字段。一般为“OK”,即爬去成功的,其他状态一般是请求出错、并发异常等内容引起的。

1. 该API对并发存在一定要求,因此无法大量、频繁并发获取内容;
2. 比较好的一个方法是,通过高匿代理来获取API信息,每个代理使用几个线程,这样能够达到快速、高频并发的要求。