根据 objective C 中 mapview 框架的坐标过滤数组

Filter array based on coordinate from mapview frame in objective C

我有数百条地图注释。注释来自字典数组,在 table 视图中显示了经纬度和经度相同的数据。 Table 视图和地图视图是基于 screenheight/2 的相同视图。例如,我需要的数组中有 100 个纬度和经度值 table 视图,地图视图显示 100 个数据。如果 mapview zoomIn 然后 table 数据(我不知道如何过滤该数据)根据 mapview 中显示的注释数量显示,与 zoomOut 相同。

我想使用地图视图帧大小来获取它,而不是将其转换为经纬度值并根据我得到的经纬度值过滤数组。

如何通过This answer

将地图视图框架转换为纬度和经度值

现在我不知道该怎么办了。如何使用纬度和经度值过滤数据。

有什么方法可以找到那个或者如何根据纬度和经度进行算术计算

您可以做的是:

A)直接获取注解:

MKMapRect visibleMapRect = mapView.visibleMapRect;
NSSet *visibleAnnotations = [mapView annotationsInMapRect:visibleMapRect];

B) 遍历你的数组并检查点是否在里面:

MKMapRect mapRect = mapView.visibleMapRect;
for (NSDictionary *item in array)
{
    CLLocation *location = item[@"location"]; // Or what ever you store...
    MKMapPoint mapPoint = 
    MKMapPointForCoordinate(location.coordinate);
    BOOL inside = MKMapRectContainsPoint(mapRect, mapPoint);
}