J'ai ce code me donnant l'étrange message d'erreur
Uncaught TypeError: Cannot set property 'position' of undefined
C'est l'intérieur d'un plugin jQuery pour afficher une carte google dans une popup. J'utilisais le code ailleurs, où cela fonctionnait bien - la seule différence ici semble être que je l'utilise maintenant dans une fenêtre contextuelle. Suis-je absent d'un problème de portée ou quelque chose? Toutes les variables comme geocoderParams et latlng sont remplies comme elles le devraient. La recherche sur le message d'erreur n'a rien révélé de valable.
Le message d'erreur est déclenché lorsque google.maps.Map () est appelé.
self = $(this)
self.hide()
geocoder = new google.maps.Geocoder
geocoderParams =
address: self.data('address') || settings.address
region: settings.region
results = geocoder.geocode geocoderParams, (results, status) ->
if status == google.maps.GeocoderStatus.OK
latlng = results[0].geometry.location
mapOptions =
mapTypeControl: false
overviewMapControl: false
zoom: settings.zoomLevel
center: latlng
mapTypeId: google.maps.MapTypeId.ROADMAP
map = new google.maps.Map(self, mapOptions)
self.show()
J'ai recherché google.maps.Map()
et le référence Google dit que le premier paramètre devrait être un mapDiv:Node
Qui est le conteneur de la carte et est généralement un div
élément.
Vous passez $(this)
qui est probablement un objet jQuery qui n'est pas ce à quoi Google maps s'attend. Je ne connais pas le reste de votre code, mais peut-être devriez-vous simplement passer this
au lieu de $(this)
.
Si vous utilisez jQuery, vous devez passer le Vanilla HTMLElement
(par exemple Node
) au lieu de la sélection jQuery (par exemple Array
/NodeList
) qui la requête $()
retourne.
si vous ajoutez une commande de console:
console.log(self);
il renverra quelque chose comme:
[ ▶ <div id="map_canvas"></div> ]
pour obtenir la valeur du tableau jQuery, remplacez:
map = new google.maps.Map(self, mapOptions)
avec:
map = new google.maps.Map(self[0], mapOptions)
J'ai rencontré cette erreur en essayant de lancer la carte avec quelque chose comme ceci:
map = new google.maps.Map($('#map-canvas'), mapOptions);
J'ai pu le résoudre en sélectionnant le premier (et le seul) élément renvoyé par le sélecteur en ajoutant [0]
après le sélecteur:
map = new google.maps.Map($('#map-canvas')[0], mapOptions);