【问题标题】:Filter array based on coordinate from mapview frame in objective C基于目标C中地图视图框架的坐标过滤数组
【发布时间】:2015-06-16 11:51:20
【问题描述】:

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

我想使用地图视图帧大小来获得它,然后将其转换为 lat 和 long 值,并根据我得到的 lat 和 long 值过滤数组。

如何通过This answer将地图视图框架转换为经纬度值

现在我不知道该怎么办。如何过滤具有 lat 和 long 值的数据。

有什么方法可以找到或如何基于纬度和经度进行算术计算

【问题讨论】:

  • 您使用的是哪张地图?谷歌地图 SDK 还是 MapKit?
  • MapKit @MayurDeshmukh
  • 获取当前地图位置和跨度的地理坐标。获取 lat 和 lng 的范围。过滤线在范围内。
  • 这就是我要问的“范围内的过滤线”.. @HarvantS。但我得到了答案,谢谢你的时间.. :)
  • 对于 "filter cords in range" ,您必须在最小值 range 和最大值 range 之间检查您的值。即int temp=3; if (temp <4 && temp>2){NSLog(@"Its in the range.");} .

标签: ios objective-c xcode annotations mkmapview


【解决方案1】:

你可以做的是:

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);
}

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多