Google静态地图API:将路由表示为编码的多段线

2024-10-01 17:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用编码的折线来表示静态地图上多个点之间的路线。它的代码在一个名为getStaticMapAddress的函数中,定义如下:

def getStaticMapAddress(self, route):
    destUser = DestUser(self.destination)
    route += [destUser]
    attempts = 0
    while attempts < 10:
        try:
            encodedPolyline = self.encodePolyLine(route)
            break
        except googlemaps.GoogleMapsError:
            print "Error. Try again"
            attempts += 1
    url = "http://maps.google.com/maps/api/staticmap?zoom="+encodedPolyline[1]+"&sensor=false&size=400x400&markers="
    i=0
    while i<len(route):
        url += str(route[i].location.lat)+","+str(route[i].location.lng)
        i=i+1
        if i < len(route):
            url += "|"
    url += "&path=color:0xff0000ff|weight:5|enc:"+encodedPolyline[0]
    return url

路由被表示为用户对象的列表(DestUser是其中的一个子类)。这个self.encodePolyLine()方法定义如下:

^{pr2}$

这个glineenc模块来自here,它接受一个坐标对列表,返回一个包含编码行字符串的对和一个表示最大缩放级别的编码字符串,以便能够看到所有点。所以,我有一条从布莱顿,伦敦,布里斯托尔和曼彻斯特之间的路线,我已经把它交给了这个部门。以下URL是输出:

http://maps.google.com/maps/api/staticmap?zoom=B@@@@@?@AA@AA??A@@A@A@?@@@@@@@@B?@@@@@A@@@@@@?B@@AABABA@@@@@@@B&sensor=false&size=400x400&markers=50.8202008,-0.1324898|51.447341,-0.0761212|51.4608947,-2.5884312|53.4778853,-2.2308146|53.4778853,-2.2308146&path=color:0xff0000ff|weight:5|enc:b|XqvduHm@cDcMhAfAfFrc@{BlJgDqHaZkEy[vsKiwp@ciHahd@}nEwoK_KqB_QmoIpAyBw@Mv_BqxDmC`EasCvAeFuuAwi@_Rq|DuVnYgPdXyHvIcBcSgElgBkqBzKgh@`xD_cAzBpBvNM{HsHh]wNfbCzOxpCrUjeD_`Ahi@pItyGdXj`D_PjctLa}BzhH~nFn\dPfe@bObv@dC`i@fS_HrFk@~AmAzDsW_Ak_CmiAkuGy_GvxDctEolnBcpdEhtPc}Srp~AcvsCi_a@clJakR`]kiCr]opDtRcW}JhVcV_EmDaDhFkCc@

如果你看这个,你会发现有些地方出了问题。我不确定到底发生了什么,但我注意到,如果用赤道和子午线作为对称线来反映,新路线似乎是正确路线的投影。不知道它为什么会这样做,但这就是我所能看到的问题的可能原因。有什么想法吗?在


Tags: selfhttpurl编码定义路线routemaps

热门问题