依赖库

math_adapter={ version = "0.3.1", features = [ "cgmath_ops" ] }

实现

use math_adapter::plugin::cgmath::own::num_traits::{
float::FloatCore,
Float,
};
/// 计算两个坐标之间的距离
/// lon1:经度1,
/// lat1:纬度1,
/// lon2:经度1,
/// lat2:纬度1
async fn haversine(lon1: f64, lat1: f64, lon2: f64, lat2: f64) -> f64 {
let lon1 = FloatCore::to_radians(lon1);
let lat1 = FloatCore::to_radians(lat1);
let lon2 = FloatCore::to_radians(lon2);
let lat2 = FloatCore::to_radians(lat2); let dlon = lon2 - lon1;
let dlat = lat2 - lat1; let s_dlat = Float::sin(dlat / 2.0);
let s_dlon = Float::sin(dlon / 2.0); let a = s_dlat * s_dlat
+ Float::cos(lat1)
* Float::cos(lat2)
* s_dlon * s_dlon ;
let c = 2.0 * Float::asin(Float::sqrt(a));
let r = 6371.0; // 地球平均半径,单位为公里
c * r * 1000.0
}

最新文章

  1. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
  2. docker学习(7) docker-compose使用示例
  3. C++程序设计(一)
  4. iOS 秒数转换成时间,时,分,秒
  5. HighCharts开发说明
  6. MongoDB Auto-Sharding(自动分片)入门介绍
  7. truncate table 和delete
  8. EXE文件结构及读取方法
  9. Combination Sum II —— LeetCode
  10. Hadoop SequenceFile
  11. 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示(转)
  12. 【HDU】5256 系列转换(上涨时间最长的序列修饰)
  13. 001-Mono for android在vs2012中发布设置
  14. ArrayList的add(E e)方法与扩容
  15. [SQL]LeetCode595. 大的国家 | Big Countries
  16. 工具安装(mac)
  17. Python turtle绘制阴阳太极图代码解析
  18. css3 二维码 添加 扫描特效
  19. Ubuntu下三种方法设置环境变量
  20. css选择器, first-child,first-of-type

热门文章

  1. 编译安装nmon
  2. js的基本数据类型和引用数据类型及深拷贝浅拷贝
  3. 网络编程 UDP套接字
  4. STL vector常用API
  5. XCTF分站赛ACTF——Crypto
  6. 01.Java面试都问啥?
  7. css预处理器scss/sass语法以及使用
  8. Runloop的使用
  9. 【学习笔记】动态树 Link-Cut Tree
  10. 创建进程的多种方式、多进程实现TCP并发等知识点