Как получить широту и длину точки? - PullRequest
0 голосов
/ 16 августа 2011

Я новичок в разработке для iPhone. Я разрабатываю проект, в котором я дал адрес начальной и конечной точки. Предположим, я получаю расстояние между этими точками 100 миль и делю на пять равных частей по 20 миль. Тогда как получить широту и длину точки в 20 милях от начальной точки?

1 Ответ

1 голос
/ 16 августа 2011

Добавьте эту функцию в свой класс:

// position is a number between 0 and 1, where 0 gives the start position, and 1 gives the end position
- (CLLocationCoordinate2D)pointBetweenStartPoint:(CLLocationCoordinate2D)startPoint endPoint:(CLLocationCoordinate2D)endPoint position:(float)position {

    CLLocationDegrees latSpan = endPoint.latitude - startPoint.latitude;
    CLLocationDegrees longSpan = endPoint.longitude - startPoint.longitude;

    CLLocationCoordinate2D ret = CLLocationCoordinate2DMake(startPoint.latitude + latSpan*position,
                                                            startPoint.longitude + longSpan*position);

    return ret;
}

Затем вы можете использовать этот метод следующим образом (при условии, что вы хотите разделить расстояние на 5):

CLLocationCoordinate2D startPoint = CLLocationCoordinate2DMake(/* lat, long of start point */);
CLLocationCoordinate2D endPoint = CLLocationCoordinate2DMake(/* lat, long of end point */);

for (int i = 1; i < 5; i++) {
    float position = i / 5.0;
    CLLocationCoordinate2D middlePosition = [self pointBetweenStartPoint:startPoint endPoint:endPoint position:position];
    NSLog("%f, %f", middlePosition.latitude, middlePosition.longitude);
}
...