Próbuję znaleźć sposób, aby pokazać obliczoną odległość między dwoma punktami na mapie za pomocą Geokodera. Mam START_ADDRESS i destination_address w moim stole, które mogę prosić o moim zdaniem, mój model wygląda następująco:Jak obliczyć odległość w km między dwoma punktami za pomocą Geokodera
class Ride < ActiveRecord::Base
geocoded_by :start_address
geocoded_by :destination_address
reverse_geocoded_by :latitude, :longitude
after_validation :geocode
end
Jak mogę uzyskać Obliczona odległość między dwoma punktami i pokazać w widoku. Nie ma potrzeby długości i szerokości geograficznej.
Edytuj: Domyślną jednostką jest "mile". Aby zmienić domyślną jednostkę ustawić go w modelu ActiveRecord:
Venue.near([40.71, -100.23], 20, :units => :km)
lub zmienić go w:
# config/initializers/geocoder.rb
# set default units to kilometers:
:units => :km,
Edit: udało mi się rozwiązać ten problem tak:
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)
@ JędrekDomański I zostały zaktualizowane moja odpowiedź Odpowiednio –
Dzięki, ale z jakiegoś LatLong odległości nie jest poprawna. Czy możesz zasugerować jaki jest powód. jestem znalezienie odległość między latlongs szerokość geograficzna = 19,1092883 = 73,0131332 szerokość geograficzna = 19,115710 = 72,918257 wynik => około 10 km, ale oczekuje/prawidłowy wynik powinien wynosić około 18 km –
@SnmMaurya gdzie czy pochodzą z tych współrzędnych, czy są one przechowywane w bazie danych lub w jakim źródle. jeśli pochodzą one z bazy danych, musisz upewnić się, że przechowujesz je w postaci dziesiętnej, aby uzyskać dokładniejsze wyniki. –