首先感谢java版作者@宋宋宋伟,java版我是看http://blog.csdn.net/coolypf/article/details/8569813

然后根据java代码修改成了php代码。

     <?php

     /**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标
*
* @param gg_lat
* @param gg_lon
* @return
*/
function gcj02_To_Bd09($gg_lon, $gg_lat) {
$x = $gg_lon;
$y = $gg_lat;
$z = Math.sqrt($x * $x + $y * $y) + 0.00002 * Math.sin($y * pi());
$theta = Math.atan2($y, $x) + 0.000003 * Math.cos($x * pi());
$bd_lon = $z * Math.cos($theta) + 0.0065;
$bd_lat = $z * Math.sin($theta) + 0.006;
return array($bd_lon, $bd_lat);
} /**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 BD-09 坐标转换成GCJ-02 坐标
*
* @param bd_lon
* @param bd_lat
* @return
*/
function bd09_To_Gcj02($bd_lon, $bd_lat) {
$x = $bd_lon - 0.0065;
$y = $bd_lat - 0.006;
$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * pi());
$theta = atan2($y, $x) - 0.000003 * cos($x * pi());
$gg_lon = $z * cos($theta);
$gg_lat = $z * sin($theta);
return array($gg_lon, $gg_lat);
} function coordinate_switch($a,$b){//百度转腾讯坐标转换
$x = (double)$b - 0.0065;
$y = (double)$a - 0.006;
$x_pi = 3.14159265358979324;
$z = sqrt($x * $x+$y * $y) - 0.00002 * sin($y * $x_pi);
$theta = atan2($y,$x) - 0.000003 * cos($x*$x_pi);
$gb = number_format($z * cos($theta),15);
$ga = number_format($z * sin($theta),15);
return ['Latitude'=>$ga,'Longitude'=>$gb];
} function coordinate_switchf($a,$b){//腾讯转百度坐标转换
$x = (double)$b ;
$y = (double)$a;
$x_pi = 3.14159265358979324;
$z = sqrt($x * $x+$y * $y) + 0.00002 * sin($y * $x_pi);
$theta = atan2($y,$x) + 0.000003 * cos($x*$x_pi);
$gb = number_format($z * cos($theta) + 0.0065,6);
$ga = number_format($z * sin($theta) + 0.006,6); return ['Latitude'=>$ga,'Longitude'=>$gb]; } // // 113.139278,23.112388
$bd_lon = 23.112388;
$bd_lat = 113.139278;
// print_r(bd09_To_Gcj02($bd_lon, $bd_lat));
print_r(coordinate_switch($bd_lon, $bd_lat));
// // 23.106200,113.132840
$gg_lon = 23.106200;
$gg_lat = 113.132840;
// print_r(gcj02_To_Bd09($gg_lon, $gg_lat));
print_r(coordinate_switchf($gg_lon, $gg_lat));

【PHP版】火星坐标系 (GCJ-02) 与百度坐标系 (BD-09ll)转换算法的更多相关文章

  1. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    $x_pi = 3.14159265358979324 * 3000.0 / 180.0; //火星坐标系 (GCJ-02)转百度坐标系 (BD-09)算法 function bd_encrypt($ ...

  2. iOS 地图坐标系之间的转换WGS-84世界标准坐标、GCJ-02中国国测局(火星坐标,高德地图)、BD-09百度坐标系转换

    开发过程中遇到地图定位不准确,存在偏差.首先确认你获取到的坐标所在坐标系跟地图数据是不是相匹配的. 常用的地图SDK:高德地图使用的是GCJ-02(也就是火星坐标系),百度使用的是BD-09百度坐标系 ...

  3. (数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换

    一.简介 主流被使用的地理坐标系并不统一,常用的有WGS84.GCJ02(火星坐标系).BD09(百度坐标系)以及百度地图中保存矢量信息的web墨卡托,本文利用Python编写相关类以实现4种坐标系统 ...

  4. JAVA火星坐标系、百度坐标系、84坐标系相互转换工具类

    /** * 坐标系转换工具类 */ public class PositionUtil { public static double pi = 3.1415926535897932384626; pu ...

  5. [转]iOS开发中的火星坐标系及各种坐标系转换算法

     iOS开发中的火星坐标系及各种坐标系转换算法 源:https://my.oschina.net/u/2607703/blog/619183   其原理是这样的:保密局开发了一个系统,能将实际的坐标转 ...

  6. iOS开发中的火星坐标系及各种坐标系转换算法

    原文地址:http://m.oschina.net/blog/619183?ref=myread 其原理是这样的:保密局开发了一个系统,能将实际的坐标转换成虚拟的坐标.所有在中国销售的数字地图必须使用 ...

  7. 地球坐标-火星坐标-百度坐标及之间的转换算法 C#

    美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置.但在我国,出于国家安全考虑,国内所有导航电子地图必须使 用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密 ...

  8. Objective-C上地球坐标系到火星坐标系转换算法

    Objective-C上地球坐标系到火星坐标系转换算法 http://blog.csdn.net/zhaoxy_thu/article/details/17033347

  9. Visual Studio 2017 Enterprise 发布 15.3.3 版,附离线安装包百度网盘下载。

    Visual Studio 2017 Enterprise 发布 15.3.3 版,附离线安装包百度网盘下载. Visual Studio 2017 Enterprise 更新至 15.3.3 ,本安 ...

随机推荐

  1. 自己写的一个用js把select换成div与span与ul的东西

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. L2-007 家庭房产 (25 分) (并查集)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...

  3. [Linux]返回被阻塞的信号集

    一.概述 在另一篇实例说到,进程可以屏蔽它不想接收的信号集. 事实上这些被屏蔽的信号只是阻塞在内核的进程表中,因为他们不能递送给进程,所以状态是未决的(pending). 利用sigpending函数 ...

  4. 关于Integer比较问题

    public class Test { public static void main(String[] args) { Integer a=127; Integer b=127; System.ou ...

  5. 编译Nginx

    需要在默认配置中加入auth模块(http_auth_request_module). 我的环境:Ubuntu Ubuntu 14.04.1 LTS,amd64bit 下载nginx的源代码,如:ng ...

  6. OpenCV-Python-边缘检测

    Canny边缘检测方法被誉为边缘检测的最优方法. import cv2 import numpy as np img = cv2.imread('handwriting.jpg', 0) edges ...

  7. vue修改项目名

    1.修改config/index.js文件 2.修改Router内容 vue跨域设置

  8. pwn学习(1)

    0x00 简介 入职之后,公司发布任务主搞pwn和re方向,re之前还有一定的了解,pwn我可真是个弟弟,百度了一番找到了蒸米大佬的帖子,现在开始学习. 0x01 保护方式 NX (DEP):堆栈不可 ...

  9. spring boot+mybatis+quartz项目的搭建完整版

    1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...

  10. 【webpack系列】从零搭建 webpack4+react 脚手架(五)

    本章节,我们一起来探讨以下问题:如何对编译后的文件进行gzip压缩,如何让开发环境的控制台输出更加高逼格,如何更好的对编译后的文件进行bundle分析等. 1 gzip压缩 如果你想节省带宽提高网站速 ...