(rails) GoogleMap API 도입으로 집계
소개
rails로 GoogleMap의 API를 도입함에 있어 참고문헌을 배견하면서도 집착한 곳을 비망록으로서 남깁니다. 모든 것을 망라하고 있는 것은 아니지만 똑같이 고민하고 있는 사람의 힘이 될 수 있다고 생각합니다.
구현하고 싶은 것
이벤트를 게시할 때 입력한 주소를 자동으로 GoogleMap에 반영
준비하는 것
이벤트를 게시할 때 입력한 주소를 자동으로 GoogleMap에 반영
준비하는 것
※ 참고로 한 기사
【Rails6/Google Map API】초학자용! Ruby on Rails에서 쉽게 Google Map API 도입
환경
집어 넣은 곳
① 코드를 작성했지만 지도가 표시되지 않음
※기술이나 도입 방법에 관한 자세한 기사는 하기 참고
Rails 등록한 주소를 Google Map에 표시
var test ={lat: <%= @event.latitude %>, lng: <%= @event.longitude %> };
여기의 "lat:"가 위도, "lng:"가 경도가 되고 geocoder가 테이블에 있는 그것을 가져와 지도에 위치를 표시합니다.
원인: 위도, 경도가 올바르게 취득되지 않았다.
확인해야 할 사항:
1. addoress 테이블에 "latitude(위도)", "longitude(경도)"컬럼이 있는지
2. 열에 저장하기위한 모델에 대한 설명이 있습니까?
3. API 키가 즉시 반영되지 않을 수 있기 때문에 그 경우는 서버 재시작이나 시간을 조금 둔다
상기 링크의 참고 기사에 모두 있기 때문에 자세한 것은 그쪽을.
② 위도와 경도를 테이블에 저장할 수 없다
위도와 경도를 저장하려면 테이블에 각 열을 설정해야 합니다.
address 컬럼에 보존한 주소를 바탕으로 geocoder가 위도, 경도를 취득해 보존해 주는 구조입니다만 address가 보존되어도 latitude, longitude가 「Null」인 채였습니다.
원인:
addoress가 있는 테이블의 migration 파일을 rollback하고 덧붙이는 것이 아니라 「추가」로 latitude, longitude 컬럼을 더한다.
이쪽을 크게 착각했습니다. addoress가 있는 event 테이블의 migration 파일을 rollback하고 열을 덧붙여 rails db:migrate에서는 안 됩니다.
% rails generate migration AddColumnEvents
반드시 추가 migration 파일을 만들어 그 곳에 열을 추가해야합니다.
xxxxxxxxxxx5_add_column_events.rbclass AddColumnEvents < ActiveRecord::Migration[6.0]
def change
add_column :events, :latitude, :float
add_column :events, :longitude, :float
end
end
이러한 설명으로 컬럼을 추가 가능합니다. 열의 유형은 float입니다.
% rails db:migrate
추가할 수 있으면 migrate를 잊지 말고.
이러한 형태로 위도와 경도의 값을 저장할 수 있었습니다.
③ 상세한 위치 정보를 취득할 수 없다
예) 가나가와현 요코하마시 나카구 야마시타초
→ 거친 주소는 취득할 수 반영하지만 지도의 의미가 없다
예) 가나가와현 요코하마시 나카구 야마시타초 ○○번지
→핀 포인트의 위치 정보를 확실히 취득하고 싶다
원인:
보다 정확한 위치 정보를 얻기 위해 geocoder config 설정을 변경하십시오.
% bin/rails g geocoder:config
명령은 config 파일을 생성합니다.
(config/initializers/geocoder.rb)
config/initializers/geocoder.rbGeocoder.configure(
# Geocoding options
timeout: 5, # geocoding service timeout (secs)
lookup: :google, # name of geocoding service (symbol)
# ip_lookup: :ipinfo_io, # name of IP address geocoding service (symbol)
# language: :en, # ISO-639 language code
use_https: true, # use HTTPS for lookup requests? (if supported)
# http_proxy: nil, # HTTP proxy server (user:pass@host:port)
# https_proxy: nil, # HTTPS proxy server (user:pass@host:port)
api_key: YOUR_API_KEY, # API key for geocoding service
# cache: nil, # cache object (must respond to #[], #[]=, and #del)
# cache_prefix: 'geocoder:', # prefix (string) to use for all cache keys
# Exceptions that should not be rescued by default
# (if you want to implement custom error handling);
# supports SocketError and Timeout::Error
# always_raise: [],
# Calculation options
units: :km, # :km for kilometers or :mi for miles
# distances: :linear # :spherical or :linear
)
위치 정보를 검색하는 설정인 'lookup:'을 'google'로 설정하고 'api_key:'에 검색된 API 키를 입력합니다(여기에서는 YOUR_API_KEY로 바꾸고 있습니다).
안전한 해결입니다.
참고 기사 정리
var test ={lat: <%= @event.latitude %>, lng: <%= @event.longitude %> };
% rails generate migration AddColumnEvents
class AddColumnEvents < ActiveRecord::Migration[6.0]
def change
add_column :events, :latitude, :float
add_column :events, :longitude, :float
end
end
% rails db:migrate
% bin/rails g geocoder:config
Geocoder.configure(
# Geocoding options
timeout: 5, # geocoding service timeout (secs)
lookup: :google, # name of geocoding service (symbol)
# ip_lookup: :ipinfo_io, # name of IP address geocoding service (symbol)
# language: :en, # ISO-639 language code
use_https: true, # use HTTPS for lookup requests? (if supported)
# http_proxy: nil, # HTTP proxy server (user:pass@host:port)
# https_proxy: nil, # HTTPS proxy server (user:pass@host:port)
api_key: YOUR_API_KEY, # API key for geocoding service
# cache: nil, # cache object (must respond to #[], #[]=, and #del)
# cache_prefix: 'geocoder:', # prefix (string) to use for all cache keys
# Exceptions that should not be rescued by default
# (if you want to implement custom error handling);
# supports SocketError and Timeout::Error
# always_raise: [],
# Calculation options
units: :km, # :km for kilometers or :mi for miles
# distances: :linear # :spherical or :linear
)
Reference
이 문제에 관하여((rails) GoogleMap API 도입으로 집계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/engineer_peeta/items/e6af6b0620c4d46cd7d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)