1. 程式人生 > >IOS根據兩個經緯度計算相距距離

IOS根據兩個經緯度計算相距距離

//第一種蘋果自帶的
  1.     CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self doubleValue]  longitude:[mainDelegate.longitude_self doubleValue]] autorelease];  
  2.     CLLocation* dist=[[[CLLocation alloc] initWithLatitude:[tmpNewsModel.latitude doubleValue] longitude:[tmpNewsModel.longitude doubleValue] ] autorelease];  
  3.     CLLocationDistance kilometers=[orig distanceFromLocation:dist]/1000;  
  4.     NSLog(@"距離:",kilometers);  
//第二種,手動計算
  1. #pragma mark - calculate distance  根據2個經緯度計算距離
  2. #define PI 3.1415926
  3. +(double) LantitudeLongitudeDist:(double)lon1 other_Lat:(double)lat1 self_Lon:(double)lon2 self_Lat:(double)lat2{  
  4.     double
     er = 6378137; // 6378700.0f;
  5.     //ave. radius = 6371.315 (someone said more accurate is 6366.707)
  6.     //equatorial radius = 6378.388
  7.     //nautical mile = 1.15078
  8.     double radlat1 = PI*lat1/180.0f;  
  9.     double radlat2 = PI*lat2/180.0f;  
  10.     //now long.
  11.     double radlong1 = PI*lon1/180.0f;  
  12.     double radlong2 = PI*lon2/180.0f;  
  13.     if( radlat1 < 0 ) radlat1 = PI/2 + fabs(radlat1);// south
  14.     if( radlat1 > 0 ) radlat1 = PI/2 - fabs(radlat1);// north
  15.     if( radlong1 < 0 ) radlong1 = PI*2 - fabs(radlong1);//west
  16.     if( radlat2 < 0 ) radlat2 = PI/2 + fabs(radlat2);// south
  17.     if( radlat2 > 0 ) radlat2 = PI/2 - fabs(radlat2);// north
  18.     if( radlong2 < 0 ) radlong2 = PI*2 - fabs(radlong2);// west
  19.     //spherical coordinates x=r*cos(ag)sin(at), y=r*sin(ag)*sin(at), z=r*cos(at)
  20.     //zero ag is up so reverse lat
  21.     double x1 = er * cos(radlong1) * sin(radlat1);  
  22.     double y1 = er * sin(radlong1) * sin(radlat1);  
  23.     double z1 = er * cos(radlat1);  
  24.     double x2 = er * cos(radlong2) * sin(radlat2);  
  25.     double y2 = er * sin(radlong2) * sin(radlat2);  
  26.     double z2 = er * cos(radlat2);  
  27.     double d = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));  
  28.     //side, side, side, law of cosines and arccos
  29.     double theta = acos((er*er+er*er-d*d)/(2*er*er));  
  30.     double dist  = theta*er;  
  31.     return dist;  

相關推薦

IOS根據經緯度計算相距距離

//第一種蘋果自帶的     CLLocation *orig=[[[CLLocation alloc] initWithLatitude:[mainDelegate.latitude_self doubleVal

reactjs中使用高德地圖計算經緯度之間的距離

第一步下載依賴 npm install --save react-amap 第二步,在元件中使用 import React, { Component } from 'react' import { Link } from 'react-router-dom' import { Map

Java計算經緯度間的距離最簡單的方式

開發中經常會遇到計算兩個點(經緯度)之間的距離或者計算最近門店的場景,下面簡單實現一下如何計算兩個經緯度之間相隔的距離。 1、匯入geodesy的maven依賴 或者到阿里雲maven倉庫下載jar包 <dependency>   <groupId>org.gavaghan&

Java計算經緯度之間的距離公式,外加百度地圖高德地圖轉換,和保留小數

在網上看到了很多兩個座標之間的距離公式,也都親自測試了,有很多都不可以用,後來找到一個比較好的距離演算法,分享給大家 經緯度兩點之間的距離公式 public class MapUtils { private static double rad(double d) { return

JAVA計算經緯度之間的距離

1、只不過是封裝好的一個計算方法,計算的方式也就是上學時就學過的定理,老規矩直接貼程式碼,主要是方便實用,計算結果單位:米 public class MapUtils { //private static double EARTH_RADIUS = 6378.137;

PHP計算經緯度之間的距離

直接貼程式碼 /** * @desc 根據兩點間的經緯度計算距離 * @param float $lat 緯度值 * @param float $lng 經度值 */ function getDistance($lat1, $lng1, $lat2, $lng2)

經緯度之間的距離計算

/** * 計算兩個經緯度的距離 * @param longt1 經度1 * @param lat1 維度1 * @param longt2 經度2 * @param lat2 維度2 * @return */ public st

計算經緯度之前的距離

之前有用到,沒有記錄 後來有問到 就記下 以後方便 方法一 - (double)caluteDistance:(double)lat1 :(double)lat2 :(double)lon1 :(double)lon2 { CLLocation *location

mysql自帶函式st_distance查詢經緯度點的距離

SELECT s.id,s.name,s.lng,s.lat, (st_distance (point (lng, lat),point(115.067,34.76) ) / 0.0111) AS distance FROM road_servicearea s HAVING dist

2015.03.01 mysql SQL語句獲取經緯度之間的距離

方式一:SQL語句 SQL拼接 StringBuffer sql = new StringBuffer("SELECT b.id, b.jd, b.wd, b.`name`, b.address, b.agree_count, b.flower_count, b.egg_c

PHP獲取經緯度之間的距離【百度地圖API】

/** * @param int $lat1 緯度1 * @param int $lng1 經度1 * @param int $lat2 緯度2 * @param int $lng2 經度2

基於sqlserver 實現查詢經緯度之間的距離

查詢兩個經緯度之間的距離,可以實現按照距離排序。 --通過經緯度計算兩點之間的距離 ALTER FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 開始維度 --LngBegin 開始經度 --29.490295,106

java根據地點的經緯度計算兩點間距離

上程式碼(複製到專案中可直接使用):import java.text.DecimalFormat; /** * @author [email protected] * @date 201

計算經緯度點的實際距離

一、概述 因為地球是個球形,所以地球上的兩個點,實際上是球面上的兩個點,要計算這兩個點之間的距離,不能簡單的通過直角座標系來計算。   二、計算方法 1、地球半徑取近似值 6378.137km 1 /** 2 * 地球半徑 3 * 6378.137km 4

計算經緯度距離(米)

//地球半徑,單位米 private const double EARTH_RADIUS = 6378137; /// <summary> /// 計算兩點位置的距離,返回兩點的距離,單位 米 //

根據當前經緯度 獲取一定距離範圍內的經緯度的點值 經緯度最大最小值

<?php //當前經緯度 $Lat = '30.01254012452224'; //緯度 $Lng = '121.01244544525456456478797';//經度

計算經緯度距離

package com.bra.modules.util; /** * Created by lenovo on 2016/5/19. */ import java.text.DecimalF

根據當前經緯度,獲取一定距離範圍內的經緯度的值,經緯度的最大和最小值

@param $meter  距離 @param $u_lon 經度 @param $u_la 緯度 public function getLaLon($meter, $u_lon, $u_la) { // $Lat = '30.01254012452224'; //緯度

python實現經緯度點之間的距離和方位角

asi .net polar 經緯 div poi pytho ola 函數 from:http://blog.csdn.net/zhuqiuhui/article/details/53180395 1. 求兩個經緯點的方位角,P0(latA, lonA), P1(lat

Javascript計算GPS座標的距離

下面是JS計算兩個GPS點距離的函式: function toRad(d) { return d * Math.PI / 180; } function getDisance(lat1, lng1, lat2, lng2) { #lat为纬度, lng为