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

根据两点经纬度计算距离方法:

- (double)latitudeAndLongitudeWithLon1:(double)lon1 lat1:(double)lat1 lon2:(double)lon2 lat2:(double)lat2{
    double er = 6378137; // 6378700.0f;
    //ave. radius = 6371.315 (someone said more accurate is 6366.707)
    //equatorial radius = 6378.388
    //nautical mile = 1.15078
    double radlat1 = M_PI*lat1/180.0f;
    double radlat2 = M_PI*lat2/180.0f;
    double radlong1 = M_PI*lon1/180.0f;
    double radlong2 = M_PI*lon2/180.0f;
    if( radlat1 < 0 ) radlat1 = M_PI/2 + fabs(radlat1);// south
    if( radlat1 > 0 ) radlat1 = M_PI/2 - fabs(radlat1);// north
    if( radlong1 < 0 ) radlong1 = M_PI*2 - fabs(radlong1);//west
    if( radlat2 < 0 ) radlat2 = M_PI/2 + fabs(radlat2);// south
    if( radlat2 > 0 ) radlat2 = M_PI/2 - fabs(radlat2);// north
    if( radlong2 < 0 ) radlong2 = M_PI*2 - fabs(radlong2);// west
    //spherical coordinates x=r*cos(ag)sin(at), y=r*sin(ag)*sin(at), z=r*cos(at)
    //zero ag is up so reverse lat
    double x1 = er * cos(radlong1) * sin(radlat1);
    double y1 = er * sin(radlong1) * sin(radlat1);
    double z1 = er * cos(radlat1);
    double x2 = er * cos(radlong2) * sin(radlat2);
    double y2 = er * sin(radlong2) * sin(radlat2);
    double z2 = er * cos(radlat2);
    double d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));
    //side, side, side, law of cosines and arccos
    double theta = acos((er*er+er*er-d*d)/(2*er*er));
    double dist  = theta*er;
    return dist;
}

打印:

NSLog(@"%f米",[self latitudeAndLongitudeWithLon1:32.000000 lat1:35.000000 lon2:37.000000 lat2:40.000000]);
注:这里返回的单位是米

时间: 2024-10-27 22:18:36

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

SQLSERVER 根据地图经纬度计算距离差示例_MsSql

SQL SERVER 根据地图经纬度计算距离的公式 复制代码 代码如下: go --创建经纬度距离计算函数 CREATEFUNCTION [dbo].[fnGetDistance] --LatBegin 开始经度 --LngBegin 开始维度 (@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNSFLOAT AS BEGIN --距离(千米) DECLARE @Distance REAL DECLARE @EAR

PHP根据两点间的经纬度计算距离_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 r

java 经纬度计算 距离-java 经纬度计算距离 经纬和距离切换

问题描述 java 经纬度计算距离 经纬和距离切换 怎么根据一个点的经纬度查询 以这个点为中心距离为200米以内的在业务系统中做过表示的建筑. 比如 经纬度分别为:113.2759952545166 23.117055306224895,怎么能投计算以这个为中心点的做过标记的200以内的距离的经纬度呢? 在网上查了资料都是计算两个经纬度点的之间的距离,没有这个方圆多少米以内的经纬度算法,曾经也没有接触过,希望做过的朋友给个详细的说明或者给个提示.

Android获取经纬度计算距离介绍

经度指示南北方向,纵向纬度指示东西方向,横向 获取经纬度 使用GPS权限:复制代码 代码如下:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> Android提供LocationManager和Location,可以方便的获得经纬度.海拔等位置.使用LocationManager来获得位置管理类,从而可以获得历史GPS信息以及位置变

python根据经纬度计算距离示例_python

复制代码 代码如下: /** * 计算两点之间距离 * @param _lat1 - start纬度 * @param _lon1 - start经度 * @param _lat2 - end纬度 * @param _lon2 - end经度 * @return km(四舍五入) */public static double getDistance(double _lat1,double _lon1, double _lat2,double _lon2){ double lat1 = (Math

javascript通过两点经纬度获取距离例子

首先,百度地图api里面有获取经纬度的方法,直接用: //获取经纬度             var city_lng = '';             var city_lat = '';               var long_val = '';             var lat_val = '';               var geolocation = new BMap.Geolocation();             geolocation.getCurrent

PHP实现搜索地理位置及计算两点地理位置间距离的实例_php实例

地理位置搜寻LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率. mongodb地理位置索引,2d和2dsphere,对应平面和球面. 1.创建lbs集合存放地点坐标 use lbs; db.lbs.insert( { loc:{ type: "Point", coordinates: [113.332264, 23.156206] }, name: "广州东站" } ) db.lbs.insert( { loc:{ type: &qu

两个经纬度计算他们距离 Java/C#/C

经纬度计算距离原理 经纬度互换 度(DDD):E 108.90593度    N 34.21630度     如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108.90593整数位不变取108(度),用0.90593*60=54.3558,取整数位54(分),0.3558*60=21.348再取整数位21(秒),故转化为108度54分21秒.    同样将度分秒(DMS):东经E 108度54分22.2秒 换算成度(DDD)的方法

HTML5 获取用户经纬度及距离计算公式

在做项目时需要做定位获取经纬度并计算距离,这里使用 HTML5 获取经纬度. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>利用html5获取经纬度</title> </head>   <body> <span id="support">将下面的经纬度输入谷歌地图:</span