web-services - 计算 MAP 中两点之间的距离(以公里为单位)

标签 web-services ios

我到了应用程序中最关键的一步,我的数据库有一个服务站列表(及其经纬度坐标),我必须发送服务站的经度和纬度将用户添加到 Web 服务,该服务将尝试查找用户周围半径为 5 公里的站点。 是否有任何预建算法可以帮助我,欢迎任何建议、链接或任何您认为可以帮助我的东西,提前谢谢 :)

最佳答案

您可以使用 CoreLocation 框架来执行此操作: 用纬度和经度为每个服务站初始化一个 CLLocation 对象

CLLocation *loc = [[CLLocation alloc] initWithLatitude:serviceStation.latitude longitude:serviceStation.longitude];

完成后,您可以使用 CLLocation 的 distanceFromLocation 实例方法:

CLLocationDistance distance = [loc1 distanceFromLocation:loc2];

距离将是两点之间的距离(以米为单位)(CLLocationDistance 是 double )。然后你只需要将它除以 1000 就可以得到它以公里为单位;-)

编辑:

由于您的服务器上有数据库,因此计算 Web 服务中的距离会更有效。 由于没有 distanceFromLocation 的“逆向方法”可以让您给出距离并检索与当前用户位置关联的最小和最大纬度和经度,因此您需要在服务器端执行计算。

所以解决方案是将用户的当前位置(纬度和经度)发送到您的网络服务,让他计算与您的距离相关的最大和最小纬度和经度(正方形比正方形更容易计算和实现)服务站的圆圈)。您有一些资源可以在此处执行这些计算:Haversine formula

关于web-services - 计算 MAP 中两点之间的距离(以公里为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5743587/

相关文章:

java - 如何在 REST 响应中检索 JSON 数组格式的结果

java - 请求时出现 SoapUI 错误 - NoClassDefFoundError

ios - 显示从 WebService 获取的图像

web-services - 在 JMeter 中将较长的响应时间记录为失败

C#事件执行顺序(Unity3D游戏)

iphone - 如何在注销操作上解除分配 uiviewcontroller/卸载 View

c# - 服务引用使用数组而不是 List<Type>,即使设置说要使用 List

iphone - 将对象添加到可变数组

objective-c - Objective-C 中的继承属性和综合

ios - pod trunk - 使用不同/多个帐户推送到 repos