2016-03-21 12 views
-1

Bounds_changed olayında işaretleyici verileri için yenilenen bir google haritanız var. İşaretçiyi tıklattığınızda bir bilgi penceresi açarım. Şimdi, haritanın köşesinde bir işaretleyici varsa, haritayı harita görünümüne sığdırmak için bir haritaya biraz ilerler.İşaretçi üzerine tıklandığında ve bilgi penceresi görünür hale geldiğinde, bounds_changed olayını tetikler. Bunu nasıl devre dışı bırakabilirim?

Şu anda, bounds_changed etkinliğim tekrar tetikleniyor ve tüm işaretleyicileri yeni verilerle tekrar bağlayacaktır. Yani bu çok düzgün bir UX değil. Bunu nasıl çözebilirim?

Şimdiden teşekkürler.

cevap

0

Teorik çözüm: bounds_changed olayı etkin olduğunda NOTHING yapmalısınız.

Pratik çözüm:

1) bounds_changed olaya addlistener zorunda ve etkinliği göz ardı eder.

var ignore = false; // this var is global; 
currentBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function() { 
if(ignore) { 
    ignore = false; 
    return; 
} 

// Whatever. 
}); 

2) ignore değişken varsayılan olarak false olarak ayarlanır ve infowindow gösterildiğinde kullanıcı, işaretleyici tıkladığında true için ayarlanması gerekir: bunu yoludur.

google.maps.event.addListener(marker, 'click', (function(marker, i) { 
       ignore = true; 
       })(marker, i)); //end add marker listener 

1) How ignore bounds_changed event 2) How add listener to marker click event

+0

Ama bounds_changed olayla ilgili verileri güncellemeniz gerekir. –

+0

Neden bounds_changed üzerinde olmalı? Pls, – alsafoo

+0

numaralı sorgunuzla ilgili tüm kodlarınızı kopyalayın çünkü veriler ilk başta yüklemek için çok büyüktür, bu nedenle haritayı hareket ettirdiğimizde veya uzaklaştırırken veya yakınlaştığında ve yer değiştiğinde, listeyi yenilememiz gerekir. –

İlgili konular