2016-10-17 3 views
0

Ich benutze Schienen 5 und Turbolinks 5, ich möchte nicht Turbolinks deaktivieren, aber es lädt Google Maps API mehrmals.verhindern Google Maps mehrfach geladen mit Turbolinks

Ich habe viel gesucht, und ich habe viele Lösungen für Schienen 4 und Turbolinks 3 gefunden. Ich habe alle Lösungen ausprobiert, die ich sah, aber keiner von ihnen funktionierte.

Einer von ihnen sieht einfach:

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

aber immer noch das Laden von Google mehrfach abbildet.

Ein anderer von ihnen war:

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

aber weder arbeiten.

Eine vielversprechende Lösung war:

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); 

aber diese manchmal nicht geladen wird Google Maps vor der Karte inits und manchmal ist es die Fehler von mehreren Lasten zurück.

Ich lese viel, es gibt viele Fragen, die das gleiche fragen, aber ich finde keine funktionierende Lösung in irgendwelchen von ihnen.

PD: Ich sehe jetzt, dass ich den API-Schlüssel von Google Maps gelöscht habe, es funktioniert noch, aber ich habe eine Fehlermeldung in der Konsole gelesen.

Google Maps API warning: NoApiKeys 

Wird jedes Problem auftreten, wenn ich Google Maps ohne API-Schlüssel in der Produktion verwenden?

+0

Ich sehe keinen Schlüssel in diesen Anfragen. Schlüssel sind jetzt erforderlich, es könnte funktionieren (wenn Ihre Website "Grandfathered" für schlüssellosen Zugriff ist), aber es kann auch jederzeit aufhören zu arbeiten (wenn google entscheidet, ihre Grandfathering-Politik zu ändern) – geocodezip

+0

Ich habe den API-Schlüssel und ich benutze es , aber ich habe es gelöscht und ich habe gesehen, dass es weiter funktioniert. Deshalb habe ich gefragt;) Danke für die Antwort. – user6945851

Antwort

1

Ich denke, ich habe es gelöst, es scheint, dass es keine gute Idee ist, die Javascripts am Ende des Körpers zu platzieren, wie ich es tat.

In turbolinks 5 Dokumentation wird es gesagt, um es auf <head> zu setzen.

Jetzt habe ich die Skripte auf den Kopf und es scheint, es funktioniert ohne Probleme, und ich sehe keine Mehrfachladungen Nachrichten für Google Maps API.

Verwandte Themen