var map = null; var geocoder = null; var markery = []; function load() { if (GBrowserIsCompatible()) { mapobj=document.getElementById('map') map = new GMap2(mapobj); map.enableScrollWheelZoom(); map.setMapType(G_HYBRID_MAP); geocoder = new GClientGeocoder(); //wczytaj juz wstawione markery GDownloadUrl("xml.php", function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var ii = 0; ii < markers.length; ii++) { var nazwa = markers[ii].getAttribute("nazwa"); var adres = markers[ii].getAttribute("adres"); var notatki = markers[ii].getAttribute("notatki"); var typ = markers[ii].getAttribute("typ"); var punkt = new GLatLng(parseFloat(markers[ii].getAttribute("lat")), parseFloat(markers[ii].getAttribute("lng"))); var id = markers[ii].getAttribute("id"); var marker = createMarker(punkt, nazwa, adres, typ, notatki); i=ii; markery[i]=marker; map.addOverlay(marker); updateListOnStart(nazwa,parseFloat(markers[ii].getAttribute("lat")),parseFloat(markers[ii].getAttribute("lng")),ii,typ,id); } i++; }); } GEvent.addListener(map, "click", function(overlay, latlng) { if (latlng) { var marker = new GMarker(latlng, {draggable:true}); map.addOverlay(marker); GEvent.addListener(marker, "click", function() { var html = "<div class='info' style='margin:0 auto;text-align:center;'><div class='info' style='margin:0 auto;text-align:center;'>"+ "<p id=button' style='display: inline;padding-right:20px;'><img src='/images/2.png' style='width:40px;height:40px;'/></p>"+ "</div>"+ "</div>"+ "<div class='info' style='margin:5px auto;'>"+ this.openInfoWindowHtml(html); setTimeout("window_smooth()", 1000); markery.push(marker); return marker; }); i++; } }); }
window_smooth() to jquery corners (zaokrąglanie rogów) + obsługa przycisków, żeby podstawiać odpowiednią wartość pod chosen_type.
function createMarker(punkt, nazwa, adres, typ, notatki) { var marker = new GMarker(punkt); GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); }); return marker; }
Teraz mam funkcje updatującą moją listę markerów, w której tworzę sobie listę lokacji. Chciałbym tam móc odwoływać się do
function updateList(lat,lng,z) { ... markery[z].category=chosen_type; ... }
Tu dostaję markery[z] is undefined.
Zasadniczo zaś gdy wywołuję sobie inna funkcję:
function removeMarker(index,id){ ... map.removeOverlay(markery[index]); markery[index]=null; for (var iii=index; iii<markery.length;iii++) { markery[iii]=markery[iii+1]; } ... }
to wszystko działa jak najbardziej poprawnie. Myślałem, że może chodzi o zasięg zmiennych, ale to jednak nie to. Z góry dzięki za wszelką pomoc.