Rails5에서 geocoder를 사용하여 위도 경도 얻기 (Google API 설정)
Rails GoogleMap보기 gem gmaps4rails 및 geocoder를 참조하여지도 앱을 만듭니다.
htps : // 코 m / 유키 _ chro / ms / 아 2638c33 예 dc3c036d01
작성한 앱으로 지도를 표시할 수 있었지만 위도 경도를 얻을 수 없는 경우가 있었다. 「사이타마현」이라면 취득할 수 있지만 「사이타마현 사이타마시」로 하면 취득할 수 없다...
아무래도 geocoder 단체에서는, 세세한 위도 경도를 취득할 수 없는 것 같다. Google 지오코딩을 사용하면 모든 위치의 위도 경도를 구할 수 있습니다.
geocoder 구성 파일 만들기
$ bundle exec rails generate geocoder:config
config/initializers/geocoder.rb
Geocoder.configure(
# street address geocoding service (default :nominatim)
lookup: :google,
# IP address geocoding service (default :ipinfo_io)
# ip_lookup: :maxmind,
# to use an API key:
api_key: "AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
# geocoding service request timeout, in seconds (default 3):
timeout: 5,
# set default units to kilometers:
units: :km,
)
콘솔에서 동작 확인
$ bundle exec rails console
![snap_1214.png](https://qiita-image-store.s3.amazonaws.com/0/320718/236a5d2c-c062-6fa6-a04b-d31ed4e963be.png)
irb(main):002:0> Geocoder.search("東京タワー")
Google API error: request denied (API keys with referer restrictions cannot be used with this API.).
=> []
irb(main):003:0> Geocoder.coordinates('埼玉県さいたま市')
Google API error: request denied (API keys with referer restrictions cannot be used with this API.).
=> nil
오류 메시지
Google API error: request denied (API keys with referer restrictions cannot be used with this API.).
힌트에 API 설정을 검토하여 위도 경도를 얻을 수있게되었습니다. 원인은 (gmaps4rails의 API 설정과 같게) 「HTTP 리퍼러」로 제한을 걸고 있었기 때문이었다. 애플리케이션 제한을 '없음'으로 변경합니다.
irb(main):005:0> Geocoder.search("東京タワー")
=> [#<Geocoder::Result::Google:0x00007faf8616c7f8 @data={"address_components"=>[{"long_name"=>"8", "short_name"=>"8", "types"=>["premise"]}, {"long_name"=>"2", "short
_name"=>"2", "types"=>["political", "sublocality", "sublocality_level_4"]}, {"long_name"=>"4 Chome", "short_name"=>"4 Chome", "types"=>["political", "sublocality", "s
ublocality_level_3"]}, {"long_name"=>"Shibakoen", "short_name"=>"Shibakoen", "types"=>["political", "sublocality", "sublocality_level_2"]}, {"long_name"=>"Minato", "s
hort_name"=>"Minato", "types"=>["locality", "political"]}, {"long_name"=>"Tokyo", "short_name"=>"Tokyo", "types"=>["administrative_area_level_1", "political"]}, {"lon
g_name"=>"Japan", "short_name"=>"JP", "types"=>["country", "political"]}, {"long_name"=>"105-0011", "short_name"=>"105-0011", "types"=>["postal_code"]}], "formatted_a
ddress"=>"4 Chome-2-8 Shibakoen, Minato, Tokyo 105-0011, Japan", "geometry"=>{"location"=>{"lat"=>35.6585805, "lng"=>139.7454329}, "location_type"=>"ROOFTOP", "viewpo
rt"=>{"northeast"=>{"lat"=>35.6599294802915, "lng"=>139.7467818802915}, "southwest"=>{"lat"=>35.6572315197085, "lng"=>139.7440839197085}}}, "place_id"=>"ChIJCewJkL2LG
GAR3Qmk0vCTGkg", "plus_code"=>{"compound_code"=>"MP5W+C5 Tokyo, Japan", "global_code"=>"8Q7XMP5W+C5"}, "types"=>["establishment", "point_of_interest", "premise"]}, @c
ache_hit=nil>]
irb(main):006:0> Geocoder.coordinates('埼玉県さいたま市')
=> [35.8617292, 139.6454822]
(주의)
gmaps4rails 의 API KEY 는 「HTTP 리퍼러」로 제한을 할 필요가 있는 점에 주의가 필요합니다.
Reference
이 문제에 관하여(Rails5에서 geocoder를 사용하여 위도 경도 얻기 (Google API 설정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/creativival/items/1024719726694f620ad0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)