Итак, другими словами (поправьте меня, если я ошибаюсь), вы хотите получить каждый магазин, для которого радиус видимости больше или равен расстоянию между местоположением магазина и местоположением пользователя.
Это означает исключение всех магазинов, которые не находятся в «видимой области» вокруг пользователя (поскольку расстояние от A до B взаимозаменяемо с расстоянием отОт B до A ).
На самом деле подвох (если я не совсем не прав) заключается в том, что радиус зависит от хранилища, которое запрашивает пользователь, поэтому вам, возможно, придется выполнить некоторую подстановку параметров и использовать geofilt как фильтр запроса с переменным расстоянием.
Вот пример использования произвольных пользовательских координат pt=45.91,6.13
и функции field()
для получения значения радиуса магазина:
fq={!geofilt sfield=store_coord pt=45.91,6.13 d=field(store_visibility)}
.. при условии, что store_coord
или эквивалент определен как LatLonPointSpatialField (или местоположение) и store_visibility
определен как целое число.
Добавьте fl=geodist()
к вашему запросу, чтобы проверить фактическое расстояние от пользователя до каждого подходящего местоположения магазина, рассчитанное {! Geofilt}.
Аналогично можно сортировать по расстоянию: sort=geodist()+asc