通过两个位置的经纬度坐标计算距离(C#版本)
/// <summary>
/// 通过地图上的两个坐标计算距离(C#版本)
/// Add by 成长的小猪(Jason.Song) on 2017/11/01
/// http://blog.csdn.net/jasonsong2008
/// </summary>
public class MapHelper
{
/// <summary>
/// 地球半径
/// </summary>
private const double EarthRadius = 6378.137; /// <summary>
/// 经纬度转化成弧度
/// Add by 成长的小猪(Jason.Song) on 2017/11/01
/// http://blog.csdn.net/jasonsong2008
/// </summary>
/// <param name="d"></param>
/// <returns></returns>
private static double Rad(double d)
{
return d * Math.PI / 180d;
} /// <summary>
/// 计算两个坐标点之间的距离
/// Add by 成长的小猪(Jason.Song) on 2017/11/01
/// http://blog.csdn.net/jasonsong2008
/// </summary>
/// <param name="firstLatitude">第一个坐标的纬度</param>
/// <param name="firstLongitude">第一个坐标的经度</param>
/// <param name="secondLatitude">第二个坐标的纬度</param>
/// <param name="secondLongitude">第二个坐标的经度</param>
/// <returns>返回两点之间的距离,单位:公里/千米</returns>
public static double GetDistance(double firstLatitude, double firstLongitude, double secondLatitude, double secondLongitude)
{
var firstRadLat = Rad(firstLatitude);
var firstRadLng = Rad(firstLongitude);
var secondRadLat = Rad(secondLatitude);
var secondRadLng = Rad(secondLongitude); var a = firstRadLat - secondRadLat;
var b = firstRadLng - secondRadLng;
var cal = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(firstRadLat)
* Math.Cos(secondRadLat) * Math.Pow(Math.Sin(b / 2), 2))) * EarthRadius;
var result = Math.Round(cal * 10000) / 10000;
return result;
} /// <summary>
/// 计算两个坐标点之间的距离
/// Add by 成长的小猪(Jason.Song) on 2017/11/01
/// http://blog.csdn.net/jasonsong2008
/// </summary>
/// <param name="firstPoint">第一个坐标点的(纬度,经度)</param>
/// <param name="secondPoint">第二个坐标点的(纬度,经度)</param>
/// <returns>返回两点之间的距离,单位:公里/千米</returns>
public static double GetPointDistance(string firstPoint, string secondPoint)
{
var firstArray = firstPoint.Split(',');
var secondArray = secondPoint.Split(',');
var firstLatitude = Convert.ToDouble(firstArray[0].Trim());
var firstLongitude = Convert.ToDouble(firstArray[1].Trim());
var secondLatitude = Convert.ToDouble(secondArray[0].Trim());
var secondLongitude = Convert.ToDouble(secondArray[1].Trim());
return GetDistance(firstLatitude, firstLongitude, secondLatitude, secondLongitude);
} }
调用方法:
/// <summary>
/// 文章来源于成长的小猪
/// http://blog.csdn.net/jasonsong2008
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
//第一种调用方法
var result = MapHelper.GetDistance(31.2553210000, 121.4620020000, 31.2005470000, 121.3269970000); //第二种调用方法
result = MapHelper.GetPointDistance("31.2553210000,121.4620020000", "31.2005470000,121.3269970000");
}
通过两个位置的经纬度坐标计算距离(C#版本)的更多相关文章
- 通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double ...
- 根据经纬度坐标计算距离-python
一.两个坐标之间距离计算 参考链接: python实现 1.Python 根据地址获取经纬度及求距离 2.python利用地图两个点的经纬度计算两点间距离 LBS 球面距离公式 美团app筛选“离我最 ...
- Java 根据两个经纬度坐标计算距离
public class Distance{ private static final double EARTH_RADIUS = 6378137; private static double ...
- java 根据经纬度坐标计算两点的距离算法
/** * @Desc 根据经纬度坐标计算两点的距离算法<br> * @Author yangzhenlong <br> * @Data 2018/5/9 18:38 */ p ...
- PHP计算两个已知经纬度之间的距离
/** *求两个已知经纬度之间的距离,单位为千米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位千米 **/ privat ...
- 用墨卡托和GPS坐标计算距离时误差测试
iOS墨卡托和GPS坐标计算距离时误差测试,测试结果: 墨卡托和gps坐标来回转换没有误差. 墨卡托坐标计算出的距离比gps坐标计算出的距离大,100/92*100 = 108米,每100米多算出8米 ...
- Android给定坐标计算距离
给定两点的经纬度.计算两点之间的距离.这里要注意经纬度一定要依照顺序填写 1. 利用android中的工具获得,单位是米 float[] results=new float[1]; Location. ...
- PHP 根据两个坐标计算距离 圆形围栏的计算
可以应用于圆形电子围栏入 出围栏计算 圆形电子围栏的计算方式是: 根据圆心坐标和当前检查的坐标进行距离计算,如果距离长度超出围栏的半径,则判定为出围栏,反之是在围栏之内 <?php /** * ...
- 根据坐标计算距离(mysql函数)
CREATE DEFINER=`root`@`localhost` FUNCTION `getDistance`(lng1 ) BEGIN DECLARE result double; DECLARE ...
随机推荐
- 在EXCEL中批量添加超链接
在单元格中输入函数 =HYPERLINK(链接位置,[显示文本])
- lua中的随机数
Lua 生成随机数需要用到两个函数:math.randomseed(xx), math.random([n [, m]]) 1. math.randomseed(n) 接收一个整数 n 作为随机序列种 ...
- Linux上安装服务器监视工具,名为pyDash。
pyDash – A Web Based Linux Performance Monitoring Tool 你可以通过以下命令来判断是否已安装: pip --version # Python2.x ...
- nodejs安装 Later version of Node.js is already installed. Setup will now exit 及 node与npm版本不符
暴力删除nodejs导致无法重新安装 Later version of Node.js is already installed. Setup will now exit 1.电脑全局搜索nodej ...
- 2.1Java基础
2.1.9面向对象的三大特性(携程): 封装:把一个对象的属性隐藏在对象内部,外部对象不能直接访问这个对象的内部信息.但是可以提供一些可以被外界访问的方法来操作属性.就比如我们常常创建一个类,把他的属 ...
- JAVA修饰符优先级先后顺序规范
在实际的开发中,会遇到定义静态常量时,有的人使用的修饰符顺序不一致,例如 ... static final ... 或者 ... final static ... 于是找到了下规范,分享下 优先级 修 ...
- java线程day-01
综述:下面写的是我学习java线程时做的一些笔记和查阅的一些资料总结而成.大多以问答的形式出现. 一.什么是线程? 答:线程是一个轻量级的进程,现在操作系统中一个基本的调度单位,而且线程是彼此独立执行 ...
- Xshell和Xftp - 下载安装
简介 Xshell 实际工作运用:连接Linux Xftp 实际工作运用:传输文件到Linux系统 下载安装 三连后评论区留言私发,此贴长期有效!!!
- 鸿蒙内核源码分析(汇编汇总篇) | 所有的汇编代码都在这里 | 百篇博客分析OpenHarmony源码 | v40.03
百篇博客系列篇.本篇为: v40.xx 鸿蒙内核源码分析(汇编汇总篇) | 汇编可爱如邻家女孩 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...
- Python中open和with open有什么区别?怎么用?
open 打开文件 file=open("文件名","读写模式") 操作文件 代码段 关闭文件 file.close() 注意事项:使用open方法,文件操作完 ...