web-dev-qa-db-ja.com

「このページにGoogle Maps APIを複数回含めました。これにより、予期しないエラーが発生する可能性があります。」

ヘッダーに次の2つのスクリプトを含めると、エラーが発生します「このページにGoogle Maps APIを複数回挿入しました。予期しないエラーが発生する可能性があります。」

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js key=************"></script>

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>

いずれかのスクリプトを削除すると、追加のjsエラーが発生します。 Railsアプリでこれらの2つのスクリプトを適切にリファクタリングするにはどうすればよいですか?

9

上記の例では、同じスクリプトを2回インクルードしていますが、パラメーターは異なります。次のようなすべての必須パラメーターを使用して、スクリプトを1回含めることで問題を解決できるはずです。

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&libraries=places&sensor=false"></script>    
17
QMFNP

Ajax呼び出しを介してGoogleマップを呼び出す場合は、window.google = {}マップが呼び出された状態を終了すると。

10
wLc

私の場合、それはRailsアプリではありませんが、他の誰かに役立つかもしれません...私はReactビュー/ページを切り替えるときにエラーが発生しました。

そして、wLcが言ったようにwindow.google = {}はチャームのように機能し、コンソールでエラーを削除していましたが、<script>タグはhtmlに残り、マップがあるページを再訪するたびに追加されました。

componentWillUnmountに、タグを削除するコードを追加しました。

const allScripts = document.getElementsByTagName( 'script' );
[].filter.call(
  allScripts, 
  ( scpt ) => scpt.src.indexOf( 'key=googleAPIKEY' ) >= 0
 )[ 0 ].remove();

 window.google = {};
4
byverdu