Autor | Zpráva | ||
---|---|---|---|
fibi Profil * |
#1 · Zasláno: 23. 8. 2011, 17:00:35
Ahoj řeším tady zobrazení cca 1000 objektů na gmaps, naházení markerů už se mi daří, tam problém není, ale zaboha nemůžu přijít na způsob jak zajistit aby se detailní informace o objektu natáhly AJAXem až v okamžiku kdy user klikne na nějaký marker.
klíčový kus kódu : function okno(marker) { alert(marker['title']); }//okno cyklus ... var souradniceBarak = new google.maps.LatLng(baraky[i]['sirka'], baraky[i]['delka']); var marker = new google.maps.Marker({ position: souradniceBarak, map: map, title: baraky[i]['nadpis'] }); google.maps.event.addListener(marker, 'click', function() { alert(baraky[i]['nadpis']); okno(marker); }); ... konec cyklu děje se mi to že mi ta funkce okno vždy zařve jen na poslední marker generovaný v řadě, přitom ikonky na mapě jsou v naprostém pořádku na svých místech :-( Pokud mam v kodu ten alert u addListener tak mi fireburg při kliku na marker zařve že baraky[i]['nadpis'] není definován. Zkoušel jsem ten objekt definovat v ini funkci gmaps aby zustval aktivni, ale bouzel to nepomohlo, v JS se moc nevyznam mozna by na to stacila nejaka superglobalni promnena aby ten objekt (pole) baraky neumiralo, ale to nevim jak definovat. Prosim o pomoc, snad se tu najde nekdo kdo uz to resil. Priklady ktere jsem nasel byly zalozeny na tom ze jsou vsechny informace rovnou ve strance, nebo v promnenych JS ihned po nacteni, jenze ja ukazuju dost mist najednou :-( |
||
peta Profil |
#2 · Zasláno: 24. 8. 2011, 11:08:54
|
||
fibi Profil * |
#3 · Zasláno: 24. 8. 2011, 16:27:09
Díky za odkaz i když z toho nejsem moc moudrej.
Každopádně jsem nakonec něco dotvořil a hurá funguje to :-) Pokud by někdo pátral tak jsem upravil funkci okno : Kontrolovatl jsem ve firebugu že dotažení informací probíhá až po kliknutí na okno, ale že bych tomu nějak extra rozuměl to tedy ne :-) Jo objekt infowindow je definován na nejvyšší úrovni, jinak se okna otevirala pres sebe : var infowindow = new google.maps.InfoWindow({}); function okno(marker) { XHR = false ; if (window.XMLHttpRequest) { XHR = new XMLHttpRequest; } else if (windows.ActiveXObject) { XHR = new ActiveXObject("Microsoft.XMLHTTP"); }; google.maps.event.addListener(marker, 'click', function() { if (XHR) { XHR.open("GET",'http://'+window.location.hostname+'/mapa-objekty.php?id='+marker['id']); XHR.onreadystatechange = function() { if (XHR.readyState == 4 && XHR.status == 200) { infowindow.setContent(XHR.responseText); } }; XHR.send(null); }; infowindow.close(); infowindow.open(marker.get('map'), marker); }); }//okno |
||
peta Profil |
#4 · Zasláno: 25. 8. 2011, 10:30:14
Mno, chtel jsi vedet, jak pracuje okenko, tak jsem ti dal priklad, ktery to okenko zobrazuje. Je jedno, kde ho mas definovane, hlavni vec je spravne ho pouzit.
Nektere priklady google api jsou trosku nesrozumitelne a spis jednoucelove. Jak to obklopis vlastnim kodem, tak ten jejich musis kompletne prekopat :) A co maji definovane jako neglobal, musis dat global a pod... |
||
Časová prodleva: 13 let
|
0