当使用 android google maps app share button 获取位置时,它只是返回一个 url 作为 intent 给其他应用程序,比如这个:
https: // goo. gl / maps/tkNXzF2krmR2
这是一个谷歌短网址,可翻译成长网址(使用 goole 短网址 api),如下所示:
http://maps.google.com/?q=Tehran+Province,+Tehran,+Banafsheh+3&ftid=0x3f8dfd04d309f925:0x2867166b05b0bfe6&hl=en&gl=us&shorturl=1
很明显,此 url 没有纯纬度和经度值。但似乎值落后于 url 中的 ftid 参数。用“:”字符分隔。
请帮我从这个十六进制格式中提取纬度和经度值
我正在使用 PHP 语言,但其他人也可以提供帮助。 我需要这样的功能:(这是行不通的):
function hextolatlon($hex){ // Assume hex is a value like 0x1446041F or 0x447D1100 // Convert to a signed integer $h=$hex&0xFF; $h=($h>8)&0xFF); $h=($h>16)&0xFF); $h=($h>24)&0xFF); $negative=($h>>31)!=0; // Get the sign if($negative){ $h=~$h; $h=$h&0x7FFFFFFF; $h++; } // Convert to degrees and minutes $degrees=floor($h/10000000); $minutes=$h%10000000; // Convert to full degrees $degrees+=($minutes/100000.0) / 60.0; if($negative)$degrees=-$degrees; return $degrees; }
将 0x3f8dfd04d309f925 转换为 35.74388 之类的东西。 非常感谢
最佳答案
我认为迟到总比没有好。
您尝试解密的 FTID 参数未(必然)存储纬度和经度。如果它指的是 map 地点(例如咖啡馆、时装店),则冒号后参数的第二部分指的是客户 ID。
举一个真实世界的例子,参数:
!1s0x6ad63fbf56e24c27:0xe665b3308d32f379
可以这样理解
0xe665b3308d32f379 ---hex-to-dec---> 16601872622479930233
和https://google.com/maps?cid=16601872622479930233将通向标记的地方。
如何从中提取坐标?如果你只有几个 sample ,你可以手工完成。点击上面的链接,1-2 秒后,谷歌地图将在浏览器中刷新 URL。它现在在 !3d
和 !4d
参数中包含位置的精确坐标。
如果您有很多示例和/或想要自动化该过程,则必须使用 Google Maps API(例如检查此 link)。
我还没有弄明白的是 1)第一个参数包含什么信息和 2) 如果 FTID 参数导致地址或地理位置,如何理解它。
同时检查我发布的问题 here了解更多详情。
关于php - 从谷歌地图 url ftid(十六进制)获取纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44843934/