Ruby on Rails에서 Google Map API를 사용합니다.

소개



Google API를 처음 사용하므로 다시 사용할 때의 메모

*Google API는 2018년 7월부터 API 키를 사용해야 합니다.

준비



새로운 프로젝트 만들기!!

$ mkdir maps
$ cd maps
$ bundle exec rails new . 

Scaffold에서 이름, 위도 및 경도 열이 있는 맵 테이블 만들기
$ bundle exec rails g scaffold map name:string latitude:float longitude:float
$ bundle exec rake db:migrate

Gemfile에 gem "gmaps4rails"

Gemfile
source 'https://rubygems.org'

gem "gmaps4rails"

gem 설치
$ bundle install --path vendor/bundle

보기



자신의 API 키에 취득한 API 키를 추가한다.

API의 취득 방법에 관해서는 이하의 URL로부터 취득할 수 있다.
[API 키를 얻는 방법] ぇぺぺrs. 오, ぇ. 코 m / 마 ps / 도쿠 멘 타치 온 / 그럼 sc 리 pt / 게 t 아피 케 y

application.html.erb
<!DOCTYPE html>
<html>
  <head>

-----省略--------

<script src="//maps.google.com/maps/api/js?key=自分のAPIキー"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<script src='//cdn.rawgit.com/printercu/google-maps-utility-library-v3-read-only/master/infobox/src/infobox_packed.js' type='text/javascript'></script>
</head>

자바스크립트



javascript 바로 아래에 underscore.js 파일을 만듭니다.
그리고 여기에서 코드 얻기 그리고 underscore.js에 붙여넣기.

app/assets/javascripts/underscore.js
---省略---

application.js에 underscore 및 gmaps/google 추가

app/asset/javascripts/application.js
//= require underscore
//= require gmaps/google

보기



app/views/maps/index.html.erb
--省略--

<div style='width: 800px;'>
  <div id="map" style='width: 800px; height: 400px;'></div>
</div>

<script type="text/javascript">
    handler = Gmaps.build('Google');
    handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
      markers = handler.addMarkers(<%=raw @hash.to_json %>);
      handler.bounds.extendWith(markers);
      handler.fitMapToBounds();
    });
</script>

view의 index.html.erb 파일의 맨 끝에 위의 코드를 추가합니다.

controller



app/controllers/maps_controller.erb
class MapsController < ApplicationController
  before_action :set_map, only: %i(show edit update destroy)

  # GET /maps
  # GET /maps.json
   def index
     @maps = Map.all
     @hash = Gmaps4rails.build_markers(@maps) do |map, marker|
       marker.lat map.latitude
       marker.lng map.longitude
       marker.infowindow map.name
     end
    end
  end

maps 컨트롤러의 index 메소드에 위와 같은 코드 추가

결과



이제/maps에 액세스하면 아래와 같은 화면이 될 것입니다.

좋은 웹페이지 즐겨찾기