moh*_*ani 1 php android hex location google-maps
当使用android Google Maps App共享按钮作为位置时,它只是向其他类似这样的应用程序返回一个URL:
https:// o gl /地图/ tkNXzF2krmR2
这是一个Google短网址,可以转换为长网址(使用goole短网址api),如下所示:
http://maps.google.com/?q=Tehran+Province,+Tehran,+Banafsheh+3&ftid=0x3f8dfd04d309f925:0x2867166b05b0bfe6&hl=zh-CN&gl=us&shorturl=1
显然,此url没有纯的纬度和经度值。但似乎值在url中的ftid参数后面。用“:”字符分隔。
请帮助我从这种十六进制格式提取纬度和经度值
我正在使用PHP语言,但其他人也可以提供帮助。我需要这样的功能:(这不起作用):
函数hextolatlon($ hex){
//假设十六进制为0x1446041F或0x447D1100之类的值
//转换为有符号整数
$ h = $ hex&0xFF;
$ h =($ h> 8)&0xFF);
$ h =($ h> 16)&0xFF);
$ h =($ h> 24)&0xFF);
$ negative =($ h >> 31)!= 0; //获得标志
if($ negative){
$ h =〜$ h;
$ h = $ h&0x7FFFFFFF;
$ h ++;
}
//转换为度和分钟
$ degrees = floor($ h / 10000000);
$ minutes = $ h%10000000;
//转换为全学位
$ degrees + =($ minutes / 100000.0)/ 60.0;
if($ negative)$ degrees =-$ degrees;
返回$ degrees;
}
将0x3f8dfd04d309f925转换为类似35.74388的格式。非常感谢
我认为,迟到总比没有好。
您尝试解密的FTID参数未(必需)存储纬度和经度。如果它指的是地图上的地方(例如咖啡馆,时装店),则冒号后面的参数的第二部分指的是客户ID。
举一个真实的例子,参数:
!1s0x6ad63fbf56e24c27:0xe665b3308d32f379
Run Code Online (Sandbox Code Playgroud)
可以这样理解
0xe665b3308d32f379 ---hex-to-dec---> 16601872622479930233
Run Code Online (Sandbox Code Playgroud)
并且https://google.com/maps?cid=16601872622479930233将带到标记的地方。
如何从中提取坐标?如果您只有几个样本,则可以手动完成。单击上面的链接,然后在1-2秒后,Google Maps将刷新浏览器中的URL。现在,它在!3dand !4d参数中包含该地点的确切坐标。
如果您有很多示例和/或想要使过程自动化,则必须使用Google Maps API(例如,检查此链接)。
我仍然没有弄清楚的是:1)第一个参数保存哪些信息,以及2)如果FTID参数指向地址或地理位置,则如何理解。
还要检查我的问题在这里发布的更多详细信息。