double DegreesToRadians(double degrees) {return degrees * M_PI / 180;};
double RadiansToDegrees(double radians) {return radians * 180 / M_PI;};
- (NSString *)bearingToLocationFromCoordinate:(CLLocation*)fromLoc toCoordinate:(CLLocation*)toLoc
{
double lat1 = DegreesToRadians(fromLoc.coordinate.latitude);
double lon1 = DegreesToRadians(fromLoc.coordinate.longitude);
double lat2 = DegreesToRadians(toLoc.coordinate.latitude);
double lon2 = DegreesToRadians(toLoc.coordinate.longitude);
double dLon = lon2 - lon1;
double y = sin(dLon) * cos(lat2);
double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon);
double radiansBearing = atan2(y, x);
NSString *str ;
double aDeg = RadiansToDegrees(radiansBearing);
if (aDeg >= 75 && aDeg <= 105)
{
str = @"正东";
}
if (aDeg > 15 && aDeg < 75)
{
str = @"东北";
}
if (aDeg >= -15 && aDeg <= 15)
{
str = @"正北";
}
if (aDeg > -75 && aDeg < -15)
{
str = @"西北";
}
if (aDeg >= -105 && aDeg <= -75)
{
str = @"正西";
}
if (aDeg > -165 && aDeg < -105)
{
str = @"西南";
}
if ((aDeg >= 165 && aDeg <= 180) || (aDeg >= -180 && aDeg <= -165))
{
str = @"正南";
}
if (aDeg > 105 && aDeg < 165)
{
str = @"东南";
}
CLLocationDistance meters = [fromLoc distanceFromLocation:toLoc];
return [NSString stringWithFormat:@"%@%f米", str, meters];
}
参考资料来自stackoverflow
iOS-计算两个经纬度之间的距离和方位
最新推荐文章于 2022-11-07 13:54:44 发布