Gmaps.js a cessé de fonctionner

D’un jour à l’autre, la bibliothèque Gmaps.js a cessé de fonctionner … J’ai créé une carte avec 3 marqueurs dessus et ils avaient InfoWindows et j’ai ajouté une petite option de routage dans InfoWindow où vous auriez pu taper votre adresse in et Gmaps vous ont acheminé vers ce point.

Maintenant, sans rien changer au cours des 2 dernières semaines, je ne peux plus le faire fonctionner: la carte se charge sans problème, mais lorsque je clique sur un marqueur, la carte se tue.

Voici l’URL: http://gruber.tv/z/#standorte

Lorsque je charge la carte dans Firefox, je vois beaucoup d’erreurs “trop ​​fréquentes” et elles proviennent toutes du fichier main.js de Google.

J’espère que quelqu’un pourra m’aider!

Cordialement, iDave

Regardez votre code qui gère l’événement click pour chacun de vos marqueurs:

 map.setCenter( e.position.k, e.position.D ); 

La méthode setCenter() dans gmaps prend les arguments de latitude et de longitude. Est-ce que k et D ressemblent à des noms sensibles pour ceux-ci? 🙂

Je suppose que vous avez trouvé ces propriétés en consultant les outils de développement tout en développant votre code, n’est-ce pas? Définissez un point d’arrêt sur cette ligne de code et examinez-le à nouveau.

Yikes, il n’y a plus de propriétés k ou D là-bas. Maintenant, il a des propriétés A et F place. Eh bien, ça ne va pas.

Mais voyez-vous la propriété __proto__ juste en dessous de cela? Développez-le et vous verrez les méthodes disponibles pour l’object position . Notez les méthodes lat() et lng() . Ceux-ci ont beaucoup plus de sens, alors essayez-les:

 map.setCenter( e.position.lat(), e.position.lng() ); 

Ce qui s’est passé ici: e.position est un object LatLng de l’API Google Maps. Les objects API ont un certain nombre de propriétés internes non documentées, ainsi que des propriétés et des méthodes documentées. lat() et lng() sont les méthodes documentées pour obtenir la latitude et la longitude d’un object LatLng . Les autres propriétés que vous avez découvertes sont utilisées en interne dans l’API, mais elles ne sont pas destinées à être utilisées dans votre propre code. Google exécute l’intégralité de son code API JavaScript via un “minifier” qui modifie les noms internes de manière arbitraire pour le raccourcir, tout en préservant les noms publics documentés. Ainsi, toutes les quelques semaines après la mise à jour de leur API, l’un des noms internes non documentés peut changer.