Iphone MKMapView-如何获取&;显示现有地址列表中的临近地址/位置的注释接点
我对map kitIphone MKMapView-如何获取&;显示现有地址列表中的临近地址/位置的注释接点,iphone,ios,objective-c,mkmapview,mapkit,Iphone,Ios,Objective C,Mkmapview,Mapkit,我对map kitMKMapView应用程序非常陌生 我有一个组织中1000个成员的地址列表。 我已根据所有成员的地址获得坐标 使用-(CLLocationCoordinate2D)地理编码使用地址:(NSString*)地址s方法 并在地图视图中显示所有1000个成员的注释 但现在我的要求是只在我附近显示当前位置成员的位置仅两种方式 离我更近的前20名成员 我周围50公里范围内的所有成员名单 如何实现这两种方案,您必须通过 CLLocation *memberlocation = [[CL
MKMapView
应用程序非常陌生
我有一个组织中1000个成员的地址列表。
我已根据所有成员的地址获得坐标
使用-(CLLocationCoordinate2D)地理编码使用地址:(NSString*)地址
s方法
并在地图视图中显示所有1000个成员的注释
但现在我的要求是只在我附近显示当前位置成员的位置仅两种方式
如何实现这两种方案,您必须通过
CLLocation *memberlocation = [[CLLocation alloc] initWithLatitude:memberlat longitude:memberlong];
CLLocation *yourcurrentlocation = [[CLLocation alloc] initWithLatitude:currentlocationlat longitude:currentlocationlong];
CLLocationDistance distance = [memberlocation distanceFromLocation:yourcurrentlocation];
然后使用它们,您可以找到最近的成员,并使用您自己的逻辑,为您所需的解决方案编写代码
如果您认为比较1000个地址和自我位置需要时间,那么将自我位置lat long发送到服务器webservice,在那里您有所有lat long的成员,在webservice中您必须使用以下查询来查找最近的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是经度,正如前面所解释的,你不这么认为,通过自定位比较1000个地址会降低性能。@ArpitKumar,有没有其他方法可以在不比较地址和自定位的情况下找到距离?@Nazik,目前没有,我没有其他办法。“但我正试图找到一个更好的方法。”纳兹克,这正是我所期待的。好主意,通过服务器端查询,我们可以轻松解决它+1用于保存1000个列表地址的数据的形式或场景。使用Sqlite或核心数据,或者只是在对象模型中维护服务器端?@ArpitKumar使用Sqlite我已经存储了AddressOK,太好了。现在,您可以在iphone编程端使用@Nazik answer。您是否满意或正在寻找其他内容。