Во-первых, для предметов, которые находятся близко друг к другу, кривизна Земли не будет иметь большого значения. Следовательно, вы можете рассматривать его как плоскость, и в этот момент вы смотрите на теорему Пифагора для расстояния (квадратный корень из суммы квадратов расстояний x / y).
Во-вторых, если все, что вы делаете, это сортировка / группировка, вы можете отказаться от вычисления квадратного корня и просто отсортировать / сгруппировать по квадрату расстояния. На устройствах, в которых отсутствует сопроцессор с плавающей запятой, таких как первые пару поколений телефонов на базе Android, это принесет много пользы.
В-третьих, вы не указываете систему координат, которую используете для точек, но если вы можете выполнять свои вычисления с использованием математики с фиксированной точкой, это также повысит производительность, особенно на устройствах без сопроцессора. Вот почему надстройка Google Maps для Android использует GeoPoint
и микродеграды, а не * double
градусы Java в Location
, которые вы получаете от LocationManager
.