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(""+label +" |
");
sell="";
});
data.push("
");
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 `
`;
}
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.
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);
});
}
});
});
});