Rails5에서 GoogleMapsAPI를 사용하여 여러 마커 표시

이런 느낌





※아이콘은 커스텀 완료

기본 부분에는 아래의 기사를 참고로하였습니다. 감사합니다.
Rails5에서 GoogleMap 보기

사용하지 않는 것



· JSON
· gmap4rails

게시자 환경



Cloud9
Ruby 2.4.1
Rails 5.2
초보자 마음

컨트롤러



Place 모델에 latitude 또는 longitude가 float로 포함된 인스턴스가 이미 있다고 가정합니다.

places_controller.rb
class PlacesController < ApplicationController
  def index
    @places = Place.all
  end
end

보기



index.html.erb
<script async defer
 src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=APIキー&callback=initMap">
</script>

中略

<!--マップ-->
<div id="map"></div>

<!-- js部分 -->
<script>
    function initMap() {

      //初期表示位置
      var latlng = new google.maps.LatLng(36.30, 139.5);
      //デザイン
      var styles = [
           {
            stylers: [
             { "saturation": -95 },
             { "lightness": -20 }
            ]
           }
          ];

      var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 9,
          styles: styles,
          center: latlng
      });
      var transitLayer = new google.maps.TransitLayer();
      transitLayer.setMap(map);

      //複数マーカー ここから
      <% @places.each do |place| %>
      (function(){
        var contentString = "住所:<%= place.name %>"; 
        var infowindow = new google.maps.InfoWindow({
            content: contentString
        });

        var marker = new google.maps.Marker({
            position:{lat: <%= place.latitude %>, lng: <%= place.longitude %>},
            map: map,
            title: contentString, //お好みのアイコンが無ければ、左のカンマを削除
            icon: 'お好みのアイコンのパス(ない場合はこの行と真上の行のカンマを削除)'
        });

        marker.addListener('click', function() {
          infowindow.open(map, marker, content);
        });
       })();
      <% end %>
      //複数マーカー ここまで  
  }
</script>


이제 첫 번째 이미지처럼 보일 것입니다.

결론



JSON 사용하든 여러가지 했는데 결과 이것에 침착했습니다. 간단!
참고 【Rails로】GoogleMapsAPI의 마커를 클릭했을 때에 infowindow를 적절히 표시하고 싶다

좋은 웹페이지 즐겨찾기