-1

MKMapView我对地图套件应用程序非常陌生,

有一个组织中 1000addresses名成员的列表。

have get the coordinates(纬度,经度)所有这些成员according to their addresses,

使用- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address 方法

通过引用此链接

并在地图视图中显示所有 1000 个成员的注释 通过引用此链接

但现在我的要求是只显示我附近的当前位置成员位置in 2 ways

  1. 离我最近的前 20 名成员
  2. 我周围50KM包围的所有成员列表

这两种场景如何实现,

4

1 回答 1

2

您必须通过以下方式找到每个成员与您当前位置之间的距离

CLLocation *memberlocation = [[CLLocation alloc] initWithLatitude:memberlat longitude:memberlong];

CLLocation *yourcurrentlocation = [[CLLocation alloc] initWithLatitude:currentlocationlat longitude:currentlocationlong];

CLLocationDistance distance = [memberlocation distanceFromLocation:yourcurrentlocation];

然后使用它们你可以找到最近的成员,并使用你自己的逻辑你有你需要的解决方案的代码。

如果您认为将 1000 地址与自身位置进行比较需要时间,则将自身位置 lat-long 发送到您拥有所有成员 lat-long 的服务器 Web 服务,在 Web 服务中您必须使用以下查询来查找最近的 20成员。

SELECT top (20) id, ( 6371 * acos( cos( radians(13.0610) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(80.2404) ) + sin( radians(13.0610) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers  ORDER BY distance;

在这里,您必须传递自己的位置纬度而不是 13.0610,而 80.2404 是经度

于 2013-07-05T05:37:12.990 回答