var map; var markersManager = []; var marker = []; var card = []; var hint = []; function showDetail(bikecounter, coordinates, desc, hasFtpCameras) { var url = "/BikeCounter/bc/modal/bc/" + bikecounter + "/desc/" + desc; openModalWindow("modalBc", 1, url, callback, [ bikecounter, coordinates, desc, hasFtpCameras, ]); } function callback(bikecounter, coordinates, desc, hasFtpCameras) { if (hasFtpCameras) ftpCameraActualImageFunctionInit(); initMap(bikecounter, coordinates, desc); } function initMap(sensor, listCoordinates, desc) { var counter = 0; map = new Camea.Maps.Api("bikecounter-map"); map.init().addControls().addLayerControl(); markersManager = map.Factory.MarkersManager(); var coordsList = new Camea.Maps.CoordsList(); var coordinates = listCoordinates.split("&"); for (var pos in coordinates) { if (coordinates.hasOwnProperty(pos) === false) continue; sensor = sensor + counter; var positions = coordinates[pos].split(";"); var lat = positions[0]; var lng = positions[1]; if (lat !== null && lng !== null) { var coords = new Camea.Maps.Coords(lat, lng); coordsList.add(coords); createMarker(sensor, coords, "green"); card[sensor].setHeader(sensor); card[sensor].setBody(desc); hint[sensor].setContent(desc); hint[sensor].setMarker(marker[sensor]); } else alert("Senzor " + sensor + " nemá zadané measured gps souřadnice."); counter++; } map.setCenter(coordsList); markersManager.showMarkers(); } function createMarker(id, coords, color) { card[id] = map.Factory.Card(id); card[id].setCoords(coords); hint[id] = map.Factory.Hint(id); hint[id].setWidth(60); hint[id].setHeight(12); hint[id].hide(); marker[id] = map.Factory.Marker(id); marker[id].setCoords(coords); var icon = createIcon(color); marker[id].setIcon(icon); marker[id].onClick(function () { card[id].show(); }); markersManager.addMarker(marker[id]); } function createIcon(color) { var src = createPNG(color); var icon = new Camea.Maps.Icon(); icon.setWidth(30); icon.setHeight(30); icon.setMinWidth(2); icon.setMinHeight(2); icon.setMinZoom(3); icon.setMaxZoom(21); icon.setLeftAnchor(0.5); icon.setTopAnchor(0.5); icon.setSrc(src); return icon; } function createPNG(color) { var canvas = document.getElementById("canvas"); var centerX = canvas.width / 2; var centerY = canvas.height / 2; var context = canvas.getContext("2d"); context.beginPath(); context.arc(centerX, centerY, 70, 0, 2 * Math.PI, false); context.fillStyle = color; context.fill(); context.lineWidth = 10; context.strokeStyle = "black"; context.stroke(); return canvas.toDataURL("image/png"); } function showStatistics(bikecounter) { var dateFrom, dateTo; if (checkDateTime($("date_from")) != true) return false; else dateFrom = $("date_from").value; if (checkDateTime($("date_to")) != true) return false; else dateTo = $("date_to").value; if (dateTo <= dateFrom) { alert("Počátek intervalu musí být menší než konec."); return false; } showElement("content_day"); showElement("content_hour"); ajaxUpdater( new Object(), "content_day", BASE_URL + "/StatsReports/bikecounter/stats-customer-hour-content/df/" + dateFrom + "/dt/" + dateTo + "/sn/" + bikecounter + "/sel/1/graph-width/730/graph-height/380/modal/1", true ); cleanDiv("content_hour"); } function showDetailDetectionBikeCounter(params) { $("content_hour").update(""); ajaxUpdater( new Object(), "content_hour", BASE_URL + "/StatsReports/bikecounter/stats-detection-content" + params ); } function showCamera(bc, detection_images, key) { var url = "/BikeCounter/index/modal/bc/" + bc + "/detection_images/" + detection_images + "/key/" + key; openModalWindow("modalFtpCamera", 1, url); } function loadPageOfMap() { createMapIcons(); map = new Camea.Maps.Api("bikecounter-map-index"); map.init().addControls().addLayerControl(); var coordsList = new Camea.Maps.CoordsList(); foreach(settings, function (item) { var marker = createMapMarker(map, item); markers[item.bike_counter] = marker; coordsList.add(marker.getCoords()); }); map.setCenter(coordsList); } function createMapIcons() { var icon = new Camea.Maps.Icon(); icon.setWidth(35); icon.setHeight(35); icon.setMinWidth(10); icon.setMinHeight(10); icon.setMinZoom(7); icon.setMaxZoom(17); icon.setLeftAnchor(0.5); icon.setTopAnchor(0.5); iconList = new Camea.Maps.IconList(); iconList.setPrototype(icon); iconList.createIcon( "green", BASE_URL + "/public/images/circles/circle-green.png" ); iconList.createIcon( "gray", BASE_URL + "/public/images/circles/circle-gray.png" ); iconList.createIcon( "red", BASE_URL + "/public/images/circles/circle-red.png" ); } function createMapMarker(map, item) { var marker = map.Factory.Marker(); marker.setCoords( new Camea.Maps.Coords(item.position_lat, item.position_lng) ); setMarkerIcon(marker, item); setMarkerHint(marker.getHint(), item); marker.onClick(function () { var coordinates = ""; for (var pos in item.measurement_locality) { if (item.measurement_locality.hasOwnProperty(pos) === false) continue; if (coordinates != "") coordinates += "&"; coordinates += item.measurement_locality[pos].position_lat + ";" + item.measurement_locality[pos].position_lng; } showDetail( item.bike_counter, coordinates, item.desc, item.is_ftp_cameras ); }); marker.show(); return marker; } function setMarkerIcon(marker, item) { if (item.state === "ok") marker.setIcon(iconList.getIcon("green")); else marker.setIcon(iconList.getIcon("gray")); } function setMarkerHint(hint, item) { var actualData = data[item.bike_counter]; var ftpIcon = ""; if (actualData.ftp_camera === "Ano") ftpIcon += ' '; var content = '
' + item.customer_desc + " (" + actualData.route + ")" + ftpIcon + "
" + "Detekovaných cyklistů:" + '" + "Všechny směry: " + actualData.all_directions_count + "
" + "Směrová nerovnoměrnost: " + actualData.directions_uniformity + "

" + "Aktuální teplota: " + actualData.temperature_act + " °C
" + "Průměrná dnešní teplota: " + actualData.temperature_avg + " °C
"; hint.setContent(content); hint.hide(); }