#javascript #google-maps #ruby-on-rails-5 #turbolinks-5
#javascript #google-карты #ruby-on-rails-5 #turbolinks-5
Вопрос:
Я использую rails 5 и turbolinks 5, я не хочу отключать turbolinks, но он загружает API карт Google несколько раз.
Я много искал и нашел множество решений для rails 4 и turbolinks 3. Я перепробовал все решения, которые видел, но ни одно из них не сработало.
Один из них выглядит просто:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-eval="always"></script>
но все равно загружает карты Google несколько раз.
Еще один из них был:
<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);
но этот иногда не загружает карты Google до инициализации карты, а иногда возвращает ошибку при нескольких загрузках.
Я много читаю, есть много вопросов, задающих то же самое, но я не нахожу рабочего решения ни в одном из них.
PD: Теперь я вижу, что я удалил ключ api Google maps, он все еще работает, но я прочитал сообщение об ошибке в консоли.
Google Maps API warning: NoApiKeys
Будут ли какие-либо проблемы, если я использую карты Google без ключа api в производстве?
Комментарии:
1. Я не вижу ключа в этих запросах. Теперь требуются ключи, это может сработать (если ваш сайт «дедушкин» для доступа без ключа), но он также может перестать работать в любое время (если Google решит изменить свою политику дедушки)
2. У меня есть ключ api, и я использую его, но я удалил его и увидел, что он продолжает работать. Вот почему я спросил 😉 Спасибо за ответ.
Ответ №1:
Я думаю, что я решил это, кажется, что не стоит размещать javascripts в конце тела, как я это делал.
В документации turbolinks 5 говорится, что он помещается на <head>
.
Теперь я поместил скрипты в начало, и, похоже, он работает без проблем, и я не вижу сообщений о нескольких загрузках для API карт Google.
Комментарии:
1. какой вариант сценария вы поместили в head?