【问题标题】:Get lat/lon from google maps url ftid (hex)从谷歌地图 url ftid (hex) 获取纬度/经度
【发布时间】:2017-12-04 06:21:11
【问题描述】:

当使用 android 谷歌地图应用共享按钮获取某个位置时,它只是将一个 url 作为意图返回给像这样的其他应用程序:

https://goo. gl/maps/tkNXzF2krmR2

这是一个谷歌短网址,可以翻译成长网址(使用 goole short url api),如下所示:

http://maps.google.com/?q=Tehran+Province,+Tehran,+Banafsheh+3&ftid=0x3f8dfd04d309f925:0x2867166b05b0bfe6&hl=en&gl=us&shorturl=1

很明显,这个网址没有纯纬度和经度值。但似乎值在 url 中的 ftid 参数后面。以“:”字符分隔。

请帮我从这种类似十六进制的格式中提取纬度和经度值

我正在使用 PHP 语言,但其他人也可以提供帮助。 我需要一个这样的功能:(这是行不通的):

函数 hextolatlon($hex){ // 假设 hex 是一个像 0x1446041F 或 0x447D1100 这样的值 // 转换为有符号整数 $h=$hex&0xFF; $h=($h>8)&0xFF); $h=($h>16)&0xFF); $h=($h>24)&0xFF); $负=($h>>31)!=0; // 获取符号 如果($负){ $h=~$h; $h=$h&0x7FFFFFFF; $h++; } // 转换为度和分 $度=地板($h/10000000); $分钟=$h%10000000; // 转换为全度 $度+=($分钟/100000.0) / 60.0; 如果($负)$度=-$度; 返回$度; }

将 0x3f8dfd04d309f925 转换为 35.74388 之类的东西。 非常感谢

【问题讨论】:

    标签: php android google-maps location hex


    【解决方案1】:

    我认为,迟到总比没有好。

    您尝试解密的 FTID 参数不是(必然)存储纬度和经度。如果它指的是地图位置(例如咖啡馆、时装店),则冒号后面的参数的第二部分指的是客户 ID。

    举一个真实的例子,参数:

    !1s0x6ad63fbf56e24c27:0xe665b3308d32f379
    

    可以这样理解

    0xe665b3308d32f379  ---hex-to-dec--->  16601872622479930233
    

    和https://google.com/maps?cid=16601872622479930233 将指向标记的地方。

    如何从中提取坐标?如果你只有几个样品,你可以手工完成。点击上面的链接,1-2秒后,谷歌地图会刷新浏览器中的网址。它现在在!3d 和!4d 参数中包含该地点的确切坐标。

    如果您有很多样本和/或想要使流程自动化,则必须使用 Google Maps API(例如查看 link)。

    我还没想明白的是 1)第一个参数包含什么信息以及 2) 如果 FTID 参数指向地址或地理位置,如何理解它。

    请查看我在here 发布的问题以了解更多详情。

    【讨论】:

      【解决方案2】:
      function ftid_to_latlong($ftid)
      {
          $fetch = curl_request("https://www.google.com/maps?ftid=$ftid");
          preg_match("/\"$ftid\",.*?(\d+\.\d+),(\d+\.\d+)/", $fetch, $geo);
          return [$geo[1], $geo[2]];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-28
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多