通过经纬度获取具体省市区位置地址的Api

通过经纬度获取具体省市区位置地址的Api

本文介绍通过几种方式免费通过经纬度获取到具体位置地址信息的方法

方法一:百度Api(推荐)

经过数个Api的比较,发现百度Api获取到的地理位置数据比较规范,包括省市区等字段,方便实用

http://api.map.baidu.com/geocoder?location=39.90733345,116.391244079988&output=json

返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"status":"OK",
"result":{
"location":{
"lng":116.391244,
"lat":39.907334
},
"formatted_address":"北京市西城区东松树胡同28号",
"business":"和平门,前门,宣武门",
"addressComponent":{
"city":"北京市",
"direction":"near",
"distance":"6",
"district":"西城区",
"province":"北京市",
"street":"东松树胡同",
"street_number":"28号"
},
"cityCode":131
}
}

方法二:阿里云Api

阿里云获取到的数据较不规范,省市区都在一个字段里了,不易使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
"queryLocation": [
39.90733345,
116.391244079988
],
"addrList": [
{
"type": "street",
"status": 1,
"name": "西长安街",
"admCode": "110102",
"admName": "北京市,西城区",
"addr": "",
"nearestPoint": [
116.39173,
39.90742
],
"distance": 7.453
},
{
"type": "poi",
"status": 1,
"name": "升平署旧址",
"id": "ANB000A84ZLK",
"admCode": "110102",
"admName": "北京市,北京市,西城区,",
"addr": "南长街南口路西",
"nearestPoint": [
116.39117,
39.90829
],
"distance": 96.255
},
{
"type": "doorPlate",
"status": 0,
"name": "",
"admCode": "",
"admName": "",
"nearestPoint": [],
"distance": -1
}
]
}

方法三:Python的第三方库(geopy)

这种方式获取到的地址信息与阿里云Api获取的到数据存在一样的问题,但是有一个优点,就是可以获取全世界范围内的地理位置信息。

具体使用请参考我的另一篇文章,点击这里

程序员磊哥 wechat
扫描微信二维码,关注磊哥的公众号