&をロードするマップを作成すると、境界ボックスとズームレベルの両方に基づいてマーカーが破棄されます。マーカーを適切に削除することに本当に問題がありますが、状況によっては時々動作するようです。Google Maps API v3:マーカーが削除されない
Googleマップマーカーオブジェクトを含むマーカー情報を含むオブジェクトがあります。私のコードは、境界ボックスまたはズームレベルに基づいてマーケットを削除する必要があるかどうかを検出します。私は、マーカーオブジェクトを "setMap(null);"に設定しました。私はそれが設定されていることを確認することができますfirebugを使用して、私はその後、親オブジェクトを完全に削除し、オブジェクトのデータの長さが適切に更新されます。
マーカーが削除されたと思われるときにFirebugコンソールに出力されているようですが、動作しているように見え、境界ボックスのマーカーが変更されたajaxコールからマーカーが再作成されていないことがわかります。
地図上をズームすると、マウスを押し下げたままズームするとマーカーが削除されることがあります。または、最初にズームアウトするとマーカーがすべて削除されることがありますが、再度ズームインして取り除くと元に戻すことはできません。
私のコードのロジックに何か間違っている必要があります。私は困惑しています。
あなたはJSマーカーを削除するためのコード http://www.trailforks.com/map/includes/map.js
ある http://www.trailforks.com/map/test.php?lat=49.352247&lon=-123.202413 のソースを表示することができますが、下
function clearMarkerMemory(mapItem, i) {
google.maps.event.removeListener(mapItem.lis); // remove stored listener
mapper.data[i].obj.setMap(null); // remove marker
mapper.data.splice(i, 1);
console.log("removed marker "+mapItem.icon+":"+mapItem.nid+' '+mapItem.name);
};
である私は行く、コンソールににいくつかのより多くのデバッグを追加しました地図の単純な領域に2つのマーカーしかないhttp://www.trailforks.com/map/test.php?lat=49.641783767&lon=-123.49878636730955&z=14
私は作成されたマーカーを見ることができ、次に地図を移動することができますマーカオブジェクトでマーカが検出されたため、マーカが再作成されなかったことを確認してください。次に、マーカーの1つが画面から外れるようにビューポートを移動すると、マーカーが削除され、マーカーオブジェクトの長さが更新されることがわかります。しかし、私がマップをパンすると、マーカーはまだマップ上に残っています。
実際にバグがあると「バグ」を再現するのが難しいです。あなたのコードを見ればよく書かれており、AFAICSは正しいことをしています。それは問題ではありませんが、 'data [i]'オブジェクト全体を配列からスプライスする前に 'null'に設定しようとしましたか? – dda
よく書かれた、賢明な質問のための+1 ... – dda
この視点をgotoに再現するにはhttp://www.trailforks.com/map/test.php?lat=49.344530719060245&lon=-123.1294569147949&z=13 then clickdrag左のすべての黄色のマーカーが画面外になるようにマウスを移動します。マッカーのajax呼び出しがまだ起動しないように、マウスを押したままその方向にマップをドラッグすると、すべてのマーカーが削除されたことがわかります。しかし、一度にズームアウトしてからもう一度試してみると、おそらく壊れてしまうので、マーカーは今の100%のままです。それらはmapper.dataオブジェクトから削除されます。 – Canadaka