根据两点的经纬度计算两地距离

学着做项目需要根据很据给出的两点经纬度信息计算两地的实际距离,查了查,有公式奉上:

google地图提供的方法:

相关c#代码如下

 private static double rad(double d)
        {
            return d * Math.PI / 180.0;
        }
        //根据两点的经纬度计算两地距离
         public static double GetDistance(double lon1, double lat1, double lon2, double lat2)
         {
             double radLat1 = rad(lat1);
             double radLat2 = rad(lat2);
             double a = radLat1 - radLat2;
             double b = rad(lon1) - rad(lon2);

             double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
             Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
             s = s * EARTH_RADIUS;
             s = Math.Round(s * 10000) / 10000;
             return s;
         }

js代码如下:

 function rad(d){
	return d*Math.PI/180.0;
	}

 function distance(lon,lat,lon1,lat1){
	  //  lon1=108; lat1=34.0;
	  //  lon2=108; lat2=35.0;
		var radLat1 = rad(lat1);
	    var radLat2 = rad(lat2);
        var a = radLat1 - radLat2;
        var b = rad(lon1) - rad(lon2);
        var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2)+Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)))*6378.137;
        return s;
  }

实测精确度比较还算比较高,很有用,记下来。

时间: 2024-10-13 04:05:12

根据两点的经纬度计算两地距离的相关文章

根据两点的经纬度计算直线距离

<?php /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; //approximate radius of earth in meters /* Convert these degrees to radians to work with the

【微信开发】微信小程序通过经纬度计算两地距离php代码实现

需求: 要求做个根据用户当前位置获取周围商家地址,并且按照由近到远排序, 方法一: 代码层实现 封装方法: /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 * @param $status true KM,M显示;false 只返回M */ function system_getdistance($lat1, $lng1, $lat2, $lng2, $status = true, $single

.NET资料之-根据两点经纬度计算直线距离

最近做东西碰到要根据两点经纬度计算之间的直线距离,就网上找了查了下资料.因为这类接触的比较少,就直接找现成的代码了,没怎么研究.代码如下,作为记录. private const double EARTH_RADIUS = 6378.137;//地球半径 private static double rad(double d) { return d * Math.PI / 180.0; } public static double GetDistance(double lat1, double ln

根据经纬度计算两地间的距离

  import java.util.HashMap; import java.util.Map; public class MapDistance {    private static double EARTH_RADIUS = 6378.137;    private static double rad(double d) {        return d * Math.PI / 180.0;    }    /**     * 根据两个位置的经纬度,来计算两地的距离(单位为KM)   

IOS根据两个经纬度计算相距距离

//第一种苹果自带的 [cpp] view plain copy CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self doubleValue]  longitude:[mainDelegate.longitude_self doubleValue]] autorelease]; CLLocation* dist=[[[CLLocation alloc] initWithLatitud

PHP 根据两点的经纬度计算距离

1 /** 2 * @name 根据经纬度确定两点的距离[地理位置] 3 * @author tbj 4 * @param float $lat 纬度值 5 * @param float $lng 经度值 6 * @date 2015-9-21 7 */ 8 public static function getLocationDistance($lat1, $lng1, $lat2, $lng2) 9 { 10 $earthRadius = 6367000; // 定义地球的半径 11 $lat

经纬度互换、换算成米、两点的经纬度计算两点间的距离

GPS坐标和经纬度的算法和概率不太一样,但是我们可能会将他们互通起来用,下面先贴上转换工具:http://map.yanue.net/gps.html.里面实现了gps到谷歌地图百度地图经纬度的转换.不含糊,下面将他们之间的联系. GPS坐标系我本身不太了解它跟谷歌地图经纬度有多大区别,于是搜了一下,看看他们的区别: 地形图坐标系:我国的地形图采用高斯-克吕格平面直角坐标系.在该坐标系中,横轴:赤道,用Y表示:纵轴:中央经线,用X表示:坐标原点:中央经线与赤道的交点,用0表示.赤道以南为负,以北

根据两点的经纬度计算距离

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) { $theta = $longitude1 - $longitude2; $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(d

mysql根据经纬度求两地距离

#1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120.10591, 30.30163),point(120.13026,30.25961));mysql 5.6 添加 #2.两点球面距离(157249.0357231545m) select st_distance_sphere(point(0,0),point(1,1)); select st_di