Google Maps çoklu Marker ekleme

geri

Google maps api kullanarak bir noktayı işaretleme olayına marker diyoruz. Bir raporda harita üzerinde bayilerimizi bulundukları şehirlere göre işaretlemem gerekiyordu fakat şehir adeti arttıkça aranan şehrin bulunamaması gibi bir problem oluşuyor. Bunun sebebi de şehirlerin isimlerini bir servise gönderip geriye koordinatları almakla ilgili.. Google map api de bulunan getLatLng fonksiyonu http://maps.google.com/maps/geo?output=json&oe=utf-8&q=TRABZON servisinden şehrin bilgilerini istiyor ve json olarak bu bilgi geri dönüyor.

[js] { "name": "trabzon", "Status": { "code": 200, "request": "geocode" }, "Placemark": [ { "id": "p1", "address": "Trabzon, Türkiye", "AddressDetails": { "Accuracy" : 4, "Country" : { "AdministrativeArea" : { "AdministrativeAreaName" : "Trabzon", "Locality" : { "LocalityName" : "Trabzon" } }, "CountryName" : "Türkiye", "CountryNameCode" : "TR" } }, "ExtendedData": { "LatLonBox": { "north": 41.0336756, "south": 40.9663072, "east": 39.7973630, "west": 39.6693036 } }, "Point": { "coordinates": [ 39.7333333, 41.0000000, 0 ] } } ] } [/js]

Gelen bu bilgideki koordinatı alıp işaretlemek istediğimiz noktayı işaretliyoruz yani marker ekliyoruz. Bu istek sayısı arttığında şehirler bulunanamamaya başlıyor. Belkide bir ayarı vardır ama ben bu ayarı bulamadım ve laz işi bir çözümle olayı halettim :)

Nasıl mı ? setInterval() kullanarak. Bu javascript fonksiyonu bir kodu belirlediğimiz zaman kadar bekleyerek yeniden tekrarlatır, zamanı mili saniye cinsinden alır. Olayımız şu; Google Map servisini belirleyeceğimiz zaman aralıklarında kullanıp, aynı anda birden çok isteğin gitmesine engel olacağız. Ben 300mili saniye de şehirleri başarılı bir şekilde harita üzerine işaretletebildim, bu süreyi gözlemlerinize göre değiştirebilirsiniz.

[js] var sehirler = "TRABZON;RİZE;ORDU;GİRESUN;GÜMÜŞHANE;ERZURUM;SAMSUN;ARTVİN;ERZİNCAN;VAN;TOKAT;KARS;AĞRI;ÇORUM;BAYBURT;İSTANBUL;IĞDIR;ZONGULDAK;DÜZCE;AMASYA;ANKARA;ANTALYA;ARDAHAN;DİYARBAKIR;BATMAN;GAZİANTEP;GÜRCİSTAN;HAKKARİ;KIRŞEHİR;MUŞ;KAHRAMANMARAŞ;KARABÜK;SİİRT;SİNOP;SİVAS;UŞAK;İZMİR;MALATYA;NİĞDE,KONYA;ESKİŞEHİR;KÜTAHYA;AYDIN;MANİSA"; var sehir = sehirler.split(';'); var j = 0; var x = setInterval(function () { if (j == sehir.length) { clearInterval(x); // tüm şehirleri işaretledikten sonra intervali temizliyoruz, yani durduruyoruz. } showAddress(sehir[j]); j++; }, 300); [/js]

Bu arada setInterval() fonksiyonu şu şekillerde kullanılıyor.

[js] setInterval("alert('test')",1000); setInterval(function(){ // buraya kodlarımız geliyor. },1000); [/js]

Örneği buradan indirip, api keyi değiştirip çalıştırabilirsiniz.

2011-05-23 | diger-diller