rails에서 주소를 입력하면 해당 위치의 googlemap을 표시합니다.

하고 싶은 일





교토역이라고 기입해, 푸른 버튼의 등록을 하면, 아래에 교토역의 google map이 나온다.

gem 추가



Gemfile
gem 'geocoder'

터미널
bundle install

모델 설명



이번에는 shop 모델에 주소를 넣고 싶다.

shop 모델



위 그림의 설명은 shop 모델입니다. 가게의 이름과 방문객 수의 컬럼을 만들고 있다.
googlemap 표시를 위해, 컬럼 address latitude longtude를 추가한다.

터미널
rails generate migration AddaddressLatitudeAndLongitudeToShop address:string latitude:float longitude:float

shop.rb
geocoded_by :address
after_validation :geocode, if: :address_changed? 

위의 설명에서, 주소(컬럼 address)를 넣었을 때에, 자동으로 그 주소의 위도, 경도를 칼럼 latitude,
longitude에 기술해준다.

등록 화면



show.html.erb
<%= form_for @shop :url => {:action => :update}   do |f| %>

 <div class="text-center"><%= f.text_field :address %></div>

    <%= f.submit "住所登録", class: "btn btn-primary center-block" %>


 <% end %>


 <body>
    <div id="map"></div>
    <style>
        #map {
        height: 500px;
        width: 70%;
      }
    </style>
    <script>
      function initMap() {
        var uluru = {lat: <%= @shop.latitude %>, lng: <%= @shop.longitude %>};
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 16,
          center: uluru
        });
        var marker = new google.maps.Marker({
          position: uluru,
          map: map
        });
      }
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
    async defer></script>
  </body>


아래에서 세 번째 줄 YOUR_API_KEY 설명이 있습니다.  이것은 각자 googlemapAPI로부터 key 취득할 필요가 있다.
ぃ tp // 이 m / 온 / ms / 7f33615940 67c13820
이 링크에 키 취득 방법이 작성되어 있으므로 참고하십시오.

참고문헌
htps : // v. 9바 r. 토키 쇼 / 라이 ls / 게오 코데 r

좋은 웹페이지 즐겨찾기