Niestety, w API nie ma takiej funkcji, więc musisz napisać własną.
This site podaje kilka obliczeń dotyczących długości/szerokości geograficznej i przykładowego kodu JavaScript. W szczególności sekcja zatytułowana "Punkt docelowy podana odległość i namiar od punktu początkowego" pokazuje, jak obliczyć, o co prosisz.
Kod JavaScript jest na dole tej strony i oto jeden z możliwych sposobów, aby przekształcić go do 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;
}
W kodzie JS, zawiera ona this link który pokazuje bardziej dokładne obliczenia dla odległościach większa niż 1/4 obwodu Ziemi.
Należy również zwrócić uwagę, że powyższy kod akceptuje odległość w km, dlatego przed przejściem należy podzielić metry na 1000,0.
Dziękuję Ci odpowiedzieć! Właściwie to znalazłem sposób na zrobienie tego. Zobacz moją własną odpowiedź. – Nicsoft
Dobra odpowiedź, podoba mi się ta, ponieważ zajmuje się bezpośrednio współrzędnymi i bardziej kompletnie odpowiada na pytanie, ponieważ bierze pod uwagę kierunek. – johnrechd