Ich arbeite mit einer Vielzahl von Markern 10.000+ und alle sollten anklickbar sein. Im Moment erstelle ich eine separate Callback-Funktion für jeden Marker, die eine Schließung aller Daten ist, die ich brauche. Ich habe versucht, die Erstellung von 10.000 Funktionen zu verhindern, die alle das gleiche machen und die Daten, die ich brauche, als Argument an die cb-Funktion übergeben, aber das scheint unmöglich.Wie man Daten an google-maps Callback-Funktionen weiterleitet und Speicherlecks verhindert
Aber es gibt eine Möglichkeit, die Daten trotzdem zur Callback-Funktion zu bekommen. 'This' zeigt in der cb-Funktion auf die tatsächlich angeklickte Markierung und ich kann auf die benötigten Daten zugreifen, wenn ich sie an das Marker-Objekt anschließe. Das ist sehr dreckig, aber es scheint zu funktionieren.
Aber das verursacht weitere Probleme: Ich bezweifle, dass dies Speicherlecks verursacht. Ich Referenz die Markierung in dem Objekt, das der Marker für wie obj.marker steht aber das Objekt in der cb-Funktion, die ich wie das Objekt zu verweisen habe Zugriff auf marker.obj
// Callback function for clicks on markers
function cb(e){
console.log(e); // the event with information about marker position
console.log(this.obj); // the object the marker stands for
}
//add a eventListener to the marker which represents a object
this.initMarkerListener = function(obj) {
obj.marker.obj = obj; //the critical point
google.maps.event.addListener(obj.marker, 'click', cb);
};
Ist dies ein Speicherleck erzeugt? Und kann ich die erforderlichen Daten mit einer anderen Technik an die Callback-Funktion übergeben?