【问题标题】:is the total of a lat / long calculation specify the map distance?纬度/经度计算的总和指定地图距离吗?
【发布时间】:2021-09-06 06:55:00
【问题描述】:
我们在工作中使用 rails geocoder gem,但希望开始获取存储在 memcached 中的一组位置的最近位置(即不使用 ActiveRecord 接口)。它会像计算我们的起点和不同地点之间的数值差异一样简单吗?还是我应该注意其他计算?
这仅适用于地图距离,不适用于街道距离或交通距离。地理编码器是否支持这种计算?
【问题讨论】:
标签:
ruby-on-rails
geocode
rails-geocoder
【解决方案1】:
Geocoder::Calculations.distance_to 可以用半正弦公式得到两点之间的距离:
coordinates = [[1, 1], [-2, 1], [3,2]]
hash = coordinates.each_with_object({}) do |latlng, memo|
memo[latlng] = Geocoder::Calculations.distance_between(latlng, location)
end
hash.min # [[-2, 1], 154.49109373250715]
hash.max # [[3, 2], 249.0844867974628]
半正弦公式对于大多数用途来说已经足够好,但没有考虑到地球是一个不太完美的球体这一事实,并且不能保证它的正确率优于 0.5%。