为什么在Google Maps API中使用mmap时要添加这段代码?

1 投票
1 回答
818 浏览
提问于 2025-04-17 02:04
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 是本地区域码,所以你可能是在做一些安卓相关的事情?

撰写回答