Невозможно сопоставить расстояние, вычисленное в геокодере
Согласно официальному документу геокодера:
Расстояние между Эйфелевой башней и Эмпайр Стейт Билдинг
Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
=> 3619.77359999382 # в настроенных единицах (мили по умолчанию)
def geodistance
render json: Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
end
В моем случае я получаю значение:
=> 3648.3340765758867
Конфигурации устройства остаются неизменными, не уверен, что может пойти не так!
2 ответа
Решение
Прочитайте мне значение расстояния дока:=> 3619.77359999382 устарело.
irb(main):001:0> require 'geocoder'
true
irb(main):002:0> Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
3648.3340765758867
Это мой пример вывода.
IMO: Может быть, вы использовали разные версии ruby или gem в каждом случае или что-то в этом роде... Было бы неплохо узнать, в каких средах выполнялись оба примера кода.
Используйте источник, Люк!
РЕДАКТИРОВАТЬ:
Может быть что-то в этой части кода:
a = (Math.sin(dlat / 2))**2 + Math.cos(point1[0]) *
(Math.sin(dlon / 2))**2 * Math.cos(point2[0])
c = 2 * Math.atan2( Math.sqrt(a), Math.sqrt(1-a))
c * earth_radius(options[:units])