Как рассчитать расстояние в км между двумя точками с помощью геокодера
Я пытаюсь выяснить, как показать расчетное расстояние между двумя точками на карте с помощью геокодера. У меня есть start_address и destination_address в моей таблице, которую я прошу, на мой взгляд, моя модель выглядит так:
class Ride < ActiveRecord::Base
geocoded_by :start_address
geocoded_by :destination_address
reverse_geocoded_by :latitude, :longitude
after_validation :geocode
end
как я могу получить расчетное расстояние между двумя точками и показать в поле зрения. Нет необходимости в долготе и широте.
изменить: Единица измерения по умолчанию - "мили". Чтобы изменить единицу по умолчанию, установите ее в ActiveRecord модель:
Venue.near([40.71, -100.23], 20, :units => :km)
или изменить его на:
# config/initializers/geocoder.rb
# set default units to kilometers:
:units => :km,
изменить: Мне удалось решить это так:
ride = Ride.new(params)
start_address_coordinates = Geocoder.coordinates(params[:start_address])
destination_coordinates = Geocoder.coordinates(params[:destination])
ride.distance = Geocoder::Calculations.distance_between(start_address_coordinates, destination_coordinates)
1 ответов
на Geocoder::Calculations
модуль, есть метод, называемый distance_between(lat1, lon1, lat2, lon2, options = {})
вы проходите долготу и широту двух точек, и это дает вам обратно расстояние между этими двумя точками.
для получения дополнительной информации, пожалуйста, проверьте этот ссылке из
цитата изGem's docs
:
посмотрите координаты некоторого местоположения (например, поиск Google Maps)
Geocoder.coordinates("25 Main St, Cooperstown, NY")
=> [42.700149, -74.922767]
так что вы можете использовать этот метод, чтобы получить координаты определенное местоположение, введенное пользователем, затем вы можете рассчитать разницу в расстоянии между двумя точками с помощью метода ниже.
расстояние между Эйфелевой башней и Эмпайр-Стейт-Билдинг
Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
=> 3619.77359999382 # in configured units (default miles)