-(CLLocationCoordinate2D)sin:(CLLocationCoordinate2D)start End:(CLLocationCoordinate2D)end{
double t, t2, h,h2;
double lng1 = start.longitude;
double lng2 = end.longitude;
double lat1 = start.latitude;
double lat2 = end.latitude;
if (lng2 > lng1) {
if ((lng2 - lng1) > 180) {
if (lng1 < 0) {
lng1 = (180 + 180 + lng1);
}
}
}
if (lng1 > lng2) {
if ((lng1 - lng2) > 180) {
if (lng2 < 0) {
lng2 = (180 + 180 + lng2);
}
}
}
if (lat2 == lat1) {
t = 0;
h = lng1 - lng2;
} else {
if (lng2 == lng1) {
t = M_PI / 2;
h = lat1 - lat2;
} else {
t = atan((lat2 - lat1) / (lng2 - lng1));
h = (lat2 - lat1) / sin(t);
}
}
t2 = (t + (M_PI / 8));
h2 = h / 2;
double lng3 = h2 * cos(t2) + lng1;
double lat3 = h2 * sin(t2) + lat1;
CLLocationCoordinate2D returnL = CLLocationCoordinate2DMake(lat3, lng3);
return returnL;
}