为什么我们在 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”添加到字符串中。谁能解释一下吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这只是一个猜测。
但我假设 a = '...' 是位置字符串,而 FFFFFF0000000 只是末尾的填充,以告诉 API 这是您的请求的结尾?
“a”字符串看起来如此奇怪的原因很可能是因为谷歌地图支持大量的东西,如街景、谷歌地点、图片等。所以在核心,这只是经度和纬度,但有一堆上面有额外的东西。
是的,这只是经度和纬度。
其余的只是填充。
Net、Cid 和 Lac 是 GPS 特定值,我认为 Cid 是您的 ID(CallerID 的缩写),而 Lac 是本地区域代码,所以您可能正在为 Android 做一些事情?
This is just a guess.
But i'm assuming the a = '...' is the location string and the FFFFFF0000000 is just a padding at the end to tell the API that this is the end of your request?
And the reason to why the "a" string looks so odd is most likely because google maps supports a hughe bunch of things such as Streetview, Google Places, pictures etc. So in the core, that's just longitude and latitude but with a bunch of extra stuff on it.
So yea, that's just Longitude and Latitude.
And the rest is just padding.
Net, Cid and Lac are GPS specific values, i think it's Cid that's the ID of you (short for CallerID) and the Lac are the local area code so you're probably doing something for the android?