Laravel 像Badoo这样的网站是如何使用附近的地理位置搜索的?

Laravel 像Badoo这样的网站是如何使用附近的地理位置搜索的?,laravel,geolocation,Laravel,Geolocation,像Badoo.com这样的应用程序是如何使用附近的地理位置搜索的? 我想让smth类似,就像用户点击“搜索”,即打开他的地理位置,然后在某个范围内,例如1km为其他用户查找 我的意思是,它应该如何工作?在我看来,当用户单击搜索时,使用GoogleMapsAPI检索用户的经度和纬度,并将其发送到数据库。接下来,向DB发出AJAX请求,查找距离该坐标1km范围内的所有用户并获取结果 我想我一点都不对。有人能解释一下A-Z中的逻辑,以及使用哪些服务/脚本来实现它吗? 谢谢 我也有类似的问题,但我试图找

Badoo.com
这样的应用程序是如何使用附近的地理位置搜索的? 我想让smth类似,就像用户点击“搜索”,即打开他的地理位置,然后在某个范围内,例如
1km
为其他用户查找

我的意思是,它应该如何工作?在我看来,当用户单击搜索时,使用GoogleMapsAPI检索用户的经度和纬度,并将其发送到数据库。接下来,向DB发出
AJAX请求
,查找距离该坐标1km范围内的所有用户并获取结果

我想我一点都不对。有人能解释一下A-Z中的逻辑,以及使用哪些服务/脚本来实现它吗?
谢谢

我也有类似的问题,但我试图找到与用户位置最接近的特色广告,我编写了以下代码:

$userAddress = GeoLocation::fromDegrees($request->latitude, $request->longitude);

$geocode = GeoLocation::getGeocodeFromGoogle($address);
$latitude = $geocode->results[0]->geometry->location->lat?:24.55; //Here I was taking only first match
$longitude = $geocode->results[0]->geometry->location->lng?:24.55; //Here I was taking only first match

$placeAddress = GeoLocation::fromDegrees($latitude, $longitude);
$km = $userAddress->distanceTo($placeAddress, 'km');
$meters = floatval(number_format($km*1000, 2, '.', ''));

...

/**
 * Showing 5 featured
 *
 * Sorts and returns only 5 of the elements
 * from list.
 *
 * @param $list
 * @return Illuminate\Support\Collection
 */
 private function calculateShortest($list) {
     return $list->sortBy(function($val, $key) {
         return $val->km;
     })->take(5);
 }
这可能会帮助您了解如何计算距离。我删除了许多不相关的代码,但我想您会了解的。这是你的密码


Flow:您应该首先获取用户选择作为其
主页地址的位置的经度和纬度,然后将其保存在数据库中。然后,当有人试图找到一个匹配项时,你可以根据他们的
经纬度、家庭住址和
半径来计算边界,然后根据这些边界你可以查询数据库,或者你可以通过
性别、身份等来缩小搜索范围。

所以基本上这就可以做到@kau-lin,你对我的理解正确吗?我的意思是,这是一个数百人的申请,他们想见面。我想打开“雷达”,找到距离我特定半径内的人。谁将是消费者?(网络,原生安卓)安卓:浏览器:Laravel将成为您的APII。我有一个基于iOS的应用程序(前端),我正在编写后端。但从步骤来看,它应该如何工作?我的意思是…通过JS确定当前用户位置,然后使用这个经度和纬度在DB中进行查询?如果是,如何确定/保存/编辑其他用户的地理位置并显示相关日期?首先,为了更好地理解想法,所有这些过程是如何分步进行的?谢谢我已经用FlowThank更新了我的答案,现在好多了。您使用什么来确定前面用户的经度和纬度,以便将值存储在DB中
但是,该应用程序基本上希望每次都能运行,而不仅仅是基于同一位置。也许在线用户搜索会更好?或者每次每个用户打开地理位置更新其合作伙伴时?您也可以使用他们当前的地理位置,这取决于您如何实现它,但流程是相同的