Zdravím,
řeším problém, jak pro určitý marker zobrazit data. V dokumentaci google píše o tzv. "closures". Použil jsem tedy něco podobného, jen pro svůj účel, ale stejně se mi nedaří dosáhnout očekávaného výsledku.
Data beru z db, pomocí php je vypíšu v JSON formátu do hidden inputu. O zbytek se pak stará následující javascript:
marker_icon = "../img/flag.png";
map = null;
map_center_pos = new google.maps.LatLng (63.54855223203644, 96.85546875);
markers = new Array();
info_bubble = null;
data = null; // data z databaze (prenos pomoci JSON formatu)
function str2latlng (text)
{
var latlng = text.split (",");
return new google.maps.LatLng (latlng[0], latlng[1]);
}
function showInfo (marker, data_index)
{
if ( info_bubble != null ){
info_bubble.close();
info_bubble = null;
}
if ( data_index < 0 || data_index > data.length ){
alert ("data_index: out of range.");
return;
}
info_bubble_content = "<h3>"+data[data_index]["name"]+"</h3>";
info_bubble_content += "Ulice: "+data[data_index]["street"]+"<br />";
info_bubble_content += "Město: "+data[data_index]["city"]+"<br />";
info_bubble_content += "Tel: "+data[data_index]["phone"]+"<br />";
info_bubble_content += "Fax: "+data[data_index]["fax"]+"<br />";
info_bubble_content += "Mob: "+data[data_index]["cell"]+"<br />";
info_bubble_content += "Email: <a href='mailto:"+data[data_index]["email"]+"'>"+data[data_index]["email"]+"</a> <br />";
info_bubble_content += "WWW: <a href='http://"+data[data_index]["website"]+"' target='_blank'>"+data[data_index]["website"]+"</a> <br />";
info_bubble = new google.maps.InfoWindow ();
info_bubble.setContent (info_bubble_content);
google.maps.event.addListener (marker, "click", function () { info_bubble.open (map, marker) });
}
function initialize_map ()
{
var mapOptions = {
zoom:3,
center: map_center_pos,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
data = eval ('('+document.getElementById("prodejci_pos").value+')');
map = new google.maps.Map (document.getElementById ("map_canvas"), mapOptions);
for (i=0;i<data.length;i++){
if (data[i]["latlng"] == null)
continue;
markers[i] = (new google.maps.Marker ( { position: str2latlng (data[i]["latlng"]), map: map, title: data[i]["name"], icon: marker_icon } ) );
showInfo (markers[i], i);
}
}
google.maps.event.addDomListener (window, "load", initialize_map);
Problém je, že se zobrazí pouze poslední obsah z data[] (logické, protože se používá pouze jedna proměnná pro uchování infowindow). Jde mi tedy o identifikaci jednotlivých markerů a jejich provázání s obsahem v data[]. Nějaké nápady? Zkoušel jsem hledat kvantum informací na jiných forech, ale nic mě nenasměrovalo správným směrem.
btw, Aurora super, ale ještě si zvykám. :)