我正在尝试在指定区域上获取围绕另一个注释的所有注释,但我无法知道如何执行此操作。现在我正在尝试:
MKMapRect mapRect = MKMapRectMake(annotation.coordinate.longitude, annotation.coordinate.latitude, 10.0, 10.0);
NSSet *nearbyAnnotations = [map annotationsInMapRect:mapRect];
但是附近的注释是空的。我试过通过纬度交换经度以及第3和第4参数的更大数字,但仍然没有结果。我该怎么做?
答案 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
将包含您正在搜索的注释(因为您将其用作中心)。