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