私は膨大なマーカー10.000+を使用していますが、それらはすべてクリック可能でなければなりません。現時点では、必要なすべてのデータをクロージャーする、各マーカーのコールバック関数を作成します。私は10.000の関数を作成するのを防ぎようとしました。これはすべて同じで、引数として必要なデータをcb-functionに渡しますが、これは不可能です。Googleマップのコールバック関数にデータを渡してメモリリークを防ぐ方法
しかし、コールバック関数にデータを取得する方法があります。 'this'はcb関数を実際のクリックしたマーカーにポイントし、マーカーオブジェクトにアタッチすると必要なデータにアクセスできます。これは非常に汚いですが、うまくいくようです。
しかし、これはさらなる問題を引き起こします。これはメモリリークを引き起こすのではないかと疑います。私は、これはメモリリークを作成してい
// 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);
};
マーカーのようなobj.markerの略で、オブジェクトにマーカーを参照するが、marker.objのように、私はオブジェクトを参照する必要がCB-機能でオブジェクトにアクセスする
?必要なデータをコールバック関数に渡すことはできますか?