防止谷歌地图加载多次与涡轮链接

prevent google maps loaded multiple times with turbolinks

本文关键字:链接 谷歌地图 加载      更新时间:2023-09-26

我正在使用rails 5和turbollinks 5,我不想禁用turbollinks,但它正在多次加载谷歌地图api。

我搜索了很多,我找到了rails 4和turbolink 3的很多解决方案。我试了所有我看到的解决办法,但没有一个奏效。

其中一个看起来很简单:

<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-eval="always"></script>

但仍然多次加载谷歌地图。

另一个是:

<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-track="reload"></script>

但两者都不工作。

一个有希望的解决方案是:

var ready;
ready = function() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://maps.googleapis.com/maps/api/js?v=3.exp';
    document.body.appendChild(script);
};
$(document).ready(ready);
$(document).on('turbolinks:load', ready);

但是这个有时没有在地图初始化之前加载谷歌地图,有时它返回多次加载的错误。

我读了很多书,有很多问题问同样的问题,但我没有找到一个有效的解决方案。

PD:我现在看到我删除了谷歌地图的api密钥,它仍然工作,但我在控制台上读到一个错误消息。

Google Maps API warning: NoApiKeys

将是任何问题,如果我使用谷歌地图没有api键在生产?

我想我解决了这个问题,似乎把javascript放在body的末尾不是一个好主意,因为我正在做。

在turbolinks 5文档中,据说将其放置在<head>上。

现在我把脚本放在头部,似乎它的工作没有问题,我看到没有多个加载消息的谷歌地图api。