当前位置: 首页 > news >正文

Flutter 高德地图坐标和百度坐标相互转换

//BD-09(百度)坐标转换成GCJ-02(火星,高德)坐标
//@param bd_lon 百度经度
//@param bd_lat 百度纬度
function bd_decrypt($bd_lon,$bd_lat){$x_pi = 3.14159265358979324 * 3000.0 / 180.0;$x = $bd_lon - 0.0065;$y = $bd_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);// $data['gg_lon'] = $z * cos($theta);// $data['gg_lat'] = $z * sin($theta);$gg_lon = $z * cos($theta);$gg_lat = $z * sin($theta);// 保留小数点后六位$data['gg_lon'] = round($gg_lon, 6);$data['gg_lat'] = round($gg_lat, 6);return $data;
}//GCJ-02(火星,高德)坐标转换成BD-09(百度)坐标
//@param bd_lon 百度经度
//@param bd_lat 百度纬度
function bd_encrypt($gg_lon,$gg_lat){$x_pi = 3.14159265358979324 * 3000.0 / 180.0;$x = $gg_lon;$y = $gg_lat;$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);$theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);$bd_lon = $z * cos($theta) + 0.0065;$bd_lat = $z * sin($theta) + 0.006;// 保留小数点后六位$data['bd_lon'] = round($bd_lon, 6);$data['bd_lat'] = round($bd_lat, 6);return $data;
}

以上是JS代码

以下是Dart代码

百度转高德

import 'dart:math';  Map<String, double> bdDecrypt(double bdLng, double bdLat) {  const X_PI = pi * 3000.0 / 180.0;  var x = bdLng - 0.0065;  var y = bdLat - 0.006;  var z = sqrt(x * x + y * y) - 0.00002 * sin(y * X_PI);  var theta = atan2(y, x) - 0.000003 * cos(x * X_PI);  var ggLng = z * cos(theta);  var ggLat = z * sin(theta);  return {'lng': ggLng, 'lat': ggLat};  
}  void main() {  // 示例使用  var decrypted = bdDecrypt(116.407396, 39.904200);  print(decrypted);  
}

高德转百度

//GCJ-02(火星,高德)坐标转换成BD-09(百度)坐标

import 'dart:math';  Map<String, double> bdEncrypt(double ggLon, double ggLat) {  final xPi = 3.14159265358979324 * 3000.0 / 180.0;  double x = ggLon;  double y = ggLat;  double z = sqrt(x * x + y * y) - 0.00002 * sin(y * xPi);  double theta = atan2(y, x) - 0.000003 * cos(x * xPi);  double bdLon = z * cos(theta) + 0.0065;  double bdLat = z * sin(theta) + 0.006;  // 保留小数点后六位  Map<String, double> data = {  'bd_lon': bdLon,  'bd_lat': bdLat  };  return data;  
}  void main() {  // 示例用法  var result = bdEncrypt(116.407526, 39.90403);  print(result);  
}

 


http://www.mrgr.cn/news/10847.html

相关文章:

  • C语言指针原理--单片机C语言编程开发中指针变量的本质/用法/注意事项
  • Prompt + 工作流组件 = AI智能体:开启智能化新时代
  • C#入门(14)Switch语句
  • Java-文件读取工具类FileReaderUtil
  • 【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_CondUnique.cs
  • 169页PPT丨城投公司战略规划之产业投资商规划
  • 数据结构学习:单链表
  • 四川财谷通,信息科技引领者!
  • Ps:首选项
  • css设置三个div宽度占据三分之一
  • .NET Razor类库 - 静态资源组件化
  • MVVM分层思想
  • PHP农场扶农系统智慧认养智慧乡村系统农场系统小程序源码
  • AI大模型编写多线程并发框架(六十一):从零开始搭建框架
  • pg数据库的三种不同数据持久性解读
  • Buildroot构建Qt根文件系统-思维导图-学习笔记-基于正点原子阿尔法开发板
  • 华东师范大学学报(教育科学版)
  • Java设计模式【组合模式】-结构型
  • AI大语言模型之分布式训练概述
  • 【C++ 面试 - 内存管理】每日 3 题(一)