我正在尝试使用编码折线表示静态地图上的多个点之间的路线。这个代码在一个名为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
路由表示为User对象列表(DestUser是其子类)。 self.encodePolyLine()方法定义如下:
def encodePolyLine(self, route):
routePairs = []
destUser = DestUser(self.destination)
route += [destUser]
i=0
while (i < len(route)-1):
# GET ALL TURNING POINTS FOR EACH POINT ON ROUTE, THEN PUT THEM
# IN PAIRS AND SEND THEM TO glineenc.encode_pairs()
for step in gmaps.directions(gmaps.latlng_to_address(route[i].location.lat, route[i].location.lng), gmaps.latlng_to_address(route[i+1].location.lat, route[i+1].location.lng))['Directions']['Routes'][0]['Steps']:
routePairs += [(step['Point']['coordinates'][0], step['Point']['coordinates'][1])]
i=i+1
return glineenc.encode_pairs(routePairs)
此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@
如果您查看此内容,您可以看到出现问题。我不确定究竟发生了什么,但我注意到,如果使用赤道和子午线作为对称线反射,新路线似乎是正确路线的投影。不知道为什么它会这样做,但这是我能看到的所有问题的可能原因。有什么想法吗?
答案 0 :(得分:3)
随机猜测:您不小心交换了经度和纬度参数。