前提・実現したいこと
railsでgoogleApiを導入し、登録住所を元にgoogoleマップを表示したいのですが、
geocoder が動かず、住所をビューで変更しても緯度と経度が追加されずnilになってしまいます。(東京都などのざっくりとした住所でも緯度と経度は追加できません)緯度と経度がnilであるためにビューではエラー文も表示されておりません。
下記記事を参考に
Houseモデルの中に
string型 address
float 型 latitude
float 型 longitude
を作成しました。
発生している問題・エラーメッセージ
ビューもサーバーでもエラー文は見当たりません。
該当のソースコード
geocorder.rb
Geocoder.configure( # street address geocoding service (default :nominatim) lookup: :google, # to use an API key: api_key: "APIキー", # geocoding service request timeout, in seconds (default 3): timeout: 5, # set default units to kilometers: units: :km, use_https: true )
地図を表示したいビュー(houses/map.html.erb)
<script type="text/javascript"> function initMap() { var test ={lat: <%= @house.latitude %>, lng: <%= @house.longitude %>}; var map = new google.maps.Map(document.getElementById('map'), { zoom: 15, center: test }); var transitLayer = new google.maps.TransitLayer(); transitLayer.setMap(map); var contentString = '住所:<%= @house.address %>'; var infowindow = new google.maps.InfoWindow({ content: contentString }); var marker = new google.maps.Marker({ position:test, map: map, title: contentString }); marker.addListener('click', function() { infowindow.open(map, marker); }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=APIキー&callback=initMap"> </script> <style type="text/css"> #map { height: 500px; width: 70%;} </style> <div id="map"></div> <%= @house.address%><%= @house.latitude%><%= @house.longitude%>
コントローラー
def map if params[:id].present? @house=House.find(params[:id]) else @house=House.find(params[:house_id]) end @comments=Comment.where(house_id: @house) end
model/house.rb
class House < ApplicationRecord geocoded_by :address after_validation :geocode, if: :address_changed? end
試したこと
API の制限のキーは Maps JavaScript APIを選択しています。
補足情報(FW/ツールのバージョンなど)
環境 Rails 6.0.3.4
よろしくお願い致します。
あなたの回答
tips
プレビュー