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

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

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

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

1 ответ

Решение

MKMapRect использования MKMapPoint единицы, которые не то же самое, что CLLocationDegrees,

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 будет включать в себя аннотацию, которую вы ищете вокруг (поскольку вы используете его в качестве центра).

Другие вопросы по тегам