В вашем запросе SQL вам нужно вычислить расстояние между заданной точкой и каждой сохраненной точкой, упорядочить результаты по этому значению и вернуть первые x строк.
Вы не указываете, сколько данныхточки есть, или насколько они рассредоточены - если это большой набор данных, такой подход будет дорогостоящим, и вы захотите найти способы определения вероятного подмножества точек, прежде чем рассчитывать все расстояния, и / илиТехника кеширования / предварительного расчета, чтобы вы снова и снова не рассчитывали одну и ту же информацию для пользователя в одном и том же месте.Поскольку вы, по сути, будете запускать функцию для каждой строки данных, индексы использовать нельзя.
Существует множество полезных ссылок о том, как рассчитать расстояние между двумя точками, например:
http://www.mathopenref.com/coorddist.html
Сферическая природа Земли не окажет большого влияния на расстояния, если данные не будут особенно чувствительны к точности, но если это так, существуют другие факторы, такие как изменение высоты, которое такжевлияют на реальные расстояния.