iOS latitude and longitude calculation distance

Source: Internet
Author: User

#pragma  mark - calculate distance   calculate distance      #define based on 2 latitude and longitude  pi 3.1415926  + (Double)  lantitudelongitudedist: (Double) Lon1 other_lat: (Double) Lat1 self_lon: (Double) Lon2 self_lat: (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 = pi*lat1/180.0f;       double radlat2 = PI*lat2/180.0f;       //now long.      double radlong1 = pi*lon1/ 180.0f;      double radlong2 = pi*lon2/180.0f;      if (  radlat1 < 0 )  radlat1 = pi/2 + fabs (RADLAT1);// south       if ( radlat1 > 0 )  radlat1 = pi/2 -  fabs (RADLAT1);// north      if ( radlong1 < 0 )  radlong1 = pi*2 - fabs (radlong1);//west      if (  radlat2 < 0 )  radlat2 = pi/2 + fabs (RADLAT2);// south       if ( radlat2 > 0 )  radlat2 = pi/2 -  fabs (RADLAT2);// north      if ( radlong2 < 0 )  radlong2 = pi*2 - fabs (radlong2);// west      // Spherical coordinates&nBsp;x=r*cos (AG) sin (at),  y=r*sin (AG) *sin (in),  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;  }

Egg ache, the backstage bother let me mobile end calculate distance, really wonderful. No way to find the algorithm online.

iOS latitude and longitude calculation distance

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.