使用Python实现基本Google Place添加

时间:2012-08-08 00:26:58

标签: python google-maps-api-3 urllib2

我想允许用户使用我的应用向Google地图添加地点。本教程介绍了如何实施地方搜索https://developers.google.com/academy/apis/maps/places/basic-place-search我了解代码,但地方搜索和地方添加不同。在原地添加我们必须使用POST URL和POST正文https://developers.google.com/places/documentation/?hl=fr#adding_a_place。我不知道如何在我的代码中插入POST主体。我想使用此代码,但要将其调整为Place Add:

import urllib2
import json

AUTH_KEY = 'Your API Key'

LOCATION = '37.787930,-122.4074990'

RADIUS = 5000

url = ('https://maps.googleapis.com/maps/api/place/search/json?location=%s'
     '&radius=%s&sensor=false&key=%s') % (LOCATION, RADIUS, AUTH_KEY)

response = urllib2.urlopen(url)

json_raw = response.read()
json_data = json.loads(json_raw)

if json_data[‘status’] == ‘OK’:
    for place in json_data['results']:
        print ‘%s: %s\n’ % (place['name'], place['reference'])'

修改

感谢您的帮助@codegeek我终于找到了基于此库https://github.com/slimkrazy/python-google-places

的解决方案
url = 'https://maps.googleapis.com/maps/api/place/add/json?sensor=false&key=%s' % AUTH_KEY
data = {
    "location": {
        "lat": 37.787930,
        "lng": -122.4074990
     },
     "accuracy": 50,
     "name": "Google Shoes!",
     "types": ["shoe_store"]
}
request = urllib2.Request(url, data=json.dumps(data))
response = urllib2.urlopen(request)
add_response = json.load(response)
if add_response['status'] != 'OK':
    # there is some error

1 个答案:

答案 0 :(得分:0)

如果您在http://docs.python.org/library/urllib2阅读了urllib2文档,则会明确说明以下内容:

“urllib2.urlopen(url [,data] [,timeout])

  

数据可以是指定要发送到服务器的其他数据的字符串,   如果不需要此类数据,则为“无”。目前HTTP请求是   只有使用数据的人; HTTP请求将是POST而不是   提供数据参数时获取。数据应该是缓冲区   标准application / x-www-form-urlencoded格式。该   urllib.urlencode()函数采用2元组的映射或序列   并以此格式返回一个字符串“

因此,您需要使用data参数调用urlopen函数,然后通过POST发送请求。也。通过Google商家信息添加API页面查看,您需要准备包含位置,累积等内容的数据.enlencode()它应该是好的。 如果您想要一个示例,请参阅以下要点: https://gist.github.com/1841962#file_http_post_httplib.py