Desafortunadamente, no hay tal función en la API, por lo que tendrá que escribir la suya.
This site ofrece varios cálculos que implican latitud/longitud y código JavaScript de muestra. Específicamente, la sección titulada "Distancia y distancia entre el punto de destino y el rumbo desde el punto de partida" muestra cómo calcular lo que está preguntando.
El código JavaScript está en la parte inferior de esa página y aquí es una forma posible para convertirlo en 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;
}
En el código JS, contiene this link que muestra un cálculo más preciso para distancias más de 1/4 de la circunferencia de la Tierra.
También tenga en cuenta que el código anterior acepta la distancia en km, así que asegúrese de dividir los metros entre 1000.0 antes de pasar.
Gracias por su respuesta! En realidad, encontré la manera de hacerlo. Ver mi propia respuesta. – Nicsoft
Buena respuesta, me gusta porque trata directamente con las coordenadas y más completamente responde la pregunta ya que toma en cuenta la dirección. – johnrechd