Сортировка бань по удаленности от точки координат

Завершена
Планируемый запуск: Дата начала: 08.03.2021Планируемое завершение: Дата завершения: 12.03.2021

Описание задачи

  1. Технология
    Требуемый уровень
  2. 4
    4
    4
    4
Пока что коордитаты лежат в таблице TV-параметров в виде обычной строки с разделителем-запятой, поэтому разбить ее и выполнить математические операции над ними видимо можно только через написание пользовательской функции для mysql. Это оверхед. Пока что прописал сортировку уже над полученными данными на стороне JS.
/** * Сортировка по координатам */ if (orderByCoords) { const { lat, lng } = orderByCoords companies = companies.sort((a, b) => { const aCoords = coordsResolver(a) const bCoords = coordsResolver(b) if (!aCoords || !bCoords) { return -1 } const { lat: aLat, lng: aLng } = aCoords const { lat: bLat, lng: bLng } = bCoords const aLatDiff = Math.abs(lat - aLat) const aLngDiff = Math.abs(lng - aLng) const bLatDiff = Math.abs(lat - bLat) const bLngDiff = Math.abs(lng - bLng) const aDiff = Math.sqrt(aLatDiff * aLatDiff + aLngDiff * aLngDiff) const bDiff = Math.sqrt(bLatDiff * bLatDiff + bLngDiff * bLngDiff) if (aDiff > bDiff) { return 1 } else if (bDiff > aDiff) { return -1 } return 0 }) }

Добавить комментарий