Determining Midpoint Between 2 Coordinates

core-location, mapkit, objective-c

Solution

Just a hunch, but I noticed your `lon2` and `lat2` variables are being computed with `M_PI/100` and not `M_PI/180`.

double lon1 = _lo1.longitude * M_PI / 180;
double lon2 = _loc2.longitude * M_PI / 100;

double lat1 = _lo1.latitude * M_PI / 180;
double lat2 = _loc2.latitude * M_PI / 100;

Changing those to 180 might help you out a bit.

Problem

I am trying to determine the midpoint between two locations in an `MKMapView`. I am following the method outlined here (and here) and rewrote it in Objective-C, but the map is being centered somewhere northeast of Baffin Island, which is no where near the two points. My method based on the java method linked above: ``` +(CLLocationCoordinate2D)findCenterPoint:(CLLocationCoordinate2D)_lo1 :(CLLocationCoordinate2D)_loc2 { CLLocationCoordinate2D center; double lon1 = _lo1.longitude * M_PI / 180; double lon2 = _loc2.longitude * M_PI / 100; double lat1 = _lo1.latitude * M_PI / 180; double lat2 = _loc2.latitude * M_PI / 100; double dLon = lon2 - lon1; double x = cos(lat2) * cos(dLon); double y = cos(lat2) * sin(dLon); double lat3 = atan2( sin(lat1) + sin(lat2), sqrt((cos(lat1) + x) * (cos(lat1) + x) + y * y) ); double lon3 = lon1 + atan2(y, cos(lat1) + x); center.latitude = lat3 * 180 / M_PI; center.longitude = lon3 * 180 / M_PI; return center; } ``` The 2 parameters have the following data: ``` _loc1: latitude = 45.4959839 longitude = -73.67826455 _loc2: latitude = 45.482889 longitude = -73.57522299 ``` The above are correctly place on the map (in and around Montreal). I am trying to center the map in the midpoint between the 2, yet my method return the following: ``` latitude = 65.29055 longitude = -82.55425 ``` which somewhere in the arctic, when it should be around 500 miles south.

Original source

Related problems