// google maps skript pro načtení pointů z XML zdroje //google.load("maps", "2.x"); $(document).ready(initializeGMaps); // pole všech značek var global_markers = new Array(); // pole ikonek var icons = new Array(); // mapa var map; // hranice pro zobrazeni mapy var bounds; // vytvoříme typy značek icons["type1"] = "/img/map/flatg.png"; icons["type2"] = "/img/map/ico-devel-disabled.png"; // Inicializace mapy function initializeGMaps() { // určení DIVu, který obsahuje mapu map = new GMap2(document.getElementById("map")); map.enableContinuousZoom(); //map.enableScrollWheelZoom(); // Overwrite the getMinimumResolution() and getMaximumResolution() methods var mt = map.getMapTypes(); for (var i= 0; i < mt.length; i++) { mt[i].getMinimumResolution = function() { return 7; } } // přidání ovládacích prvků na mapu (zoomovadlo, přepínač a náhled) map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); //map.addControl(new GOverviewMapControl()); // vytvorime prazdny objekt pro definici hranic zobrazeni bounds = new GLatLngBounds(); // určení výchozí polohy a měřítka mapy basePoint = new GLatLng(48.60479636026121, 19.7039794921875); map.setCenter(basePoint, 7); downloadMap("/utils/xmlexport"); // listener pro nahrani nemovitosti dle aktualniho vyrezu mapy GEvent.addListener(map, "dragend", function() { synchronizeMap(); if ( typeof updateElements == "function") { updateElements(); } }); GEvent.addListener(map, "zoomend", function() { synchronizeMap(); if ( typeof updateElements == "function") { updateElements(); } }); } function synchronizeMap() { var span = map.getBounds().toSpan(); var center = map.getBounds().getCenter(); var zoom = map.getZoom(); if (zoom >= 11) { var url = "/utils/synchro/?lat=" + center.lat() + "&lng=" + center.lng() + "&accuracy=" + span.lat() ; addOverlays(url); } } function downloadMap(url) { // Načtení a zpracování dat z XML souboru GDownloadUrl(url, function(data, responseCode) { var xml = GXml.parse(data); var s; var points; var innerHtml = "Zobrazilo sa iba 200 najnovších výsledkov. Pre získanie ďalších upresnite kritériá v rozšírenom vyhľadávaní

"; if (navigator.appName=="Microsoft Internet Explorer") { points = xml.getElementsByTagName("point"); } else { points = xml.documentElement.getElementsByTagName("point"); } // pokud neni zadnej bod v exportu, tak nastavime hranice na CR if (points.length == 0) { basePoint1 = new GLatLng(49.5, 23.0); basePoint2 = new GLatLng(48.5, 15.5); bounds.extend(basePoint1); bounds.extend(basePoint2); } else if (points.length >= 200) { var dialog = $("#dialog"); var message = $("#dialog-message"); dialog.css("display", "block"); message.html(innerHtml); } // for přes všechny body v XML souboru for (var i = 0; i < points.length; i++) { // souřadnice bodu var point = new GLatLng(parseFloat(points[i].getAttribute("lng")), parseFloat(points[i].getAttribute("lat"))); // pridame bod do hranic zobrazeni bounds.extend(point); // vytvoreni obsahu s = createContent(points[i]); // vytvoření značky var marker = createMarker(point, s, points[i].getAttribute("label"), points[i].getAttribute("icon")); // přidání značky do globálního pole marker_id = points[i].getAttribute("id"); global_markers [marker_id] = marker; // přidání značky na mapu map.addOverlay(marker); } map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); if ( typeof updateElements == "function") { updateElements(); } }); } function addOverlays(url) { // Načtení a zpracování dat z XML souboru GDownloadUrl(url, function(data, responseCode) { var xml = GXml.parse(data); var s; var points = xml.documentElement.getElementsByTagName("point"); // for přes všechny body v XML souboru for (var i = 0; i < points.length; i++) { // pokud je jiz marker v poli, tak jej neni potreba pridavat if (global_markers[points[i].getAttribute("id")]) { continue; } // souřadnice bodu var point = new GLatLng(parseFloat(points[i].getAttribute("lng")), parseFloat(points[i].getAttribute("lat"))); // vytvoreni obsahu s = createContent(points[i]); // vytvoření značky var marker = createMarker(point, s, points[i].getAttribute("label"), points[i].getAttribute("icon")); // přidání značky do globálního pole marker_id = points[i].getAttribute("id"); global_markers [marker_id] = marker; // přidání značky na mapu map.addOverlay(marker); } }); } function infoClick(i) { GEvent.trigger(global_markers[i], "click"); } function createContent(point) { // html obsah informačního okna, které se zobrazi s = ""; // test if image exists if (point.getAttribute("video")) { s = s + ""; } else if (point.getAttribute("img")) { s = s + ""; } s = s + "
" + point.getAttribute("video") + ""; // test if url exists if (point.getAttribute("url")) { s = s + "" + point.getAttribute("name") + "
"; } else { s = s + "" + point.getAttribute("name") + "
"; } s = s + point.getAttribute("label").replace(/2<\/sup>,/, '2,
') + "
"; if (point.getAttribute("url")) { s = s + "Detail »

"; } s = s + "
"; // nahrada za prazdne pole reklamy s = s + "
 
"; return s; } // Vytvoří značku, parametry: souřadnice značky, html kód okna, popiska značky, ikona značky function createMarker(point, content, cap, icon_type) { // objekt obsahující vlastnosti značky var opt = new Object(); // popiska značky opt.title = cap; // vytvoření ikony + nastavení var icon = new GIcon(G_DEFAULT_ICON, icons[icon_type]); var size = new GSize(24, 24); icon.iconSize = size; // nepodařilo se mi zjistit, jak vypnout stín, tak mu (zatím) posílám prázdný string icon.shadow = ""; // nastavení ikony na značku opt.icon = icon; var marker = new GMarker(point, opt); // obsloužení kliknutí na značku GEvent.addListener(marker, "click", function() { map.panTo(point, 12); // presune se na znacku marker.openInfoWindowHtml(content); }); return marker; }