2013-05-13 2 views
0

Широта: 22.744812, Долгота: 75.892578Рассчитать широту и долготу больше между точками широты/долготы?

Вышеупомянутое будет считаться моей центральной точкой.

И теперь мне нужно определить точки широты и долготы от центральной точки 1000 метров наружу до каждого угла NSWE. Поэтому у меня были бы центральные длинные/лат, N, S, E и W long/lat.

Итак, у меня было бы 4 дополнительных пары lat/long.

То, что я пытаюсь решить, является формулой, которая может быть сделана на стандартном калькуляторе для определения этих 4 точек NSWE на основе центральной точки.

ответ

3

Вы можете использовать MapKit для этого:

- (CLLocationCoordinate2D *) calculateSquareCoordinates:(CLLocation*)center withRadius:(float)radius{ 

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center.coordinate, radius*2, radius*2); 

    CLLocationCoordinate2D points[4]; 

    points[0] = CLLocationCoordinate2DMake(region.center.latitude - region.span.latitudeDelta/2, region.center.longitude - region.span.longitudeDelta/2); 
    points[1] = CLLocationCoordinate2DMake(region.center.latitude + region.span.latitudeDelta/2, region.center.longitude - region.span.longitudeDelta/2); 
    points[2] = CLLocationCoordinate2DMake(region.center.latitude + region.span.latitudeDelta/2, region.center.longitude + region.span.longitudeDelta/2); 
    points[3] = CLLocationCoordinate2DMake(region.center.latitude - region.span.latitudeDelta/2, region.center.longitude + region.span.longitudeDelta/2); 

    return points; 
} 

и просто позвоните

CLLocationCoordinate2D *fourPoints = [self calculateSquareCoordinates:center withRadius:1000]; 

на вашем коде.

0

Вам необходимо будет использовать Haversine formula для расчета Lat/Long на основе расстояния от начала Lat/Long. посмотреть на этом Link

0

Средний радиус земли составляет около 6371000 метров. Это означает, что

1 степень Lattitude эквивалентно 6371000 * PI/180 метров

(NB: PI = 3,14159 ... и т.д.). Тем не менее, 1 градус долготы зависит от того, какая вы сила. На экваторе одна градус долготы соответствует тому же расстоянию в метрах, что и 1 градус. Однако на северном и южном полюсах все значения долготы имеют одинаковую точку (т. Е. Сам полюс), поэтому 1 градус долготы на полюсах равен нулю. Формула долготы

1 градус долготы эквивалентно 637100 * PI/180 * Cos (Lattitude)

, где COS является тригонометрической функции косинуса. Если вы сделаете эти преобразования, вы можете сделать расчет на стандартном калькуляторе. Однако имейте в виду, что это приближения, которые хорошо работают на коротких расстояниях (например, менее чем на несколько сотен километров), но на больших расстояниях (например, в тысячах километров) они становятся все более и более неточными.

Смежные вопросы