Google Map APIを実装する_3
Goal
Google Map APIを導入しページに地図を表示させる
【詳細】 住所にピンを立て、そこの緯度経度を表示させる
Step 3
- 住所から緯度、経度を取得する
- マップ上にピンどめができるようにする
段階1:モデルファイルに内容追加
#GoogleMapに関する記述
geocoded_by :address
after_validation :geocode, if: :address_changed?
上記の記述でモデル登録時と住所(address)変更時にgeocoderが動いて緯度、経度のデータが登録と更新される。
段階2:gemの追加
gem 'dotenv-rails'
gemの追加後、下記コマンドをターミナルで実施。
bundle install
「bundle i」や「bundle」でも実行できるらしい…
ちなみに、最近、自分は「bundle i」で実行することが多いっす。
段階3:ビューファイルの内容と環境変数名を更新
<h5 class="card-title">場所</h5>
<!--以下はGoogle MAPが正常に表示されるかのもの-->
<div class="map">
<div id="map">
</div>
</div>
<script>
function initMap(){
let pos ={lat: <%= @facility.latitude %>, lng: <%= @facility.longitude %>};
let map = new google.maps.Map(document.getElementById('map'), {
center: pos,
zoom: 15
});
let transitLayer = new google.maps.TransitLayer();
transitLayer.setMap(map);
let contentString = '住所:<%= @facility.address %>';
let infowindow = new google.maps.InfoWindow({
content: contentString
});
let marker = new google.maps.Marker({
position:pos,
map: map,
title: contentString
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=<%= ENV['GOOGLE_MAP_API_KEY'] %>&callback=initMap" async defer></script>
【変更後】
GOOGLE_MAP_API_KEY=取得したAPIキー
段階4:git pushをする前に....
自分は下記の手順でミスってしまい、めっちゃめんどくさい手順を経てしまったので、みなさんは間違わないことを祈りやす。また、ミスって.envをあげてしまった場合は焦らないで、一つずつ対処しやしょう!
(今回は個人開発でPFだったため、若干は焦ったけど、そこまで被害はでないぽかったので、ギリセーフ💦)
.
.
.
/.env
⚠️他の記事では「/.env」の後に「#追記」とか書いてあるものもあるが、「#追記」を書いてしまうとgit add .でやった際にgit statusで確認するとenvファイルがアップされるように出てしまうので注意
参照記事
番外編
もしも、pushをして、GitHub上に.envファイルをあげてしまったら...
ひとまず、一旦深呼吸。
深呼吸が済んだら、一つずつ対処。
1.APIの再発行
Google Cloud > Cloudの概要 > ダッシュボード > APIの概要に移動
APIの概要に移動を選択すると、認証情報の項目があるので、それを選択。
作成した「APIキー~~~」をクリック。
「キーを再生成」の項目を選択し、新しいキーを発行する。
因みに、以前のキーはある程度の期間使えることになるが、その期間を経過すると使えなくなる。
2.Gitのコマンド履歴を消す
以下のコマンドをターミナル上で実行すると、gitの全ての履歴から.envについての記録を抹消することができるっぽい。
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch ./.env" \
--prune-empty --tag-name-filter cat -- --all
これで、履歴を消すことができた。あとは、状況に応じて異なるが、上がってることを気づいてから段階4をやって、APIを更新した人は、追加で下記のコマンドを行ってから、通常通りgit add . > git commit -m "~~~~" > git push origin ~~~を実行すればなんとかなる。
# 抹消した履歴で強制上書きを決行します。
git push origin --force --all
気づいた後に、段階4をやってない場合は、それをやって、上記コマンドで実施。
参照記事
Discussion