web-dev-qa-db-fra.com

Correction "Vous avez inclus l'API Google Maps plusieurs fois sur cette page. Cela peut provoquer des erreurs inattendues."

J'ai inclus deux scripts ci-dessous dans mon en-tête et je reçois l'erreur "Vous avez inclus l'API Google Maps plusieurs fois sur cette page. Cela peut provoquer des erreurs inattendues."

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

Lorsque je supprime l'un des scripts, j'obtiens des erreurs js supplémentaires. Comment puis-je refactoriser correctement ces deux scripts dans mon application Rails?

9
Jackson Cunningham

Dans votre exemple ci-dessus, vous incluez deux fois le même script, mais avec des paramètres différents. Vous devriez être en mesure de résoudre votre problème en incluant une fois le script, avec tous les paramètres requis comme celui-ci:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&libraries=places&sensor=false"></script>    
17
QMFNP

Si vous appelez google maps via un appel ajax, vous pouvez utiliser window.google = {} en quittant l'état dans lequel la carte a été appelée.

10
wLc

Je sais que dans mon cas, ce n'est pas une application Rails mais pourrait aider quelqu'un d'autre ... Je travaille avec React et j'obtenais la même chose) erreur lorsque je basculais entre les vues/pages.

Et comme wLc a dit window.google = {} fonctionnait comme un charme et supprimait l'erreur dans la console mais le <script> la balise restait dans le html et a été ajoutée à chaque fois que je revisitais la page contenant la carte.

Sur componentWillUnmount J'ai ajouté du code pour supprimer la balise.

const allScripts = document.getElementsByTagName( 'script' );
[].filter.call(
  allScripts, 
  ( scpt ) => scpt.src.indexOf( 'key=googleAPIKEY' ) >= 0
 )[ 0 ].remove();

 window.google = {};
4
byverdu