지오코더 사용 방법

4878 단어
Rails 프로젝트에서 작업 중이고 모든 주소를 저장했습니다. 엄청난!
지금 무엇을 합니까? Google API를 사용 중이고 마커를 생성해야 하는 경우 위도 및 경도 좌표가 필요합니다.

Geocoder는 주소를 가져와 위도/경도 좌표를 찾는 놀라운 보석입니다! 반대의 방법으로도 할 수 있습니다. 백엔드에 정보를 저장하면 총 수행한 API 요청을 줄일 수도 있습니다.

어떻게 설치합니까?

먼저 내 원래 모델은 다음과 같습니다.

class Activity < ApplicationRecord
  has_many :user_activities
  has_many :users, through: :user_activities
  has_many :comments
end


이제 두 가지 작업을 수행하려고 합니다.
gem install geocoder
그런 다음 실행bundle install
이제 gemfile을 설치했으며 지오코더를 사용할 수 있습니다.
rails g migration AddLatitudeAndLongitudeToModel latitude:float longitude:float
db/migrate 폴더 내에 마이그레이션 파일이 생성됩니다.

실행db:migrate하고 성공적으로 마이그레이션되었는지 확인하십시오!

이제 Activity 모델에 몇 가지를 추가하겠습니다.

class Activity < ApplicationRecord
  geocoded_by :complete_address
  def complete_address
    [address, city, state, zipcode].compact.join(', ')
  end

  has_many :user_activities
  has_many :users, through: :user_activities
  has_many :comments
end

geocoded_by :complete_address를 추가하고 complete_address가 무엇인지 정의했습니다.

def complete_address
    [address, city, state, zipcode].compact.join(', ')
end

이것이 작동하는지 확인하기 위해 전화를 걸 수 있습니다.Activity.first.complete_address 모든 것이 성공적으로 작동하면 새로운 완전한 주소가 반환됩니다. 이렇게 하면 모델에서 데이터를 가져와 전체 주소를 만듭니다.

여기에서 다음과 같이 호출할 수 있습니다.Activity.last.geocodeAPI와 함께 지오코드를 쿼리하고 좌표를 반환합니다.

이제 활동이 쿼리될 때마다 요청을 제한하기 위해 다음과 같이 after_validation 할 수 있습니다.

class Activity < ApplicationRecord
  geocoded_by :complete_address
  after_validation :geocode, if: ->(obj) { obj.address.present? and obj.address_changed? }
  def complete_address
    [address, city, state, zipcode].compact.join(', ')
  end

  has_many :user_activities
  has_many :users, through: :user_activities
  has_many :comments
end


거기 당신이 간다. 당신이 찾고 있는 것을 찾으시기 바랍니다. ;)

좋은 웹페이지 즐겨찾기