Ruby on rails Geversine gem: пересчитать рассчитанное расстояние в км

Я работаю над задачей, которая вычисляет расстояние между двумя точками GPS и я хочу преобразовать расстояние в КМ:

def distances
    site     = Site.find params[ :id ]
    stores   = Store.current
    distances = []

    stores.map do |store|
      distance = Haversine.distance(site.address.latitude, site.address.longitude, store.address.latitude, store.address.longitude)
      distances << {
        name: store.name,
        value: distance
      }
    end

    render json: {
      distances: distances.to_json
    }

  end

пример вычисляемой позиции:

store2: 5527.654499076738

в документе haversine gem есть метод для преобразования: distance.to_kilmeters, но он не работает для меня! любая помощь?

1 ответ

Вам, вероятно, нужно позвонить to_kilometers метод на основе Haversine::Distance в противном случае его to_s Метод будет использован:

def distances
  site = Site.find params[ :id ]

  distances = Store.current.map do |store|
    {
      name: store.name,
      value: Haversine.distance(
               site.address.latitude,
               site.address.longitude,
               store.address.latitude,
               store.address.longitude
             ).to_kilometers
    }
  end

  render json: {
    distances: distances
  }
end

Что вы действительно хотите сделать, это добавить distance_in_km на ваш Address учебный класс...

Другие вопросы по тегам