Я просто смотрю на это для запроса клиента, который у меня был. Насколько я вижу, лучший способ сделать это - использовать Google (или аналогичный) для геокодирования ваших адресов при их вводе (то есть преобразовать почтовый адрес в широту и долготу). ).
Когда вы придете, «найдите моего ближайшего», вы захотите получить почтовый индекс (вероятно) человека, который ищет, и затем геокодировать его, или, возможно, длинный, если вы можете получить данные прямо. мобильного устройства.
Как только у вас будет лат-лонг для ваших фиксированных позиций и то же самое для вашего пользователя, я считаю, что вы можете использовать формула haversine (я говорю это, но на самом деле я не пробовал - Я не математик) это математический способ вычисления расстояния между двумя точками вокруг сферы. Земля не совсем сфера, но достаточно близко для такого рода целей.
Таким образом, вы только один раз просматриваете внешнюю службу, чтобы найти местоположение своих пользователей (при условии, что вы геокодировали свои фиксированные точки при их создании и сохранили их для дальнейшего использования), а затем выполняете рабочий сервер осла. сторона для расчета расстояний. Вы могли бы даже создать собственную функцию SQL, чтобы вытащить ее из базы данных по порядку.