mitsu1208g
@mitsu1208g (洋満 大石)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Google Map 表示で環境変数の設定が反映されない

Google Map APIで環境変数設定時に起こるエラー

Ruby'2.6.5'
Rails'6.0.0'

うまくいかない動作

Google Mapを表示したいHTML(show.html.erb)にAPI Keyを直接打ち込むと問題なく表示されるが、環境変数にした時にエラーが起こる
Image from Gyazo

問題の箇所コード

show.html.erb
<div id='map'>
<script>
let map

function initMap(){
  geocoder = new google.maps.Geocoder()

  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: <%= @performance.latitude %>, lng: <%= @performance.longitude %>},
    zoom: 15,
       zoomControl: false,
       mapTypeControl: false,
       fullscreenControl: false,
  });

  marker = new google.maps.Marker({
    position:  {lat: <%= @performance.latitude %>, lng: <%= @performance.longitude %>},
    map: map
  });
}
</script>
 <script src="https://maps.googleapis.com/maps/api/js?key=<% ENV['GOOGLE_MAP_API'] %>&callback=initMap" async defer>
</script>
</div>
/.env
GOOGLE_MAP_API='--------------------------(APIKey)'
config/initializers/gecoder.rb
Geocoder.configure(
  # Geocoding options
  timeout: 5,                 # geocoding service timeout (secs)
  lookup: :google,         # name of geocoding service (symbol)
  # ip_lookup: :ipinfo_io,      # name of IP address geocoding service (symbol)
  # language: :en,              # ISO-639 language code
  # use_https: false,           # use HTTPS for lookup requests? (if supported)
  # http_proxy: nil,            # HTTP proxy server (user:pass@host:port)
  # https_proxy: nil,           # HTTPS proxy server (user:pass@host:port)
  api_key: ENV['GOOGLE_MAP_API'],               # API key for geocoding service
  # cache: nil,                 # cache object (must respond to #[], #[]=, and #del)
  # cache_prefix: 'geocoder:',  # prefix (string) to use for all cache keys

  # Exceptions that should not be rescued by default
  # (if you want to implement custom error handling);
  # supports SocketError and Timeout::Error
  # always_raise: [],
  units: :km,                 # :km for kilometers or :mi for miles
  # Calculation options

  # distances: :linear          # :spherical or :linear
)
vim ~/.zshrc
GOOGLE_MAP_API='--------------------------(APIKey)'

試したこと

・% spring stop
・% rails s
・% rails c →ENV['GOOGLE_MAP_API']
→問題なく入力されていることを確認

仮定

API自体は問題なく繋げられているはずなので、環境変数の設定がうまくいっていない。/.envに記述し、vimにも入力→コンソールで出力しても設定できているのでhtml.erbの(Rails6)記述の問題だと思いますが、何が間違っているのかわからない。
※./envには別のAPIKeyも記述してあり、それらは変数入力できている。

参考にした記事

https://developers.google.com/maps/documentation/javascript/error-messages?utm_source=maps_js&utm_medium=degraded&utm_campaign=billing#api-key-and-billing-errors
https://qiita.com/hayatokunn/items/d8a9e9deec33e9022b4f
https://qiita.com/MISIAN-MISIAN/items/01d68907f1620ded17bd
https://teratail.com/questions/203093
https://pikawaka.com/rails/dotenv-rails
どうぞよろしくおねがいします!m(_ _)m

0

4Answer

以前のGOOGLE MAPを使っていたプロジェクトを確認したところ、key=<%="#{ENV['GOOGLE_API_KEY']}"%>に変わったら、どうでしょうか。

1Like

ご回答ありがとうございます!こちら解決していたことを失念しておりました;
結果的には
key=<%=
の、イコールが二つ必要だったのですが、私が記述する際にひとつだけしか記述していなかったのが原因でした。
key=<% か
key<%= のようなかんじです。

ご回答いただき本当にありがとうございます!

1Like

@mitsu1208g
自分もAPIを導入しようとしていて、環境変数を入れているのに反映されませんでした。
この質問をみたところ自分も同じような内容で表示できていなかったようです。
おかげで解決できました。ありがとうございました。:bow:

1Like

多分、show.html.erb<%の後に=がないからだと思いますが、どうでしょうか。

<%= ENV['GOOGLE_MAP_API'] %>
0Like

Comments

  1. @mitsu1208g

    Questioner

    ありがとうございます、それでも表示は変わりません・・・!

Your answer might help someone💌