Je suis actuellement en train d'effectuer un appel ajax sur le serveur pour obtenir une liste des lat/longs affichés sur une carte google. J'ai également joint un événement "click" à chaque marqueur. L'astuce est que je dois être capable de stocker un peu de données supplémentaires sur le marqueur pour savoir quel ID (de la base de données) que j'ai affaire afin que je corresponde à la db plus tard. J'utilise la propriété Title pour afficher des informations amicales. L'AJAX, la création de marqueurs et l'événement click fonctionnent bien. Quelle est la bonne façon de stocker les données supplémentaires pour le marqueur? Voir code ici:Données Google Maps Marker
$.ajax({
url: "/location/NearbyHotspots",
data: {
lat: marker.position.lat(),
lng: marker.position.lng(),
radius: 10
},
datatype: "json",
type: "POST",
success: function (data, status, xhttp) {
for (var i = 0; i < data.length; i++) {
var loc = new google.maps.LatLng(data[i].Lat, data[i].Long);
var newmarker = new google.maps.Marker({
position: loc,
draggable: false,
map: map,
title: data[i].Name
});
// This doesn't seem to work
newmarker.hotspotid = data[i].ID;
google.maps.event.addListener(newmarker, "click", function(mark) {
alert(mark.hotspotid);
});
}
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
});
BTW Dans ce scénario, il n'y a plus besoin d'étendre l'objet marqueur avec des données personnalisées, vous pouvez passer une seconde param à la fonction attachClickEvent avec les données [i] .ID –
Cela devrait être l'a accepté répondre. Il fournit une manière propre de le faire qui n'implique pas de laisser les paramètres inutilisés dans le gestionnaire comme le suggère la propre réponse de l'OP. – tfrascaroli