Получить все аннотации вокруг другой аннотации

Я пытаюсь получить все аннотации вокруг другой аннотации в указанной области, но не могу понять, как это сделать. Теперь я пытаюсь с:

MKMapRect mapRect = MKMapRectMake(annotation.coordinate.longitude, annotation.coordinate.latitude, 10.0, 10.0);
NSSet *nearbyAnnotations = [map annotationsInMapRect:mapRect];

но рядомАннотации пусты. Я попытался поменять местами долготу с широтой, а также с большими числами для 3-го и 4-го параметров, но все равно безрезультатно. Как мне это сделать?


person ov1d1u    schedule 30.07.2012    source источник


Ответы (1)


MKMapRect использует MKMapPoint единиц, которые не совпадают с CLLocationDegrees.

Отн. Для функции ="nofollow noreferrer">MKMapRectMake нужны MKMapPoint в верхнем левом углу, а затем ширина и высота (опять же в MKMapPoint единицах).

По сути, вам нужно использовать функцию MKMapPointForCoordinate, чтобы помочь вам сделать это преобразование из градусов в MKMapPoint единиц.

Во-первых, вы можете создать MKCoordinateRegion, а затем преобразовать его в MKMapRect.

Например:

//create a region 10km around the annotation...
MKCoordinateRegion mapRegion = MKCoordinateRegionMakeWithDistance
                                 (annotation.coordinate, 10000, 10000);

//convert the MKCoordinateRegion to an MKMapRect...
MKMapRect mapRect = [self mapRectForCoordinateRegion:mapRegion];

Вам нужно написать метод mapRectForCoordinateRegion.

Пример одного из способов записи см. в этом ответе:
Как сделать объединение двух MKCoordinateRegion


Кстати, обратите внимание, что в вашем случае annotationsInMapRect будет включать аннотацию, которую вы ищете (поскольку вы используете ее в качестве центра).

person Community    schedule 30.07.2012
comment
Нет проблем, если он включает текущую аннотацию, я знаю, как с этим справиться. Большое тебе спасибо - person ov1d1u; 30.07.2012