0

我正在使用 rails 5 和 turbolinks 5,我不想禁用 turbolinks,但它正在多次加载 google maps api。

我进行了很多搜索,找到了很多适用于 rails 4 和 turbolinks 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 密钥的谷歌地图会有什么问题吗?

4

1 回答 1

2

我想我解决了它,似乎将 javascripts 放在正文的末尾不是一个好主意,就像我正在做的那样。

在 turbolinks 5 文档中,据说将其放在<head>.

现在我将脚本放在头上,它似乎可以正常工作,而且我没有看到谷歌地图 api 的多个加载消息。

于 2016-10-17T16:33:50.857 回答