К сожалению, в API нет такой функции, поэтому вам придется написать свою собственную.
Этот сайт дает несколько вычислений, включающих широту / долготу и пример кода JavaScript.В частности, в разделе «Точка назначения с учетом расстояния и пеленга от начальной точки» показано, как рассчитать то, что вы просите.
Код JavaScript находится внизу этой страницы, и вот один из возможных способов его преобразования.в Objective-C:
- (double)radiansFromDegrees:(double)degrees
{
return degrees * (M_PI/180.0);
}
- (double)degreesFromRadians:(double)radians
{
return radians * (180.0/M_PI);
}
- (CLLocationCoordinate2D)coordinateFromCoord:
(CLLocationCoordinate2D)fromCoord
atDistanceKm:(double)distanceKm
atBearingDegrees:(double)bearingDegrees
{
double distanceRadians = distanceKm / 6371.0;
//6,371 = Earth's radius in km
double bearingRadians = [self radiansFromDegrees:bearingDegrees];
double fromLatRadians = [self radiansFromDegrees:fromCoord.latitude];
double fromLonRadians = [self radiansFromDegrees:fromCoord.longitude];
double toLatRadians = asin( sin(fromLatRadians) * cos(distanceRadians)
+ cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) );
double toLonRadians = fromLonRadians + atan2(sin(bearingRadians)
* sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians)
- sin(fromLatRadians) * sin(toLatRadians));
// adjust toLonRadians to be in the range -180 to +180...
toLonRadians = fmod((toLonRadians + 3*M_PI), (2*M_PI)) - M_PI;
CLLocationCoordinate2D result;
result.latitude = [self degreesFromRadians:toLatRadians];
result.longitude = [self degreesFromRadians:toLonRadians];
return result;
}
В коде JS он содержит эту ссылку , которая показывает более точный расчет для расстояний, превышающих 1/4 окружности Земли.
Также обратите внимание, что приведенный выше код допускает расстояние в км, поэтому перед проходом обязательно делите метры на 1000.0.