您必须通过以下方式找到每个成员与您当前位置之间的距离
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 是经度