前言
业务需要根据经纬度获取该城市的邮政编码,需要通过调用GoogleMaps来搜索地点,来获取地点的详细信息。于是查阅了一些相关的资料,特意分享出来给大家参考参考。
涉及相关的资料:
google官方文档
GoogleMaps Geocoding API:https://developers.google.com/maps/documentation/geocoding/geocoding-strategies
GoogleMaps Places API Web Service:https://developers.google.com/places/web-service/search?hl=zh-tw
使用的python包:
http://github.com/slimkrazy/python-google-places
https://github.com/googlemaps/google-maps-services-python
前提条件:你能够正常访问Google!
如果不能正常访问到google就想用GoogleMaps,那这就比较尴尬了,我也很无奈。
1.准备工作
你得有个google账号,打开https://console.developers.google.com/apis/credentials?project=imperial-palace-174906&authuser=0
1.1创建google项目获取项目秘钥
如果还没创建项目的话,那先创建个项目,我这里是创建了一个googlemaps的项目
请记住3中圈中的秘钥,我们代码中要使用到。
1.2在项目中添加googleMaps服务:Google Maps Geocoding API,Google Places API Web Service
在刚刚创建的项目库中,添加googleMaps的Google Maps Geocoding API和Google Places API Web Service
(由于我已经添加了,所以列表中是没有显示的)
1.3然后在信息中心就可以看到你刚才添加的两个maps服务
上面的图片是最近是用项目秘钥请求这个maps服务的一些图标
2.安装python所需的包(我使用的是python2.7.12版本)
两个包分别是:
http://github.com/slimkrazy/python-google-places (警示:这个包存在一个严重的bug,详情:http://blog.csdn.net/dongyouyuan/article/details/77169560)
pip安装:pip install python-google-places
https://github.com/googlemaps/google-maps-services-python
pip安装:pip install -U googlemaps
你会发现googlemaps中也有python-google-places中的功能,想问我为毛还用一个第三方的包,然而我真的无言以对,鬼知道我当初为什么用这个包。0.0(我当时搜google maps places api python 第一个就是 http://github.com/slimkrazy/python-google-places就用了)后面看有没有时间,对比一下这包和google官方包的区别
————-2017-08-04补充———————————————————————————————————–
看了一下googlemaps中的python-google-places的功能,发现其返回地点的内容实在是少,只有寥寥无几的几个字段。 http://github.com/slimkrazy/python-google-places中详细程度真的是很厉害。所用用它是没错的
{
"rating": 5,
"name": "STR Analytics",
"reference": "CmRRAAAAEyrq32Ve7RKLtI6CWpaAoTFrR2yVWlKTfnbNTmCRLj3yXcIs2k6H45JPPwPZyIpMPxEBfVIqdD9BTWekJliAvgX_OH-FJyYUWnso9oZ2CjN97I2GWhXTSK1TBUo3HBVxEhDRxa-R4nxh8UqHeJPi9LHtGhQ6VMxxTnuXCwm9vZgY0IcnTaqQhg",
"geometry": {
"location": {
"lat": 39.9148173,
"lng": -105.1206877
},
"viewport": {
"northeast": {
"lat": 39.9158015802915,
"lng": -105.1193284197085
},
"southwest": {
"lat"