如何以编程方式从Google地图获取我的地点列表?

时间:2013-07-19 12:33:53

标签: google-maps-api-3 google-api google-account

我正在制作使用Google Maps API v3的网络应用。我想在地图上显示一些存储在Google地图上用户Google帐户“我的地点”部分的地方。

我知道google Maps API支持KML,我可以从Google Maps My Places下载KML。 但我想以编程方式执行此操作。

示例:

用户访问我的网站,使用他/她的Google凭据登录,他们可以看到他们保存的地点列表。点击其中一个后,该地点将显示在我的网络应用上的地图上。

请建议我如何去做。

我找到了这个Access locations in My Places of a particular account through Google Maps API并尝试了这种方式:

import urllib2, urllib, re, getpass

username = 'abhishekworld'
senha = getpass.getpass('password' + username + ':')

dic = {
        'accountType':      'GOOGLE',
        'Email':            (username + '@gmail.com'),
        'Passwd':           senha,
        'service':          'local',
        'source':           'themappers'
        }
url = 'https://www.google.com/accounts/ClientLogin?' + urllib.urlencode(dic)
print url
output = urllib2.urlopen(url).read()
authid = output.strip().split('\n')[-1].split('=')[-1]

request = urllib2.Request('http://maps.google.com/maps/feeds/maps/default/full?access_token='+authid)
request.add_header('Authorization', 'GoogleLogin auth=%s' % authid)
source = urllib2.urlopen(request).read()
open('feed.xml','w').write(source)
for link in re.findall('<link rel=.alternate. type=.text/html. href=((.)[^\1]*?)>', source):
    s = link[0]
    if 'msa=0' in s:
        msid = s.split(";")[-1]
        print "https://maps.google.com/maps/ms?authuser=0&vps=2&ie=UTF8&msa=0&output=kml&"+msid

虽然这样可以正常运行,但经过几次登录后,Google会向您发送一封电子邮件,说“报告可疑活动”,因此我需要一个干净的解决方案。如果有任何干净的方法,请告诉我。

0 个答案:

没有答案