Eğer Google Mapsle uğraşıyorsanız, harita uzerine birden cok imlec koymak ve bunları yonetmek bir noktadan sonra buyuk problem olabilmektedir. Cok sayıda imleci kolayca yonetmek icin Googleın yazdığı MarkerManager isimli nesneyi kullanmanızı tavsiye ediyoruz. Dosyaya bu adresten ulaşabilirsiniz. Js dosyasını yukledikten sonra web sayfanızın head kısmına ekleyerek markermanager.js dosyasını projenize dahil edin.
Şimdi diyelim yuzlerce nokta iceren bir xml dosyamız var. Orneğimizde bu dosyadan noktaları cekip harita uzerinde MarkerManager kullanarak gostereceğiz. xml dosyamız aşağıdaki şekilde tanımlanmış olsun;
Burada sırasıyla lat ve lon değerleri koordinatları belirlerken name değeri ise imlece verdiğimiz bir isimdir. Oncelikle imleci yaratacak bir fonksiyon tanımlayalım;
function createMarker(point, icon)
Burada point değişkenini xmlden alacağımız koordinatlar olarak belirleyeceğiz. icon ise vereceğimiz ikon dosyasını belirtecek. Aşağıdaki fonksiyonda ise imlecleri cekip MarkerManager icine koyma işlemini tamamlıyoruz.
var map = new GMap2(document.getElementById(map_goster));
map.addControl(new GLargeMapControl());
//Istanbulun koordinatına ortala zoom seviyesi 11
map.setCenter(new GLatLng(41,29), 11);
map.enableDoubleClickZoom();
mgr = new MarkerManager(map);
var testMarkers = [];
GDownloadUrl(marker.xml,function(doc)
mgr.addMarkers(testMarkers, 9);
mgr.refresh();
});
Burada ilk olarak haritamızla ilgili tanımlamaları yaptık ve MarkerManagerı haritayla ilişkilendirdik. Daha sonra var testMarkers = []; komutuyla bir dizi yarattık. Daha sonra GDownloadUrl komutuyla xml dosyamızı cağırıp GXml nesnesiyle parse işlemini gercekleştirdik. Son olarakta createMarker fonksiyonuyla yarattığımız imlecleri testMarkers dizisi icine gomduk. mgr.addMarkers(testMarkers, 9); komutu ise dizi icindeki tum imlecleri 9 zoom seviyesinden itibaren gosterilmek uzere harita uzerine koyar.
Eğer herhangi bir zamanda imlecleri silmek ve harita uzerindeki imlecleri yeni baştan yaratmak isterseniz yapmanız gereken;
mgr.clear();
mgr.addMarkers(testMarkers, 12);
mgr.refresh();
komutlarını calıştırmaktır. Bu şekilde harita uzerindeki tum imlecler silinecek, yerine yeni koyduğunuz imlecler gelecektir. MarkerManagerın ozellikle Ajax cağrılarıyla gelen dinamik imlec verilerinde kullanımı programcıya buyuk kolaylıklar sağlamaktadır.
Kaynak