Ruby on Rails에서 두 GPS 좌표 간의 거리를 계산하려면 여러 방법이 있지만, 일반적으로 Haversine 공식을 사용합니다. 이 공식은 두 점 사이의 대원 거리를 계산하는 데 사용됩니다. Rails에서는 `Geokit` 또는 `geocoder` gem을 사용하여 이 작업을 쉽게 수행할 수 있습니다. 아래에 두 가지 방법을 설명합니다.
### 방법 1: Geokit Gem 사용
1. **Geokit Gem 설치**
`Gemfile`에 `geokit`을 추가합니다:
```ruby
gem 'geokit'
```
그리고 `bundle install`을 실행하여 gem을 설치합니다.
2. **Geokit 설정 및 사용**
`config/initializers/geokit_config.rb` 파일을 생성하여 설정을 추가할 수 있습니다:
```ruby
if defined? Geokit
Geokit::default_units = :kms
Geokit::default_formula = :sphere
end
```
예제 코드는 다음과 같습니다:
```ruby
require 'geokit'
def calculate_distance(lat1, lng1, lat2, lng2)
point1 = Geokit::LatLng.new(lat1, lng1)
point2 = Geokit::LatLng.new(lat2, lng2)
distance = point1.distance_to(point2) # 기본 단위는 킬로미터
distance
end
lat1, lng1 = 37.7749, -122.4194 # 샌프란시스코
lat2, lng2 = 34.0522, -118.2437 # 로스앤젤레스
puts "Distance: #{calculate_distance(lat1, lng1, lat2, lng2)} kms"
```
### 방법 2: Geocoder Gem 사용
1. **Geocoder Gem 설치**
`Gemfile`에 `geocoder`를 추가합니다:
```ruby
gem 'geocoder'
```
그리고 `bundle install`을 실행하여 gem을 설치합니다.
2. **Geocoder 설정 및 사용**
`config/initializers/geocoder.rb` 파일을 생성하여 설정을 추가할 수 있습니다:
```ruby
Geocoder.configure(
units: :km # 기본 단위 설정 (킬로미터)
)
```
예제 코드는 다음과 같습니다:
```ruby
require 'geocoder'
def calculate_distance(lat1, lng1, lat2, lng2)
point1 = [lat1, lng1]
point2 = [lat2, lng2]
distance = Geocoder::Calculations.distance_between(point1, point2)
distance
end
lat1, lng1 = 37.7749, -122.4194 # 샌프란시스코
lat2, lng2 = 34.0522, -118.2437 # 로스앤젤레스
puts "Distance: #{calculate_distance(lat1, lng1, lat2, lng2)} kms"
```
이 두 방법 중 하나를 사용하여 Ruby on Rails에서 두 GPS 좌표 간의 거리를 쉽게 계산할 수 있습니다. `Geokit`과 `Geocoder`는 모두 강력한 도구이므로 필요에 따라 적합한 것을 선택하여 사용하면 됩니다.