Вычисление расстояния между широтой / длинной парой довольно трудоемко. Ваш код повторяет это преобразование дважды для каждого сравнения. Не делай этого. Для действительно хорошего алгоритма сортировки, который будет преобразовывать ваши пары широта / длинна в расстояния примерно 2 • n • log (n) раз
Является ли ваше var distanceToUsersCurrentLocation
свойством объектов в вашем массиве? Если так, измените это, чтобы быть ленивым var. Таким образом, он будет вычислен в первый раз, когда вам это понадобится, а затем будет рассматриваться как константа.
Чтобы использовать отложенную переменную, ваш объект должен быть классом, а не структурой (ссылочным типом, а не типом значения.)
Если ваш объект данных является структурой и вы не можете изменить его на класс, вам может потребоваться сопоставить ваш массив структур с массивом кортежей типа (Chantier, Double), отсортировать массив кортежей и карты этот результирующий массив возвращает массив объектов Chantier