var ib; var ir; //var geocoder = new google.maps.Geocoder(); var map; var chart = null; //var geocoderService = null; var mousemarker = null; var markers_elevace = []; var marker_wifibod = []; var markers_wifibody = []; var polyline = null; var elevations = null; var SAMPLES = 500; var markerIDs = []; var image; var infoWindows = []; //var propustnost_wb; var q_adresa; var gtag; var central_div; var infowi; var elevationService; var markerCluster; var directionsService; var katastralniMapaLayer; var isKatastralniMapaVisible = false; let selectedIndex = -1; // Uchovává index aktuálně vybraného výsledku let addMode = false; // Stav tlačítka "plus-marker" const markers = []; // Pole všech "markerů" (AdvancedMarkerElement + InfoWindow + data) // Předdefinované barvy a Semantic UI ikony (class) const colors = ["orange", "blue", "purple", "green", "yellow", "red", "black"]; const icons = ["user", "home", "building", "wifi", "flag", "marker", "video"]; // HLAVNÍ SKRIPT VSTUP /////////////////////////////////// // Load the Visualization API and the piechart package. //google.load("visualization", "1", {packages: ["columnchart"]}); google.charts.load('current', {packages: ['corechart']}); // Set a callback to run when the Google Visualization API is loaded. //google.charts.setOnLoadCallback(initMap); function initMap() { // Načtení středu a zoomu mapy z URL const url = new URL(window.location.href); const lat = parseFloat(url.searchParams.get("lat")) || 50.569712; // Praha const lng = parseFloat(url.searchParams.get("lng")) || 15.067168; const zoom = parseInt(url.searchParams.get("zoom")) || 11; // Inicializace Google Maps map = new google.maps.Map(document.getElementById('googlemaps'), { zoom, maxZoom: 20, center: { lat, lng }, mapTypeId: 'terrain', mapId: '26588e3b6bf52700' }); // Mapa katastr nemovitostí // Převod WGS84 (EPSG:4326) -> Web Mercator (EPSG:3857) function latLonToMercator(lat, lon) { var x = lon * 20037508.34 / 180; var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180); y = y * 20037508.34 / 180; return { x: x, y: y }; } // Definice vlastního Tile Overlay pro Google Maps API var wmsOptions = { getTileUrl: function(coord, zoom) { var proj = map.getProjection(); var zfactor = Math.pow(2, zoom); var topLeft = proj.fromPointToLatLng(new google.maps.Point(coord.x * 256 / zfactor, coord.y * 256 / zfactor)); var bottomRight = proj.fromPointToLatLng(new google.maps.Point((coord.x + 1) * 256 / zfactor, (coord.y + 1) * 256 / zfactor)); // ✅ Převod na EPSG:3857 var topLeftMercator = latLonToMercator(topLeft.lat(), topLeft.lng()); var bottomRightMercator = latLonToMercator(bottomRight.lat(), bottomRight.lng()); // ✅ Oprava pořadí souřadnic pro BBOX var bbox = `${topLeftMercator.x},${bottomRightMercator.y},${bottomRightMercator.x},${topLeftMercator.y}`; var url = `https://services.cuzk.cz/wms/wms.asp?service=WMS&version=1.3.0&request=GetMap&layers=prehledky%2CKN&styles=&format=image/png; mode=24bit&transparent=true&crs=EPSG:3857&bbox=${bbox}&width=256&height=256`; return url; }, tileSize: new google.maps.Size(256, 256), opacity: 0.6, name: "Katastrální mapa" }; var katastralniMapaLayer = new google.maps.ImageMapType(wmsOptions); //map.overlayMapTypes.insertAt(0, katastralniMapaLayer); $("#toggleKatastralniMapa").click(function () { if (isKatastralniMapaVisible) { map.overlayMapTypes.removeAt(0); $("#toggleKatastralniMapa").removeClass("active") // console.log("smazat katastr"); } else { if (typeof katastralniMapaLayer !== "undefined" && katastralniMapaLayer !== null) { map.overlayMapTypes.insertAt(0, katastralniMapaLayer); } else { console.error("katastralniMapaLayer není definován!"); } $("#toggleKatastralniMapa").addClass("active"); // console.log("vložit katastr"); } isKatastralniMapaVisible = !isKatastralniMapaVisible; }); elevationService = new google.maps.ElevationService; directionsService = new google.maps.DirectionsService; infowi = new google.maps.InfoWindow(); //chart = new google.charts.Bar(document.getElementById('chart_div')); load_wifibody(); load_elevace(); zobrazAdresu(); // Vložit Marker /* map.addListener("rightclick", (event) => { var gps =event.latLng; //alert (gps); var outgps = String(gps).replace("(","").replace(")",""); add_marker_search_item(outgps,'popis',""); //if($('#elevace').not(':checked').length) { } }); */ map.addListener("dblclick", (event) => { var gps =event.latLng; var zoom = map.getZoom(); //alert (zoom); if (zoom==18) { var outgps = String(gps).replace("(","").replace(")",""); add_marker_search_item(outgps,'popis',""); } //if($('#elevace').not(':checked').length) { } }); // Načtení uložených markerů z URL (pokud tam jsou) loadMarkersFromURL(); } // Obsluha události "popstate" pro tlačítko zpět/vpřed window.addEventListener("popstate", (event) => { if (event.state && event.state.action === "clear") { // Pokud byl stav "clear", načteme čistou mapu (bez markerů) markers.forEach(({ advancedMarker }) => { advancedMarker.map = null; }); markers.length = 0; } else { // Pokud je v historii jiný stav, načteme markery z URL loadMarkersFromURL(); } }); function getWms130TileUrl(coord, zoom, map) { var proj = map.getProjection(); var zfactor = Math.pow(2, zoom); // Získání souřadnic dlaždice var topLeft = proj.fromPointToLatLng(new google.maps.Point(coord.x * 256 / zfactor, coord.y * 256 / zfactor)); var bottomRight = proj.fromPointToLatLng(new google.maps.Point((coord.x + 1) * 256 / zfactor, (coord.y + 1) * 256 / zfactor)); // WMS 1.3.0: BBOX musí být ve formátu minLat, minLon, maxLat, maxLon var bbox = `${bottomRight.lat()},${topLeft.lng()},${topLeft.lat()},${bottomRight.lng()}`; // WMS 1.3.0 URL var url = "https://services.cuzk.cz/wms/wms.asp?" + "service=WMS&version=1.3.0&request=GetMap" + "&layers=KN&styles=&format=image/png&transparent=true" + "&crs=EPSG:4326&bbox=" + bbox + "&width=256&height=256"; return url; } function addMarkerWifibod(lat, lng, name, id, typ, propustnost_wb, parent_id) { var icon_color="blue"; const icon = document.createElement("div"); icon.innerHTML = ''; const marker = new google.maps.marker.AdvancedMarkerElement({ map, position: { lat, lng }, content: icon, title: name, zIndex: 1000, gmpClickable: true, }); // Nastavení vlastního ID na marker marker.Id = id; marker.Typ = typ; marker.Parent_id = parent_id; marker.propustnost = propustnost_wb; markers_wifibody.push(marker); // Uložení markeru do globálního pole return marker; // Vracíme marker pro možnost přidání event listeneru } function load_wifibody() { $.ajax({ url : "gmap.php?zdroj=wifibody_itb", type: "GET", success: function(data) { var jsonData = JSON.parse(data); jsonData.forEach(function(wifibod) { var lat = parseFloat(wifibod.Lat); var lng = parseFloat(wifibod.Lng); var name = wifibod.Name; var id = wifibod.idw; var parent_id = wifibod.parent_id; var propustnost_wb = wifibod.propustnost; // Použití univerzální funkce pro přidání markeru var marker = addMarkerWifibod(lat, lng, name, id, "wifibod", propustnost_wb, parent_id); // Zavoláme funkci pro přidání markeru }); // Inicializace clusteru // Add a marker clusterer to manage the markers. markerCluster = new markerClusterer.MarkerClusterer({ markers: markers_wifibody, map: map // Zde použij svoji globální proměnnou mapy }); } }); } function zobrazAdresu() { // Získání aktuální URL var urlParams = new URLSearchParams(window.location.search); // Kontrola přítomnosti parametru q_adresa if (urlParams.has('q_adresa')) { var hodnota = urlParams.get('q_adresa'); // Pokud parametr má hodnotu, zobrazí se div.ukaz_adresu if (hodnota) { $('.hledej_div').hide(); $('.hledej_div.adresu').show(); $('.tools .big.home .home').addClass("orange"); $('#search_address').val(hodnota); geokoduj(hodnota); } } } function searchit() { var addressField = $('#search_address').val(); geokoduj(addressField); }; async function geokoduj(query) { try { const url = new URL(`https://api.mapy.cz/v1/geocode`); url.searchParams.set('lang', 'cs'); url.searchParams.set('apikey', 'FFw6DZ1kBTcpXZTmv7X_xYBIxHoGkWbnOa8CjwHsCfo'); url.searchParams.set('query', query); url.searchParams.set('limit', '10'); [ 'regional.municipality', 'regional.municipality_part', 'regional.street', 'regional.address', 'coordinate', ].forEach(type => url.searchParams.append('type', type)); const response = await fetch(url.toString(), { mode: 'cors', }); const json = await response.json(); odpoved(json); } catch (ex) { console.log(ex); } } function odpoved(geocoder) { /* Odpověď */ if (geocoder.items && geocoder.items.length > 0) { //console.log(vysledky); var data = []; var pocet = 0; var gps; var ulicecp; var label; var obec; var sell= "selected"; data.push('
'); data.push("
"); data.push(""); //alert(zdrojw.value); geocoder.items.forEach(item => { //var item = vysledky.shift(); //var outgps = String(item.coords).split(",").reverse().join(",").replace("(","").replace(")",""); //alert(gps); //const castiAdresy = item.label.split(',').map((cast) => cast.trim()); gps = item.position.lat+","+item.position.lon; ulicecp = item.name; obec = item.location; label = item.name+", "+item.location; //console.log(ulicecp); //console.log(obec); //console.log(outgps); data.push(""); sell=""; }); data.push("
"+label +"
"); data.push("
"); if (geocoder.items.length==1) { add_marker_search_item(gps,label,1, ulicecp, obec); gtag('event', 'mapa_searched_show_adresa_marker'); } //alert(data.join("\n")); $( "#vysledek" ).empty(); $( "#vysledek" ).append( data.join("\n") ); $(".vysledek_tbl tr").click(function() { $(".vysledek_tbl tr").removeClass("selected"); $(this).addClass("selected"); }).click(function() { pick_row(); }); } else { alert("Omlouvám se, nenašel jsem"); } } function pick_row() { var hodnota = $(".vysledek_tbl").find("tr.selected").attr("hodnota"); var ulicecp = $(".vysledek_tbl").find("tr.selected").attr("ulicecp"); var obec = $(".vysledek_tbl").find("tr.selected").attr("obec"); var h = hodnota.split(";"); add_marker_search_item(h[0], h[1],1, ulicecp, obec); // schovej vysledek vyhledavani //$('.vysledek_tbl').hide(); } function add_zajemce(gps, ulicecp, obec) { $( "#zajem" ).show(); $("#jmeno").focus(); $("#gps").val(gps); $("#ulicecp").val(ulicecp); $("#obec").val(obec); $("#adresa").val('Adresa: zaznamená GPS'); } function add_marker_search_item(gps, popis, zoom, ulicecp, obec) { reset_infowindows(); var infoWindow = new google.maps.InfoWindow; var loc = gps.split(",") ; var glat = parseFloat(loc[0]); var glng = parseFloat(loc[1]); //console.log(gps); const icon = document.createElement("div"); icon.innerHTML = ''; addOrUpdateURLParam("q_adresa", popis); //map.setCenter(); if (zoom=="") {popis = "Můj dům"} var marker_search = new google.maps.marker.AdvancedMarkerElement({ map, content: icon, zIndex: 5000, position: {lat: glat, lng: glng}, gmpClickable: true, title: popis }); if (zoom==1) { map.setCenter({lat: glat, lng: glng}); map.setZoom(14); } if (zoom=="") {popis = ""+popis+""} function onclickhome() { //infoWindow.close(); popis = popis.replace(/,/g, "
"); //infoWindow.setContent(popis+"

GPS: "+gps+"
vložit zájemce"); infoWindow.setContent("Můj dům
"+popis+"


zájemvysílač"); infoWindow.setPosition(marker_search.latLng); infoWindow.setOptions({maxWidth: 270}); infoWindow.open(map,marker_search); infoWindows.push(infoWindow); } marker_search.addListener("click", () => { closeAllInfoWindows(); onclickhome(); }); onclickhome(); //marker_search.addListener(map,'click', onclickhome); //marker_search.addListener(map,'rightclick', onclickhome); } /* $(document).on('click', '#internet.komunikace a', function(event) {event.preventDefault();}) $(document).on('click', '#televize.komunikace a', function(event) {event.preventDefault();}) $(document).on('click', '#volani.komunikace a', function(event) {event.preventDefault();}) */ $('#search_address').on('keydown', function(event) { if (event.key === 'Enter' || event.keyCode === 13) { searchit(); }}); $('#search_address').on("keydown", function(event) { // alert(event.keyCode); var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13') { $("#odesli").click(); if ($(".vysledek_tbl").is(":visible")) { pick_row() } } if (event.keyCode == '27' && $("#search_address").is(":focus")) {$('#vysledek').empty();} // ESC vyhledávání if (event.keyCode == '27' && $(".komunikace").is(":visible")) {$('.komunikace').hide();} // ESC vyhledávání if (event.keyCode == '27' && $(".vitejte").is(":visible")) {$('.vitejte').hide();} // ESC vyhledávání //if (event.keyCode == '27' && $(".ui.icon.orange.tower")[0] && !$(".ui.icon.orange.resize.horizontal")[0]) {reset_vysilace()} // ESC sektory if (event.keyCode == '27' && $(".ui.icon.orange.resize.horizontal")[0]) {reset_elevation()} // ESC sektory if (keycode == 38) { // up var rows = $(".selected"); $(".vysledek_tbl tr").removeClass("selected"); if (rows.prev().length == 0) { rows.siblings().last().addClass("selected"); } else { rows.prev().addClass("selected"); } } if (keycode == 40) { // down var rows = $(".selected"); $(".vysledek_tbl tr").removeClass("selected"); if (rows.next().length == 0) { rows.siblings().first().addClass("selected"); } else { rows.next().addClass("selected"); } } // Když je stisknut ESC (klávesa kódu 27) if (keycode == 27 && $("#search_address").is(":focus")) { // Smaže výsledky vyhledávání $("#vysledek").empty(); // Ujistěte se, že máte správný element pro výsledky } }); // VZDÁLENOSTI, ELEVACE ////////////////////////////////////// function load_elevace() { reset_elevation(); //map.setMapTypeId(google.maps.MapTypeId.TERRAIN); // Načtěte GPS souřadnice z URL const urlParams = new URLSearchParams(window.location.search); if (urlParams.has('gps_A') && urlParams.has('gps_B')) { const gpsA = urlParams.get('gps_A').split(',').map(Number); const gpsB = urlParams.get('gps_B').split(',').map(Number); $(".ui.icon.resize.horizontal").addClass('orange'); addMarker({ lat: parseFloat(gpsA[0]), lng: parseFloat(gpsA[1]) }, true, 'A'); addMarker({ lat: gpsB[0], lng: gpsB[1] }, true, 'B'); if (markers_elevace.length === 2) { updateURLParams(); //updateAzimuth(); } } //map.addListener('click', function(event) { google.maps.event.addListener(map, "click", function(event) { if (markers_elevace.length >= 2) { reset_elevation(); } const label = markers_elevace.length === 0 ? 'A' : 'B'; //console.log(event); addMarker(event.latLng, true, label); if (markers_elevace.length === 2) { updateURLParams(); //updateAzimuth(); } }); updateElevation(); } // Clear all overlays, reset the array of points, and hide the chart function reset_elevation() { if (polyline) { polyline.setMap(null); } for (var i in markers_elevace) { markers_elevace[i].setMap(null); } markers_elevace = []; document.getElementById('chart_div').style.display = 'none'; } function updateElevation() { if (markers_elevace.length > 1) { var travelMode = document.getElementById("mode").value; if (travelMode != 'direct') { calcRoute(travelMode); } else { var latlngs = []; for (var i in markers_elevace) { latlngs.push(markers_elevace[i].position) } elevationService.getElevationAlongPath({ path: latlngs, samples: SAMPLES }, plotElevation); } } } // Takes an array of ElevationResult objects, draws the path on the map // and plots the elevation profile on a GViz ColumnChart function plotElevation(results) { elevations = results; var path = []; for (var i = 0; i < results.length; i++) { path.push(elevations[i].location); } if (polyline) { polyline.setMap(null); } var lineSymbol = { path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW }; polyline = new google.maps.Polyline({ path: path, zIndex: 300, strokeColor: "#000000", icons: [{ icon: lineSymbol, offset: '100%' }], map: map}); var data = new google.visualization.DataTable(); //var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); data.addColumn('string', 'Sample'); data.addColumn('number', 'elevace'); for (var i = 0; i < results.length; i++) { data.addRow(['', elevations[i].elevation], 'fill-color: #800080; stroke-width: 0'); } //alert(screen.width-150); var vzdalenost = google.maps.geometry.spherical.computeDistanceBetween(markers_elevace[0].position, markers_elevace[1].position); var azimut = google.maps.geometry.spherical.computeHeading(markers_elevace[0].position, markers_elevace[1].position); document.getElementById('chart_div').style.display = 'block'; chart = new google.visualization.AreaChart(document.getElementById('chart_div')); chart.draw(data, { width: window.innerWidth, height: 190, colors: ['grey'], areaOpacity: 0.3, titleFontSize: 14, legend: 'none', titleY: 'elevace (m)', title: Math.round(vzdalenost)+' m'+ ', azimut '+Math.round(azimut)+'°', animation:{ duration: 1000, easing: 'out', startup: true, }, }); google.visualization.events.addListener(chart, 'onmouseover', function(e) { if (mousemarker == null) { const label_text = document.createElement("div"); label_text.className = "label-class elevace" ; label_text.innerHTML = ''; mousemarker = new google.maps.marker.AdvancedMarkerElement({ position: elevations[e.row].location, map: map, content: label_text }); } else { //infowi.open(map, mousemarker); mousemarker.position = new google.maps.LatLng(elevations[e.row].location) var el = Math.round(elevations[e.row].elevation); var vzd = google.maps.geometry.spherical.computeDistanceBetween(markers_elevace[0].position, mousemarker.position); const elDIV = mousemarker.content; if (vzd) { elDIV.innerHTML = Math.round(vzd)+" m, "+el+" n.m."; } } }); } // Remove the green rollover marker when the mouse leaves the chart function clearMouseMarker() { if (mousemarker != null) { mousemarker.setMap(null); mousemarker = null; } } // Add a marker and trigger recalculation of the path and elevation function addMarker(lokace, doQuery, label) { if ($(".ui.icon.orange.resize.horizontal")[0]) { //console.log(lokace); const label_text = document.createElement("div"); label_text.className = "label-class "+label+" " ; label_text.textContent = label; var marker_elevace = new google.maps.marker.AdvancedMarkerElement({ position: lokace, map: map, content: label_text, zIndex: 1000, gmpDraggable: true }) google.maps.event.addListener(marker_elevace, 'dragend', function(e) { updateElevation(); updateAzimuth();updateURLParams(); }); markers_elevace.push(marker_elevace); if (doQuery) { updateElevation(); } } } function calculateAzimuth(start, end) { const lat1 = start.lat * Math.PI / 180.0; const lon1 = start.lng * Math.PI / 180.0; const lat2 = end.lat * Math.PI / 180.0; const lon2 = end.lng * Math.PI / 180.0; const dLon = lon2 - lon1; const y = Math.sin(dLon) * Math.cos(lat2); const x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); const brng = Math.atan2(y, x) * 180.0 / Math.PI; return (brng + 360.0) % 360.0; } function updateAzimuth() { const positionA = markers_elevace[0].position; const positionB = markers_elevace[1].position; const azimuth = calculateAzimuth(positionA, positionB); //console.log(azimuth); const markerB = markers_elevace[1]; const labelDivB = markerB.content; labelDivB.innerHTML = `B ${azimuth.toFixed(0)}°`; } function updateURLParams() { //console.log(markers_elevace); const url = new URL(window.location); const gpsA = markers_elevace[0].position; const gpsB = markers_elevace[1].position; // Zkrácení na max. 10 znaků const latA = parseFloat(gpsA.lat.toFixed(7)); // 7 desetinných míst pro max. 10 znaků const lngA = parseFloat(gpsA.lng.toFixed(7)); const latB = parseFloat(gpsB.lat.toFixed(7)); const lngB = parseFloat(gpsB.lng.toFixed(7)); url.searchParams.set('gps_A', `${latA},${lngA}`); url.searchParams.set('gps_B', `${latB},${lngB}`); window.history.pushState({}, '', url); } function removeSpecificURLParams(paramsToRemove) { const url = new URL(window.location); // Načteme aktuální URL paramsToRemove.forEach(param => { url.searchParams.delete(param); // Odstraníme daný parametr }); // Aktualizujeme URL bez reloadu stránky window.history.pushState({}, '', url); } function addOrUpdateURLParam(paramName, paramValue) { const url = new URL(window.location); // Načteme aktuální URL url.searchParams.set(paramName, paramValue); // Přidáme nebo aktualizujeme parametr window.history.pushState({}, '', url); // Aktualizujeme URL bez reloadu stránky } function calcRoute(travelMode) { var origin = markers_elevace[0].position; var destination = markers_elevace[marker_elevace.length - 1].position; var waypoints = []; for (var i = 1; i < markers_elevace.length - 1; i++) { waypoints.push({ location: markers_elevace[i].position, stopover: true }); } var request = { origin: origin, destination: destination, waypoints: waypoints }; switch (travelMode) { case "bicycling": request.travelMode = google.maps.DirectionsTravelMode.BICYCLING; break; case "driving": request.travelMode = google.maps.DirectionsTravelMode.DRIVING; break; case "walking": request.travelMode = google.maps.DirectionsTravelMode.WALKING; break; } directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { elevationService.getElevationAlongPath({ path: response.routes[0].overview_path, samples: SAMPLES }, plotElevation); } else if (status == google.maps.DirectionsStatus.ZERO_RESULTS) { alert("Could not find a route between these points"); } else { alert("Directions request failed"); } }); } function reset_marker_wifibody() { for (var i in markers_wifibody) { markers_wifibody[i].setMap(null); } markers_wifibody = []; markerCluster.clearMarkers(); // Odstraní všechny markery ze shluku markerCluster = null; // Uvolní paměť } function closeAllInfoWindows() { infoWindows.forEach((infoWindow) => { infoWindow.close(); }); infoWindows = []; } function reset_infowindows() { for (var i in infoWindows) { infoWindows[i].close(); } infoWindows = []; } function rad(x) {return x*Math.PI/180;} function find_closest_marker( gps ) { var loc = gps.split(",") ; var lat = parseFloat(loc[0]); var lng = parseFloat(loc[1]); //var lat = event.latLng.lat(); //var lng = event.latLng.lng(); var R = 6371; // radius of earth in km var distances = []; var closest = -1; //console.log("pocet"+markers_wifibody.length); //console.log("pocet"+markers_wifibody.length); //console.log(markers_wifibody[1].position.lat); for( i=0;i { createAdvancedMarker({ lat, lng }, content, color, icon); }); } catch (e) { console.error("Invalid markers data in URL:", e); } } } function createInfoWindowContent(content, color, icon, lat, lng) { return `
${content}
`; } function createMarkerDOM(color, icon) { const div = document.createElement("div"); div.style.display = "flex"; div.style.alignItems = "center"; div.style.justifyContent = "center"; div.style.width = "30px"; div.style.height = "30px"; div.style.borderRadius = "50%"; div.style.backgroundColor = color; div.style.cursor = "pointer"; div.style.border = "1px solid black"; const iTag = document.createElement("i"); iTag.classList.add(icon, "icon"); iTag.classList.add("marker_ikonka"); // Přidání nové třídy iTag.style.color = "white"; iTag.style.fontSize = "16px"; div.appendChild(iTag); return div; } function createAdvancedMarker(position, content, color, icon) { const mlat = position.lat; // Získejte šířku const mlng = position.lng; // Získejte délku const infoWindow = new google.maps.InfoWindow({ content: createInfoWindowContent(content, color, icon, mlat, mlng), }); const advancedMarker = new google.maps.marker.AdvancedMarkerElement({ map, position, title: content, content: createMarkerDOM(color, icon), }); // Přiřazení událostí k InfoWindow google.maps.event.addListener(infoWindow, 'domready', () => { const infoWindowDiv = document.querySelector('#content-view').parentElement; // Delegace událostí na tlačítka infoWindowDiv.addEventListener('click', (event) => { const action = event.target.dataset.action; if (action === 'edit') { editContent(infoWindow, advancedMarker); } else if (action === 'delete') { deleteMarker(advancedMarker, infoWindow); } }); }); advancedMarker.addListener("click", () => { closeAllInfoWindows(); infoWindow.open({ map, anchor: advancedMarker }); // Přidání do pole otevřených InfoWindow infoWindows.push(infoWindow); }); markers.push({ advancedMarker, infoWindow }); } $( document ).ready(function(event) { //load_wifibody(); var zdrojw = document.getElementById('zdrojw'); if ($(window).width() > 768) { $("#search_address").focus(); } $(".show_vitejte").click(function() { $(".vitejte").show(); }) $(".close").click(function() { $(".komunikace").hide(); }) $(".close_vitejte").click(function() { $(".vitejte").hide(); }) $(document).on('click', '.add_zajemce', function(e) { var gps = $(this).attr("gps"); var ulicecp = $(this).attr("zajem_ulicecp"); var obec = $(this).attr("zajem_obec"); add_zajemce(gps, ulicecp, obec); }); $(document).on('click', '.find_wifi', function(e) { var gps = $(this).attr("gps"); find_closest_marker(gps); }); $(".ui.icon.tower").click(function() { if ($(".ui.icon.orange.tower")[0]) { reset_marker_wifibody(); $(".ui.icon.tower").removeClass('orange'); } else { load_wifibody(); $(".ui.icon.tower").addClass('orange'); } }); $(".icons.home.big").click(function() { if ($(".icons.home .orange.home")[0]) { $(".adresu").hide(); $(".home.orange.icon").removeClass('orange'); } else { $(".adresu").show(); $(".adresu input").focus(); $(".klienta").hide(); $(".home.icon").addClass('orange'); $(".user.orange.icon").removeClass('orange'); } }); $(".ui.icon.info").click(function() { if ($(".ui.icon.orange.info")[0]) { $(".vitejte").hide(); $(this).removeClass('orange'); } else { $(".vitejte").show(); $(this).addClass('orange'); } }); $(".ui.icon.resize.horizontal").click(function() { if ($(".ui.icon.orange.resize.horizontal")[0]) { $(this).removeClass('orange'); reset_elevation(); removeSpecificURLParams(['gps_A', 'gps_B']); } else { $(this).addClass('orange'); } }); /* $(".big .plus_marker").click(function() { if ($(".big .orange.plus_marker")[0]) { $(this).removeClass('orange'); } else { $(this).addClass('orange'); } }); */ $(".ui.icon.street.view").click(function() { $(this).addClass('orange'); // Try HTML5 geolocation. if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( (position) => { const pos = { lat: position.coords.latitude, lng: position.coords.longitude, }; map.setCenter(pos); map.setZoom(16); var marker_moje_pozice = new google.maps.marker.AdvancedMarkerElement({ position: pos, map: map, draggable: false }); } ); } }); $(".buttons .internet").click(function() { $("#volani").hide();$("#televize").hide();$("#zajem").hide(); $("#zavolat_buttom").hide(); $("#internet").toggle(); gtag('event', 'mapa_divopen_internet'); }) $(".buttons .televize").click(function() { $("#volani").hide();$("#internet").hide(); $("#zajem").hide();$("#zavolat_buttom").hide();$("#televize").toggle();gtag('event', 'mapa_divopen_televize');}) $(".buttons .volani").click(function() { $("#internet").hide();$("#televize").hide();$("#zajem").hide();$("#zavolat_buttom").hide(); $("#volani").toggle();gtag('event', 'mapa_divopen_mobil');}) $(".buttons .zavolat").click(function() { $("#internet").hide();$("#televize").hide();$("#zajem").hide(); $("#zavolat_buttom").toggle();gtag('event', 'mapa_divopen_zavolat');}) $(".zajem, #mam_zajem").click(function() { $("#internet").hide();$("#televize").hide();$("#volani").hide();$("#zavolat_buttom").hide(); ;$("#zajem").toggle(); $("#jmeno").focus();gtag('event', 'mapa_divopen_zajem'); }) $('#toggle_div').click(function(){ if ($("#paticka").is(":visible")) { $('#paticka').hide('1000'); $('#toggle_div').html(''); } else { $('#paticka').show('1000'); $('#toggle_div').html(''); } }); $('#toggle_div_tools').click(function(){ if ($(".lboxik").is(":visible")) { $('.lboxik').hide('1000'); $('#toggle_div_tools').html(''); } else { $('.lboxik').show('1000'); $('#toggle_div_tools').html(''); } }); $(document).on('click', '#toggle_div_vysledek', function() { if ($(".div_vysledek_tbl").is(":visible")) { $('.div_vysledek_tbl').hide('1000'); $('#toggle_div_vysledek').html(' '); } else { $('.div_vysledek_tbl').show('1000'); $('#toggle_div_vysledek').html(''); } }); // ZPRACOVÁNÍ FORMULÁŘE $(document).ready(function () { $('.ui.dropdown').dropdown(); // Zamezení odeslání formuláře stiskem klávesy Enter $('#formular').on('keydown', function (event) { if (event.key === "Enter") { event.preventDefault(); return false; } }); // Odeslání formuláře s validací $('.submitb').on('click', function (event) { event.preventDefault(); // Zabrání přímému odeslání formuláře // Vymazání starých chyb $('#form-errors').hide().empty(); // Načtení hodnot var jmeno = $('[name=jmeno]').val().trim(); var prijmeni = $('[name=prijmeni]').val().trim(); var telefon = $('[name=telefon]').val().trim(); var email = $('[name=email]').val().trim(); var gdpr = $('[name=gdpr]').is(':checked'); // Zjistí, zda je checkbox zaškrtnut // Kontrola chyb var errors = []; if (!jmeno) errors.push("Jméno je povinné."); if (!prijmeni) errors.push("Příjmení je povinné."); if (!telefon || !/^\d{9}$/.test(telefon)) errors.push("Telefon musí obsahovat 9 číslic."); if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) errors.push("E-mail má neplatný formát."); if (!gdpr) errors.push("Je nutné souhlasit se zpracováním osobních údajů (GDPR)."); // Zobrazení chyb nebo odeslání if (errors.length > 0) { $('#form-errors').html(errors.join('
')).show(); // Zobrazí chyby } else { // Změna textu tlačítka $('.submitb').text("Odesílám, strpení").prop("disabled", true); // Odeslání formuláře var ulicecp = $('[name=ulicecp]').val(); var obec = $('[name=obec]').val(); var gps = $('[name=gps]').val(); var zprava = $('[name=zprava]').val(); var sluzby = ""; $('input[name="sluzby[]"]:checked').each(function () { sluzby = sluzby + " " + $(this).val(); }); $.post('napsat.php', { jmeno: jmeno, prijmeni: prijmeni, telefon: telefon, email: email, ulicecp: ulicecp, obec: obec, gps: gps, zprava: zprava, sluzby: sluzby, gdpr: gdpr }) .done(function (data) { // Vymazání formuláře a vložení "Děkujeme" gtag('event','mapa_form_sent'); if (data==1) { $('#zajem').html(`

Děkujeme

Vaše zpráva byla úspěšně odeslána. Budeme Vás brzy kontaktovat.

ITBUSINESS, s.r.o.

Děkujeme
Tip Pospíchám:
Pokud pospícháte a přejete si naplánovat expres bezplatný průzkum, příp. instalaci, stačí zavolat: 315 810 620, 608 964 464
`); } else { $('#form-errors').html("Došlo k chybě při odesílání formuláře. Zkuste to prosím znovu.").show(); $('.submitb').text("Odeslat").prop("disabled", false); } }) .fail(function () { // V případě chyby $('#form-errors').html("Došlo k chybě při odesílání formuláře. Zkuste to prosím znovu.").show(); $('.submitb').text("Odeslat").prop("disabled", false); }); } }); }); });