使用经纬度IOS搜索附近的人

Posted

技术标签:

【中文标题】使用经纬度IOS搜索附近的人【英文标题】:Search near by people by using Latitude & longitude IOS 【发布时间】:2015-03-04 04:29:39 【问题描述】:

我正在 ios 中开发一个聊天应用程序。用户可以在其中搜索半径 1 公里范围内的人。 在注册时,我存储了每个用户的纬度和经度。 现在告诉我如何在 1 公里半径内搜索用户附近的人??

非常感谢

【问题讨论】:

可以使用google map API 【参考方案1】:

您可以使用Haversine公式计算当前纬度、经度与目标纬度、经度之间的适当距离。

define DEG2RAD(degrees) (degrees * 0.01745327)

double currentLatitude = 40.727181; // 登录用户当前纬度double currentLongitude = -73.986786; // 登录用户当前经度double destinationLatitude = 42.896578; // 目标用户纬度double destinationLongitude = -75.784537; // 登录用户经度目标用户

//将得到的经纬度转换为RADS。double currentLatitudeRad = DEG2RAD(currentLatitude);double currentLongitudeRad = DEG2RAD(currentLongitude);double destinationLatitudeRad = DEG2RAD(destinationLatitude);double destinationLongitudeRad = DEG2RAD(destinationLongitude);

//Haversine 公式。distance = acos(sin(currentLatitudeRad) * sin(destinationLatitudeRad) + cos(currentLatitudeRad) * cos(destinationLatitudeRad) * cos(currentLongitudeRad - destinationLongitudeRad)) * 6880.1295896;

这里获得的距离以公里为单位。

【讨论】:

【参考方案2】:

我的解决方案是直接你不能使用 Radios 搜索用户。请按照以下步骤操作。

    使用 Web 服务将纬度、经度和无线电信息发送到您的后端服务器。

    为您的网络服务开发人员提出查询并获取附近用户使用您的信息。

请参考以下链接:

Geo Distance Search with mysql

【讨论】:

我喜欢 MYSQL。 MYSQL 是最大的工具......喜欢它【参考方案3】:

您可以使用此方法比较两个位置

CLLocationDistance distanceInMeters = [locationA distanceFromLocation:locationB];

或者从后端(php 开发人员)计算距离,因为基本上他们只存储所有纬度,经度。(我认为)

【讨论】:

使用这种方法,我必须检查数据库中的每个用户,(例如,如果有数千个用户,则需要很长时间)

以上是关于使用经纬度IOS搜索附近的人的主要内容,如果未能解决你的问题,请参考以下文章

小程序里附近的人功能实现,云开发数据库实现附近的人,按照位置远近排序,附近多少公里内的好友

Redis——GeoHash查找附近的人

利用高德云图开发附近的人功能

如何使用 Redis 实现 “附近的人” 这个功能

附近的人,附近的卖家(geohash+前缀树)

vertx+redis实现查找附近的人