我对映射套件MKMapView
应用程序非常陌生
我有一个组织中1000名addresses
成员的列表
Ihave get the coordinates
(lat,long)所有这些成员according to their addresses,
使用- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)addres
s方法
通过引用这个链接
并在地图视图中显示所有1000名成员的注释通过引用此链接
但现在我的要求是只显示我附近的当前位置成员位置只显示in 2 ways
,
- 离我最近的前20名成员
- 我周围50公里的所有成员列表
如何实现这两个场景,
您必须通过找到每个成员与您当前位置之间的距离
CLLocation *memberlocation = [[CLLocation alloc] initWithLatitude:memberlat longitude:memberlong];
CLLocation *yourcurrentlocation = [[CLLocation alloc] initWithLatitude:currentlocationlat longitude:currentlocationlong];
CLLocationDistance distance = [memberlocation distanceFromLocation:yourcurrentlocation];
然后使用它们可以找到最近的成员,并使用自己的逻辑为所需的解决方案提供代码。
如果你认为将1000个地址与自定位进行比较需要时间,那么将自定位lat-long发送到服务器Web服务,在那里你有所有成员lat-long,在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是经度