我正在尝试获取指定区域上另一个注释周围的所有注释,但我不知道如何做到。现在我尝试使用:
MKMapRect mapRect = MKMapRectMake(annotation.coordinate.longitude, annotation.coordinate.latitude, 10.0, 10.0);
NSSet *nearbyAnnotations = [map annotationsInMapRect:mapRect];
但nearbyAnnotations为空。我试着用经度和纬度交换,也用更大的数字交换第三和第四个参数,但仍然没有结果。我该怎么做?
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
将包括您正在搜索的注释(因为您使用它作为中心)。