jed*_*edi 11 ruby-on-rails geocode
我正试图找出一种方法,使用Geocoder显示地图上两点之间的计算距离.我在我的表中有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
Run Code Online (Sandbox Code Playgroud)
如何计算两点之间的距离并显示在视图中.不需要经度和纬度.
编辑:默认单位为"里程".要更改默认单位,请在ActiveRecord模型中设置它:
Venue.near([40.71, -100.23], 20, :units => :km)
Run Code Online (Sandbox Code Playgroud)
或者改变它:
# config/initializers/geocoder.rb
# set default units to kilometers:
:units => :km,
Run Code Online (Sandbox Code Playgroud)
编辑:我设法解决这个问题:
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)
Run Code Online (Sandbox Code Playgroud)
Mou*_*lam 23
在Geocoder::Calculations模块中,有一个名为的方法distance_between(lat1, lon1, lat2, lon2, options = {})
你传递两点的经度和纬度,它会让你回到这两点之间的距离.
如需进一步信息,请检查此链接了
引用自Gem's docs:
Geocoder.coordinates("25 Main St, Cooperstown, NY")
=> [42.700149, -74.922767]
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用上述方法获取用户输入的特定位置的坐标,然后您可以通过以下方法计算两点之间的距离差异.
Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655])
=> 3619.77359999382 # in configured units (default miles)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7800 次 |
| 最近记录: |