Есть объекты "здание" с координатами lat, lng
Есть "фирмы" которые привязаны к конкретным зданиям.
Задача: сделать поиск фирм находящихся внутри определенного радиуса относительно указанной точки.
Нашел алгоритм для вычисления дистанции (https://developers.google.com/maps/arti ... indnearsql). Пример:
Код: Выделить всё
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
У меня есть:
Код: Выделить всё
$query = Firm::find()->joinWith(['building']);
// some other filters
if (!empty($params['rubric-id'])) {
$query->andFilterWhere([
'rubric_id' => $params['rubric-id']
]);
}
// find by radius
if (!empty($params['point-lat']) && !empty($params['point-lng'])) {
// ???
}
$activeDataProvider = new ActiveDataProvider([
'query' => $query
]);
Спасибо!