ER = 6378137.0 FL = 1/298.257; def rad(d) d * Math::PI / 180.0 end def calc_distance(lat1, lng1, lat2, lng2) cl1 = rad((lat1 + lat2)/2) cl2 = rad((lat1 - lat2)/2) cl = rad((lng1 - lng2)/2) scl1 = Math.sin(cl1) ** 2 scl2 = Math.sin(cl2) ** 2 scl = Math.sin(cl) ** 2 s = scl2 * (1 - scl) + (1 - scl1) * scl c = (1 - scl2) * (1 - scl) + scl1 * scl w = Math.atan(Math.sqrt(s / c)) r = Math.sqrt(s * c) / w; d = 2 * w * ER; h1 = (3 * r - 1) / 2 / c h2 = (3 * r + 1) / 2 / s; s = d * (1 + FL * (h1 * scl1 * (1 - scl2) - h2 * (1 - scl1) * scl2)); puts '> 99km' if s > 99000 s end
相关推荐
Ruby-Geokit是一个强大的开源库,专为Ruby开发者设计,用于处理与地理位置相关的任务,如地理编码、反向地理编码以及进行距离和方向的计算。这个gem极大地简化了在Ruby应用中集成地理服务的工作,使得开发者能够轻松...
这是Vincenty公式的Ruby实现,用于计算地球上两点之间的距离。 该公式假定地球的形状是扁球形,因此比假定球形地球的其他方法要准确得多。 该代码在很大程度上受到Chris Venues Javascript实现和解释的启发: 两...
Rgeo库支持对这些几何对象进行各种计算,如距离计算、面积计算、交集、并集、差集等。它还实现了球面几何算法,考虑到地球并非完美的平面,这在处理全球范围的地理数据时至关重要。例如,你可以计算两个地点之间的...
这样的网站能够处理地理数据,提供地图展示、地理编码、距离计算等特性,常见于地图服务、本地搜索应用或者基于位置的社交网络。 **1. Ruby on Rails框架介绍** Ruby on Rails(简称Rails)是基于Ruby语言的一个...
这个API可以用于获取位置信息,比如地址验证、距离计算、定位用户等。通过发送HTTP请求到特定的URL,并传递查询参数,如地址,开发者可以获得JSON或XML格式的响应,其中包含了地理编码的结果。 **Laravel中的集成**...