Autor Zpráva
fibi
Profil *
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
http://webapp.fpf.slu.cz/gmapa/
fibi
Profil *
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
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...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0