1

我试图在指定区域的另一个注释周围获取所有注释,但我不知道该怎么做。现在我正在尝试:

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

但附近的Annotations 是空的。我尝试将经度与纬度交换,并为第三个和第四个参数使用更大的数字,但仍然没有结果。我应该怎么做?

4

1 回答 1

1

AnMKMapRect使用与不同MKMapPoint单位。CLLocationDegrees

MKMapRectMake函数需要左上角MKMapPoint,然后是宽度和高度(再次以单位为MKMapPoint单位)。

基本上,您需要使用该MKMapPointForCoordinate函数来帮助您完成从度到MKMapPoint单位的转换。

首先,您可以构造 anMKCoordinateRegion然后将其转换为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将包括您正在搜索的注释(因为您使用它作为中心)。

于 2012-07-30T14:17:14.557 回答