<?php /*
$lng = "112°47′23.16″";
$lat = "36°49′47.31″";// 度分秒转十进制度
$lng = CoordinateTransform::degreeMinuteSecondToDecimal($lng);
$lat = CoordinateTransform::degreeMinuteSecondToDecimal($lat);
// var_dump(array($lng,$lat));
$lng='111.655390';
$lat='40.802057';
// var_dump(array($lng,$lat));
// 本地函数经纬度转换
var_dump(CoordinateTransform::wgs84ToBd09($lng, $lat));*//*** wgs84 转百度地图坐标* @param $lng* @param $lat* @return array* https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition*/
function toBaiduLocation($lng,$lat){$ak = 'Ag9hndVu8E1I30MH0GfIyPy17gnPVZPw';$url = 'https://api.map.baidu.com/geoconv/v1/?coords='.$lng.','.$lat.'&from=1&to=5&ak='.$ak;$result =  curl_request($url);// var_dump($url);// var_dump($result);$json = json_decode($result,true);if($json['status'] == 0 && isset($json['result'][0])){$res = $json['result'][0];return array('lng'=>$res['x'],'lat'=>$res['y']);}return array('lng'=>$lng,'lat'=>$lat);
}if (!function_exists('curl_request')) {//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookiesfunction curl_request($url,$post='',$cookie='', $returnCookie=0){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($curl, CURLOPT_AUTOREFERER, 1);curl_setopt($curl, CURLOPT_REFERER, "http://XXX");if($post) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));}if($cookie) {curl_setopt($curl, CURLOPT_COOKIE, $cookie);}curl_setopt($curl, CURLOPT_HEADER, $returnCookie);curl_setopt($curl, CURLOPT_TIMEOUT, 10);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);$data = curl_exec($curl);if (curl_errno($curl)) {return curl_error($curl);}curl_close($curl);if($returnCookie){list($header, $body) = explode("\r\n\r\n", $data, 2);preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);$info['cookie']  = substr($matches[1][0], 1);$info['content'] = $body;return $info;}else{return $data;}}}// $res =  toBaiduLocation($lng, $lat);
// var_dump($res);// 坐标转换库
class CoordinateTransform
{const x_PI = 3.14159265358979324 * 3000.0 / 180.0;const PI = 3.1415926535897932384626;const a = 6378245.0;const ee = 0.00669342162296594323;/*** 度分秒转十进制度* @param $deg* @return bool|float|int|mixed|string*/public static function degreeMinuteSecondToDecimal($deg){$_oldCon = $deg;$deg = rtrim(str_replace(['‘’', '’‘', '’', '°', '′', '″', ''', '“', '”'], '.', $deg), '.');$pointCount = substr_count($deg, '.');if ($pointCount == 1) { // 形如: 111.23412 需要生成第二个点if ($_oldCon == $deg) return $deg;[$str1, $str2] = explode('.', $deg);if (strlen($str2) > 2) {$str2 = substr($str2, 0, 2).'.'.substr($str2, 2);$deg = $str1.'.'.$str2;}} else if ($pointCount == 2) {$deg .= '.0';}try {// 形如: 111.23.412 或 111.23.41.2[$deg1, $deg2, $deg3] = explode('.', $deg, 3);$deg = $deg1 + $deg2/60 + $deg3/3600;return $deg;} catch (\Exception $e) {return false;}}/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* @param $bdLon float|string* @param $bdLat float|string* @return array*/public static function bd09ToGcj02($bdLon, $bdLat){$x = $bdLon - 0.0065;$y = $bdLat - 0.006;$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * self::PI);$theta = atan2($y, $x) - 0.000003 * cos($x * self::PI);$gg_lng = $z * cos($theta);$gg_lat = $z * sin($theta);// Point point=new Point($gg_lng, $gg_lat);// return point;return [$gg_lng, $gg_lat];}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换* 即谷歌、高德 转 百度* @param $lng float|string* @param $lat float|string* @return array*/public static function gcj02ToBd09($lng, $lat){$z = sqrt($lng * $lng + $lat * $lat) + 0.00002 * sin($lat * self::PI);$theta = atan2($lat, $lng) + 0.000003 * cos($lng * self::PI);$bd_lng = $z * cos($theta) + 0.0065;$bdLat = $z * sin($theta) + 0.006;//Point point=new Point(bd_$lng, $bdLat);// return point;return [$bd_lng, $bdLat];}/*** WGS84转GCj02* @param $lng float|string* @param $lat float|string* @return array*/public static function wgs84ToGcj02($lng, $lat){$dlat = self::transformlat($lng - 105.0, $lat - 35.0);$dlng = self::transformlng($lng - 105.0, $lat - 35.0);$radlat = $lat / 180.0 * self::PI;$magic = sin($radlat);$magic = 1 - self::ee * $magic * $magic;$sqrtmagic = sqrt($magic);$dlat = ($dlat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrtmagic) * self::PI);$dlng = ($dlng * 180.0) / (self::a / $sqrtmagic * cos($radlat) * self::PI);$mglat = $lat + $dlat;$mglng = $lng + $dlng;//Point point=new Point($mglng, $mglat);// return point;return [$mglng, $mglat];}/*** GCJ02 转换为 WGS84* @param $lng float|string* @param $lat float|string* @return array*/public function gcj02ToWgs84($lng, $lat){$dlat = self::transformlat($lng - 105.0, $lat - 35.0);$dlng = self::transformlng($lng - 105.0, $lat - 35.0);$radlat = $lat / 180.0 * self::PI;$magic = sin($radlat);$magic = 1 - self::ee * $magic * $magic;$sqrtmagic = sqrt($magic);$dlat = ($dlat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrtmagic) * self::PI);$dlng = ($dlng * 180.0) / (self::a / $sqrtmagic * cos($radlat) * self::PI);$mglat = $lat + $dlat;$mglng = $lng + $dlng;// Point point=new Point($mglng, $mglat);// return point;return [$mglat, $mglng];}/*** WGS84 转换为 BD-09* @param $lng float|string* @param $lat float|string* @return array*/public static function wgs84ToBd09($lng, $lat){//第一次转换$dlat = self::transformlat($lng - 105.0, $lat - 35.0);$dlng = self::transformlng($lng - 105.0, $lat - 35.0);$radlat = $lat / 180.0 * self::PI;$magic = sin($radlat);$magic = 1 - self::ee * $magic * $magic;$sqrtmagic = sqrt($magic);$dlat = ($dlat * 180.0) / ((self::a * (1 - self::ee)) / ($magic * $sqrtmagic) * self::PI);$dlng = ($dlng * 180.0) / (self::a / $sqrtmagic * cos($radlat) * self::PI);$mglat = $lat + $dlat;$mglng = $lng + $dlng;//第二次转换$z = sqrt($mglng * $mglng + $mglat * $mglat) + 0.00002 * sin($mglat * self::x_PI);$theta = atan2($mglat, $mglng) + 0.000003 * cos($mglng * self::x_PI);$bd_lng = $z * cos($theta) + 0.0065;$bdLat = $z * sin($theta) + 0.006;return [$bd_lng, $bdLat];}private static function transformlat($lng, $lat){$ret = -100.0 + 2.0 * $lng + 3.0 * $lat + 0.2 * $lat * $lat + 0.1 * $lng * $lat + 0.2 * sqrt(abs($lng));$ret += (20.0 * sin(6.0 * $lng * self::PI) + 20.0 * sin(2.0 * $lng * self::PI)) * 2.0 / 3.0;$ret += (20.0 * sin($lat * self::PI) + 40.0 * sin($lat / 3.0 * self::PI)) * 2.0 / 3.0;$ret += (160.0 * sin($lat / 12.0 * self::PI) + 320 * sin($lat * self::PI / 30.0)) * 2.0 / 3.0;return $ret;}private static function transformlng($lng, $lat){$ret = 300.0 + $lng + 2.0 * $lat + 0.1 * $lng * $lng + 0.1 * $lng * $lat + 0.1 * sqrt(abs($lng));$ret += (20.0 * sin(6.0 * $lng * self::PI) + 20.0 * sin(2.0 * $lng * self::PI)) * 2.0 / 3.0;$ret += (20.0 * sin($lng * self::PI) + 40.0 * sin($lng / 3.0 * self::PI)) * 2.0 / 3.0;$ret += (150.0 * sin($lng / 12.0 * self::PI) + 300.0 * sin($lng / 30.0 * self::PI)) * 2.0 / 3.0;return $ret;}}?>

wgs84 转百度地图坐标相关推荐

  1. c# point偏移_GMap.NET开发技巧(四)-GPS百度地图坐标偏移及地图加偏和逆向纠偏解决方法和代码...

    很多国内开发者使用GMap.NET开发地图应用程序,非常方便,可是在实际应用中傻眼了,因为GPS坐标的位置在谷歌和百度地图上出现了严重的便宜,这个是要了命的,地图应用就是要给别人一个精确的Locati ...

  2. java 地图坐标转换_百度地图坐标和高德地图坐标转换代码 Java实现

    最近做项目需要百度地图坐标转换到高德地图坐标,高德官方也给出了转换接口(百度地图也给出了转换接口) http://lbs.amap.com/api/javascript-api/reference/l ...

  3. android gps 火星坐标,GPS真实坐标与火星地图坐标/百度地图坐标的转换

    #include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; HardwareSerial ss( ...

  4. 微信JS-SDK坐标位置转换为百度地图坐标

    原文:微信JS-SDK坐标位置转换为百度地图坐标 微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转 ...

  5. 腾讯地图转换成百度地图坐标

    https://www.jianshu.com/p/0fe30fcd4ae7 一.各个坐标系的概况 众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则 ...

  6. 真实GPS坐标信息转百度地图坐标

    第一次写博客,记录自己成长的过程.如有是错误的地方,请大家提出. 做了一个小的项目,遇到通过模块获得的真实的GPS信息,需要转换到百度地图上显示.后来在网上查阅, 真实标准坐标即我们获取到的坐标,真实 ...

  7. GPS坐标转百度地图坐标的方法

    转自:GPS坐标转百度地图坐标的方法 - 程序员大本营 首先需要认识一下GPS的坐标系.GPS坐标系遵循WGS-84标准,在这个标准下,GPS芯片可以发出不同的数据包格式.根据其数据帧帧头的不同,GP ...

  8. 高德地图与百度地图坐标相互转化

    高德地图与百度地图坐标相互转化 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标 ...

  9. java百度地图坐标_java腾讯地图与百度地图坐标转换

    /** * 坐标转换,腾讯地图转换成百度地图坐标 * @param lat 腾讯纬度 * @param lon 腾讯经度 * @return 返回结果:经度,纬度 */ public String m ...

  10. 百度地图坐标转成腾讯地图坐标

    后台坐标是百度地图标记的,小程序是腾讯地图,客户发现一个楼盘在河里,觉得很奇怪,再看看其他的楼盘,位置都不对,之后才发现百度自成体系. 百度地图与腾讯地图坐标转换_James-CSDN博客转换结果会有 ...

最新文章

  1. python中opener_详解在Python程序中使用Cookie的教程
  2. 如何在github发布个人网站或开源项目-手把手教您制作并发布个人网站或主页(二)
  3. AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】
  4. Eclipse 插件开发遇到问题心得总结
  5. axis wsdl2java 命令_axis2常用命令(wsdl2java)
  6. 关于本学期学校数据库课程的总结和一些心得
  7. 微信开放平台认证后怎么实现扫码登录功能
  8. 转载:凯明事件背后:TD的煎熬
  9. 计算机控制系统机器人,机器人的控制系统
  10. excel表格如何转换成word表格_Excel表格转换为Word表格?99%的人想不到这样做最简单!...
  11. STM8L051比较器使用案例(二)COMP1+COMP2构成窗口比较器
  12. 轻松Git与Github入门
  13. java实现数字转大写
  14. 3.1 CUDA执行模型概述
  15. 新闻关键字提取和新闻推荐
  16. 身份证OCR识别是什么?
  17. 简介IntelliJ IDEAD
  18. 【单片机】Arduino(以UNO R3为例)
  19. drf第三讲——筛选、视图
  20. 第一章 解密编程,带你入门编程世界

热门文章

  1. Maxima函数的不完全列表
  2. 一款开源好用的车辆管理系统源码,基于SSH框架和SaaS模式
  3. web前端入门知识大全:系统路线,各类要点解析
  4. 应用StarRocks实现存储引擎的收敛,保障高查询并发及低延迟要求
  5. 详解position:sticky
  6. 阿里小蜜这一年,经历了哪些技术变迁?
  7. 计算机的硬盘 u盘启动,设置U盘启动和硬盘启动两种差别教程步骤
  8. 微信视频聊天记录怎么录制
  9. Bootstrap3里的布局占据100%页面
  10. Java支付宝订单查询