修复"您已在此页面上多次添加Google Maps API.这可能会导致意外错误."

Jac*_*ham 9 api maps ruby-on-rails

我在标题中包含了两个以下脚本,我收到错误"您已在此页面上多次包含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>
Run Code Online (Sandbox Code Playgroud)

当我删除任何一个脚本时,我会得到额外的js错误.如何在我的rails应用程序中正确地重构这两个脚本?

QMF*_*FNP 17

在上面的示例中,您将包含相同的脚本两次,但具有不同的参数.您应该能够通过包含脚本一次来解决您的问题,并使用以下所有必需参数:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&libraries=places&sensor=false"></script>    
Run Code Online (Sandbox Code Playgroud)


wLc*_*wLc 10

如果您通过ajax调用调用google地图,则可以window.google = {}在退出调用地图的状态时使用.


byv*_*rdu 5

我知道在我的情况下,它不是一个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 = {};
Run Code Online (Sandbox Code Playgroud)