获取围绕另一个注释的所有注释

时间:2012-07-30 13:37:01

标签: objective-c ios mkannotation mkmaprect

我正在尝试在指定区域上获取围绕另一个注释的所有注释,但我无法知道如何执行此操作。现在我正在尝试:

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

但是附近的注释是空的。我试过通过纬度交换经度以及第3和第4参数的更大数字,但仍然没有结果。我该怎么做?

1 个答案:

答案 0 :(得分:1)

MKMapRect使用的MKMapPoint单位CLLocationDegrees相同。

MKMapRectMake function需要左上角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方法是您必须编写的。

有关编写它的一种方法的示例,请参阅以下答案:
How to make the union between two MKCoordinateRegion


请注意,在您的情况下,annotationsInMapRect将包含您正在搜索的注释(因为您将其用作中心)。