为什么在Google Maps API中使用mmap时要添加这段代码?
net, cid, lac = 404415, 40962, 128
import urllib
# net = MCC 404 & MNC 415
a = '000E00000000000000000000000000001B0000000000000000000000030000'
b =hex(cid)[2:].zfill(8) + hex(lac)[2:].zfill(8)
c = hex(divmod(net,100)[1])[2:].zfill(8) + hex(divmod(net,100)[0])[2:].zfill(8)
string = (a + b + c+ 'FFFFFFFF00000000').decode('hex')
try:
data = urllib.urlopen('http://www.google.com/glm/mmap',string)
r = data.read().encode('hex')
if len(r) > 14:
print float(int(r[14:22],16))/1000000, float(int(r[22:30],16))/1000000
else:
print 'no data in google'
except:
print 'connect error'
我想搞明白为什么我们需要以这种特定的格式发送给mmap。特别是关于
a = '000E00000000000000000000000000001B0000000000000000000000030000'
为什么要在字符串后面加上'FFFFFFFF00000000'。有没有人能解释一下这个吗?
1 个回答
0
这只是一个猜测。
我猜这里的 a = '...' 是位置字符串,而 FFFFFF0000000 只是用来告诉API你请求的结束的填充内容,对吧?
至于为什么 "a" 字符串看起来那么奇怪,可能是因为谷歌地图支持很多功能,比如街景、谷歌地点、图片等等。所以从根本上说,这其实就是经度和纬度,但加了一堆额外的信息。
所以没错,这就是经度和纬度。而其他的部分只是填充。
Net、Cid 和 Lac 是GPS特定的值,我觉得 Cid 是你的ID(CallerID的缩写),而 Lac 是本地区域码,所以你可能是在做一些安卓相关的事情?