使用 PHP 地图坐标转换

发布于 2024-10-02 05:01:14 字数 2108 浏览 8 评论 0

  1. 坐标系说明
    • WGS84:为一种大地坐标系,也是目前广泛使用的 GPS 全球卫星定位系统使用的坐标系;
    • GCJ02:表示经过国测局加密的坐标;
    • BD09:为百度坐标系,其中 bd09ll 表示百度经纬度坐标,bd09mc 表示百度墨卡托米制坐标;
  2. 当前互联网地图的坐标系现状
    地球坐标 (WGS84)
    • 国际标准,从专业 GPS 设备中取出的数据的坐标系
    • 国际地图提供商使用的坐标系

    火星坐标 (GCJ-02) 也叫国测局坐标系

    • 中国标准:从国行移动设备中定位获取的坐标数据使用这个坐标系
    • 国家规定:国内出版的各种地图系统(包括电子形式),必须至少采用 GCJ-02 对地理位置进行首次加密。

    百度坐标 (BD-09)

    • 百度标准,百度 SDK,百度地图,Geocoding 使用(本来就乱了,百度又在火星坐标上来个二次加密)。
  3. 开发注意事项
    • 从设备获取经纬度(GPS)坐标
      如果使用的是百度 sdk 那么可以获得百度坐标(bd09)或者火星坐标(GCJ02),默认是 bd09    
      如果使用的是 ios 的原生定位库,那么获得的坐标是 WGS84
      如果使用的是高德 sdk,那么获取的坐标是 GCJ02
      
    • 互联网在线地图使用的坐标系
      火星坐标系:
          iOS 地图(其实是高德)
          Gogole 地图
          搜搜、阿里云、高德地图、腾讯地图
      百度坐标系:
          当然只有百度地图
      WGS84 坐标系:
          国际标准,谷歌国外地图、osm 地图等国外的地图一般都是这个
      
  4. GCJ02 <–> BD09
    <?php
    
    /**
     * 中国正常 GCJ02 坐标---->百度地图 BD09 坐标
     * 腾讯地图用的也是 GCJ02 坐标
     * @param double $lat 纬度
     * @param double $lng 经度
     */
    function Convert_GCJ02_To_BD09($lng,$lat){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng;
        $y = $lat;
        $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta) + 0.0065;
        $lat = $z * sin($theta) + 0.006;
        return array('lng'=>$lng,'lat'=>$lat);
    }
    
    /**
     * 百度地图 BD09 坐标---->中国正常 GCJ02 坐标
     * 腾讯地图用的也是 GCJ02 坐标
     * @param double $lat 纬度
     * @param double $lng 经度
     * @return array();
     */
    function Convert_BD09_To_GCJ02($lng,$lat){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng - 0.0065;
        $y = $lat - 0.006;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta);
        $lat = $z * sin($theta);
        return ['lng'=>$lng,'lat'=>$lat];
    }
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
24 人气
更多

推荐作者

新人笑

文章 0 评论 0

mb_vYjKhcd3

文章 0 评论 0

小高

文章 0 评论 0

来日方长

文章 0 评论 0

哄哄

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文