401 lines
27 KiB
HTML
401 lines
27 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
|
||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||
|
||
<script>
|
||
L_NO_TOUCH = false;
|
||
L_DISABLE_3D = false;
|
||
</script>
|
||
|
||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||
<script src="folium/leaflet.js"></script>
|
||
<script src="folium/jquery-3.7.1.min.js"></script>
|
||
<script src="folium/bootstrap.bundle.min.js"></script>
|
||
<script src="folium/leaflet.awesome-markers.js"></script>
|
||
<link rel="stylesheet" href="folium/leaflet.css"/>
|
||
<link rel="stylesheet" href="folium/bootstrap.min.css"/>
|
||
<link rel="stylesheet" href="folium/bootstrap.min.css"/>
|
||
<link rel="stylesheet" href="folium/all.min.css"/>
|
||
<link rel="stylesheet" href="folium/leaflet.awesome-markers.css"/>
|
||
<link rel="stylesheet" href="folium/leaflet.awesome.rotate.min.css"/>
|
||
|
||
<meta name="viewport" content="width=device-width,
|
||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||
<style>
|
||
#map_4b25dc040c38cf297431749720a0478b {
|
||
position: relative;
|
||
width: 100.0%;
|
||
height: 100.0%;
|
||
left: 0.0%;
|
||
top: 0.0%;
|
||
}
|
||
.leaflet-container { font-size: 1rem; }
|
||
</style>
|
||
|
||
</head>
|
||
<body>
|
||
|
||
|
||
<div class="folium-map" id="map_4b25dc040c38cf297431749720a0478b" ></div>
|
||
|
||
</body>
|
||
<script>
|
||
|
||
|
||
var map_4b25dc040c38cf297431749720a0478b = L.map(
|
||
"map_4b25dc040c38cf297431749720a0478b",
|
||
{
|
||
center: [-22.172177017333333, -47.39524672275],
|
||
crs: L.CRS.EPSG3857,
|
||
zoom: 12,
|
||
zoomControl: true,
|
||
preferCanvas: false,
|
||
}
|
||
);
|
||
|
||
|
||
|
||
|
||
|
||
var tile_layer_628c7cbbc4c4c25a6da8cb6a5557ed89 = L.tileLayer(
|
||
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||
);
|
||
|
||
|
||
tile_layer_628c7cbbc4c4c25a6da8cb6a5557ed89.addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
|
||
|
||
|
||
|
||
var trajetosSelecionados = {};
|
||
var RuasSelecionadas = [];
|
||
function enviarSelecaoParaServidor() {
|
||
client.publish("selecao_ruas_mapa", JSON.stringify(RuasSelecionadas), function (err) {
|
||
/*if (!err) {
|
||
console.log("Mensagem publicada com sucesso");
|
||
} else {
|
||
console.error("Falha ao publicar mensagem", err);
|
||
}*/
|
||
});
|
||
}
|
||
function geo_json_d5c14e71c16ae299a52a1648382432ec_onEachFeature(feature, layer) {
|
||
layer.on({
|
||
|
||
click: function(e) {
|
||
// Verificar se o trajeto j<> est<73> selecionado
|
||
if (trajetosSelecionados[feature.id]) {
|
||
// Se j<> est<73> selecionado, reverta para a cor original e remova da sele<6C><65>o
|
||
e.target.setStyle({
|
||
color: '#3388ff' // Cor original
|
||
});
|
||
delete trajetosSelecionados[feature.id];
|
||
RuasSelecionadas.splice(RuasSelecionadas.indexOf(feature.id), 1);
|
||
} else {
|
||
// Se n<>o est<73> selecionado, mude a cor para indicar sele<6C><65>o e adicione ao objeto de sele<6C><65>o
|
||
e.target.setStyle({
|
||
color: 'blue' // Cor de sele<6C><65>o
|
||
});
|
||
trajetosSelecionados[feature.id] = true;
|
||
RuasSelecionadas.push(feature.id);
|
||
}
|
||
enviarSelecaoParaServidor();
|
||
}/*, mouseover: function(e) {
|
||
// Mostrar tooltip com o ID da geometria quando o mouse passar sobre a linha
|
||
var tooltip = L.tooltip({
|
||
direction: 'auto', // Leaflet determina a melhor posi<73><69>o
|
||
sticky: true // Faz com que o tooltip siga o cursor do mouse
|
||
})
|
||
.setContent('Rua ' + feature.id); // Define o conte<74>do do tooltip
|
||
|
||
// Abre o tooltip na posi<73><69>o atual do mouse
|
||
var latLng = e.latlng;
|
||
tooltip.setLatLng(latLng);
|
||
layer.bindTooltip(tooltip).openTooltip(latLng);
|
||
}*/
|
||
});
|
||
};
|
||
var geo_json_d5c14e71c16ae299a52a1648382432ec = L.geoJson(null, {
|
||
onEachFeature: geo_json_d5c14e71c16ae299a52a1648382432ec_onEachFeature,
|
||
|
||
});
|
||
|
||
function geo_json_d5c14e71c16ae299a52a1648382432ec_add (data) {
|
||
geo_json_d5c14e71c16ae299a52a1648382432ec
|
||
.addData(data);
|
||
}
|
||
geo_json_d5c14e71c16ae299a52a1648382432ec_add({"features": [{"geometry": {"coordinates": [[-47.395213559666665, -22.172175148333334], [-47.395213661166665, -22.172175080333332], [-47.39521377316667, -22.172175083166668], [-47.395213856666665, -22.172175046333333], [-47.39521395316667, -22.17217492283333], [-47.3952139705, -22.1721747965], [-47.39521406283333, -22.172174745], [-47.395214045, -22.1721746005], [-47.39521404766667, -22.172174465666668], [-47.39521410816667, -22.172174494166665], [-47.39521419983333, -22.172174434666665], [-47.39521428816666, -22.172174404166668], [-47.395214303833335, -22.172174402833335], [-47.39521432266667, -22.172174396166668], [-47.39521447833334, -22.172174355166668], [-47.39521461, -22.172174342833333], [-47.39521469766667, -22.1721743505], [-47.39521476033333, -22.172174469833333], [-47.395214806333335, -22.172174471333335], [-47.395214787, -22.172174433333332], [-47.395214811, -22.172174517333332], [-47.395214904166664, -22.172174537333333], [-47.39521490966667, -22.172174531833335], [-47.395214905833335, -22.172174589333334], [-47.39521491833333, -22.1721746815], [-47.39521491666667, -22.172174660166668], [-47.3952149315, -22.172174693666665], [-47.39521495433333, -22.172174725666668], [-47.395215054333335, -22.172174791666666], [-47.3952151245, -22.172174871833334], [-47.395215242333336, -22.172174980166666], [-47.39521529733333, -22.172175062333334], [-47.3952153375, -22.172175085333333], [-47.3952153745, -22.172175095666667], [-47.39521538566667, -22.172175057666667], [-47.395215392666664, -22.172175003666666], [-47.395215408666665, -22.172174904666665], [-47.395215396333334, -22.1721748805], [-47.39521537933334, -22.172174842333334], [-47.395215357666665, -22.172174805166666], [-47.39521531966667, -22.1721747685], [-47.39521532716667, -22.172174764166666], [-47.395215278833334, -22.1721747175], [-47.395215255, -22.1721746855], [-47.39521522216667, -22.17217465], [-47.3952152285, -22.172174628166665], [-47.39521524116667, -22.172174600666665], [-47.395215263666664, -22.172174573833335], [-47.39521529183333, -22.172174539166665], [-47.39521538166667, -22.172174431], [-47.395213927166665, -22.172173085], [-47.39521378883333, -22.1721731575], [-47.39521363316667, -22.172173171166666], [-47.395213469666665, -22.172173194166668], [-47.39521330033333, -22.172173250666667], [-47.3952131865, -22.172173421333333], [-47.395213132833334, -22.172173498833335], [-47.395212945833336, -22.172173520166666], [-47.395212920166664, -22.172173603166666], [-47.39521286066667, -22.172173816666668], [-47.39521270983333, -22.172173821333335], [-47.395212576166664, -22.172173953166666], [-47.39521236216667, -22.172173978166665], [-47.39521224316667, -22.172174072666667], [-47.395212138666665, -22.172174082333335], [-47.3952120045, -22.172174093666666], [-47.39521158666667, -22.172174491], [-47.395211396, -22.172174525166668], [-47.395211210333336, -22.172174652666666], [-47.39521111316667, -22.1721746145], [-47.395210694666666, -22.172174665166665], [-47.395210451666664, -22.172174894], [-47.395210330666664, -22.172175238333335], [-47.39521025916667, -22.172175306166668], [-47.39520992866667, -22.172175469833334], [-47.395209678166665, -22.1721754535], [-47.395209711166665, -22.17217554533333], [-47.39520956366667, -22.172175611], [-47.39520939733333, -22.172175862], [-47.395209036, -22.172176082], [-47.3952090095, -22.172175861], [-47.395208950666664, -22.172175716333335], [-47.39520897366667, -22.1721757335], [-47.395208851166664, -22.1721757115], [-47.395208888166664, -22.172175958666667], [-47.395208456166664, -22.172175986166668], [-47.39520847283333, -22.1721759965], [-47.3952086535, -22.17217603], [-47.395208654166666, -22.172175852], [-47.3952085225, -22.1721757075], [-47.39520819333333, -22.172175907666666], [-47.3952079045, -22.172176028166668], [-47.395207907166665, -22.1721761125], [-47.395207738, -22.1721761695], [-47.3952076005, -22.1721762255], [-47.395207403166665, -22.172176364666665], [-47.39520744366666, -22.172176456833334], [-47.39520750583333, -22.172176506666666], [-47.39520737466667, -22.172176611166666], [-47.39520748216667, -22.172176585166667], [-47.39520994283333, -22.172177008666665], [-47.39521400183333, -22.172176079666666], [-47.39521742, -22.172174478166667], [-47.395222074, -22.172168967166666], [-47.3952227085, -22.172167568166667], [-47.39522267666667, -22.172167596333335], [-47.395222331, -22.172169002833332], [-47.395221924833336, -22.1721725285], [-47.39522324833333, -22.1721761025], [-47.395238396833335, -22.172176559666667], [-47.39524305583333, -22.172181358333333], [-47.39524625266667, -22.172182961666667], [-47.39524668333333, -22.172182891833334], [-47.3952466885, -22.1721828505], [-47.39524676683333, -22.1721828795], [-47.395246738333334, -22.172182926], [-47.3952467375, -22.172182883833333], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395246762333336, -22.1721828595], [-47.395260675, -22.172162468], [-47.395259102833336, -22.17216431883333], [-47.39526184583333, -22.17216525916667], [-47.39525670133333, -22.1721721705], [-47.395254156166665, -22.172174840833332], [-47.395254148, -22.172175058666667], [-47.395254735500004, -22.172175189833332], [-47.3952546015, -22.172176439], [-47.395254200833335, -22.1721777585], [-47.39525404683334, -22.172177440166667], [-47.39525357266667, -22.172177202333334], [-47.39525325183333, -22.172176853833335], [-47.39525269116667, -22.172176201], [-47.395252665, -22.1721759945], [-47.3952526755, -22.17217597533333], [-47.395252562, -22.1721760405], [-47.39525267216667, -22.172176047666667], [-47.395258610666666, -22.172177525333332], [-47.395263898, -22.172179232], [-47.39526235433333, -22.1721868205], [-47.39526701483334, -22.1721874495], [-47.395271045166666, -22.172188099166668], [-47.39527863066667, -22.172184138], [-47.395282185666666, -22.172180728833332], [-47.395284775, -22.172177807166666], [-47.395286070833336, -22.172174555333335], [-47.39528584433333, -22.172170900666668], [-47.395284018, -22.172167682], [-47.39527612916667, -22.172164675833333], [-47.395271050666665, -22.1721653605], [-47.395266346166665, -22.172166986166665], [-47.39526225983333, -22.17216834], [-47.39525923266667, -22.172170868166667], [-47.395257584, -22.172174152666667], [-47.39525735283333, -22.172177857666668], [-47.39526172833333, -22.172183815833332], [-47.395265223, -22.172185117666668], [-47.39526957983333, -22.172184907], [-47.39527449133333, -22.172183473], [-47.3952787285, -22.172182456833333], [-47.3952848215, -22.172177143833334], [-47.39528540316667, -22.172173561166666], [-47.3952842195, -22.172170011833334], [-47.3952816575, -22.172167367666667], [-47.39527791583333, -22.172165538], [-47.39527354916667, -22.172164974166666], [-47.395269802, -22.172166395166666], [-47.395265119166666, -22.1721721775], [-47.39526540566666, -22.1721760245], [-47.395267611, -22.172180153], [-47.3952684195, -22.1721872695], [-47.395267448666665, -22.172190044], [-47.395267501666666, -22.172189814333333], [-47.39526963483333, -22.172187015166667], [-47.395272465, -22.172183910666668], [-47.39527449166667, -22.172182582666668], [-47.39527281716666, -22.172183626833334], [-47.395269881333334, -22.172185836666667], [-47.395265957166664, -22.172187140166667], [-47.39526099766667, -22.172187756], [-47.39525213233333, -22.172189217], [-47.395248186, -22.172188649666666], [-47.395244786666666, -22.172187110166668], [-47.395242104833336, -22.172184308166667], [-47.39524063066666, -22.17218110783333], [-47.39524051033333, -22.172177286], [-47.3952410105, -22.172173820333335], [-47.3952457145, -22.172168404166666], [-47.39524921783333, -22.1721670835], [-47.395253031833334, -22.1721665645], [-47.395256679333336, -22.172167243166665], [-47.39525937733333, -22.172169216333334], [-47.39526246366667, -22.172172064833333], [-47.395263875, -22.172175306], [-47.3952637455, -22.172182219666666], [-47.3952616155, -22.172185202833333], [-47.3952584315, -22.172187771], [-47.39525505533334, -22.172188991833334], [-47.395251041, -22.172189211833334], [-47.395247292, -22.1721882925], [-47.39524057, -22.172183168], [-47.39523990116667, -22.172182645333333], [-47.39523992016667, -22.172182593], [-47.395239939166665, -22.172182666833333], [-47.39523994, -22.172182645333333], [-47.395239934833334, -22.172182654333334], [-47.39523989133333, -22.172182679833334], [-47.39523994566667, -22.172182689166668], [-47.39523991466667, -22.172182680166667], [-47.395239918, -22.17218267333333], [-47.395239945166665, -22.172182708833333], [-47.395239937, -22.172182704166666], [-47.3952399285, -22.172182688], [-47.3952399335, -22.172182709666668], [-47.395239860833335, -22.172182680833334], [-47.395239915, -22.172182661], [-47.395239935666666, -22.172182682666666], [-47.395239955, -22.172182715166667], [-47.39524001833333, -22.172182357333334], [-47.3952400825, -22.1721823565], [-47.395239514, -22.172181482833334], [-47.395236406833334, -22.172179155833334], [-47.395232207666666, -22.172178440666666], [-47.395228397, -22.172179508333333], [-47.39522508966667, -22.172181311166668], [-47.39522188866667, -22.1721881945], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395223014833334, -22.172191566666665], [-47.395251274833335, -22.172177015333332], [-47.39525563833333, -22.172169602166665], [-47.39525776766666, -22.172166933833335], [-47.395260938, -22.172165035], [-47.39526435916667, -22.172164037], [-47.395269387666666, -22.17216457316667], [-47.395273539, -22.1721644335], [-47.395280939833334, -22.172167776333332], [-47.39528308133333, -22.172170854], [-47.39528435783333, -22.172174300666665], [-47.395283000166664, -22.172181222666666], [-47.395280744, -22.172183948666667], [-47.39527747, -22.172185888666668], [-47.39527364633334, -22.172186843666665], [-47.39526983583333, -22.172186629833334], [-47.395266144, -22.172185430166667], [-47.3952604845, -22.1721791725], [-47.39525795833333, -22.1721751905], [-47.395255364, -22.172172320166666], [-47.395252246, -22.172170251], [-47.39524817016667, -22.1721696835], [-47.39524413466667, -22.172170717333334], [-47.3952394065, -22.1721764055], [-47.395239048166665, -22.172180115833335], [-47.3952403625, -22.1721836655], [-47.395243247833335, -22.172186215666667], [-47.39524688416667, -22.172187639166665], [-47.395250953, -22.172187314166667], [-47.39525737433333, -22.172183249666666], [-47.395258854, -22.172179839166667], [-47.395258660833335, -22.172176125166665], [-47.3952566335, -22.172172614333334], [-47.39525642866667, -22.172172293333333], [-47.395256332833334, -22.172172260333333], [-47.39525627683334, -22.172172228], [-47.39525627166667, -22.1721721705], [-47.39525623, -22.1721722005], [-47.395256225, -22.172172190333335], [-47.395256255666666, -22.172172216333333], [-47.39525625266667, -22.172172165666666], [-47.395256164833334, -22.172172100833333], [-47.395256284666665, -22.1721721785], [-47.395256284666665, -22.1721721785], [-47.395256234166666, -22.172172152833333]], "id": null, "type": "LineString"}, "id": 0, "properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": "1", "Length": 66.12148223428231, "Name": "06_03_2025_14_35_22"}, "type": "Feature"}], "type": "FeatureCollection"});
|
||
|
||
|
||
|
||
geo_json_d5c14e71c16ae299a52a1648382432ec.addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
|
||
</script>
|
||
|
||
<script>
|
||
function trajeto_json_onEachFeature(feature, layer) {
|
||
layer.on({
|
||
});
|
||
};
|
||
var trajeto_json = L.geoJson(null, {
|
||
onEachFeature: trajeto_json_onEachFeature,
|
||
style: function(feature) {
|
||
return {color: 'red'};
|
||
}
|
||
}
|
||
);
|
||
function trajeto_json_add (data) {
|
||
trajeto_json.addData(data);
|
||
}
|
||
trajeto_json_add({"features": []});
|
||
|
||
trajeto_json.addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
|
||
function adicionarGeometria(novaGeometria) {
|
||
trajeto_json.addData(novaGeometria);
|
||
}
|
||
|
||
function saoCoordenadasIguais(coord1, coord2, tolerancia) {
|
||
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
|
||
}
|
||
|
||
function adicionarCoordenada(idGeometria, novaCoordenada) {
|
||
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
|
||
if (feature) {
|
||
var ultima = [0.0,0.0];
|
||
if (feature.geometry.coordinates.length > 0) {
|
||
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
|
||
}
|
||
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {
|
||
feature.geometry.coordinates.push(novaCoordenada);
|
||
var ft = feature;
|
||
trajeto_json.clearLayers();
|
||
trajeto_json.addData(ft);
|
||
}
|
||
|
||
} else {
|
||
console.log("Feature com ID " + idGeometria + " n<>o encontrada.");
|
||
}
|
||
}
|
||
|
||
adicionarGeometria({
|
||
"type": "Feature",
|
||
"geometry": {
|
||
"type": "LineString",
|
||
"coordinates": []
|
||
},
|
||
"properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"},
|
||
"id": "Tj"
|
||
});
|
||
|
||
</script>
|
||
|
||
<script>
|
||
function trajeto_dinamico_json_onEachFeature(feature, layer) {
|
||
layer.on({
|
||
});
|
||
};
|
||
var trajeto_dinamico_json = L.geoJson(null, {
|
||
onEachFeature: trajeto_dinamico_json_onEachFeature,
|
||
style: function(feature) {
|
||
return {color: 'green'};
|
||
}
|
||
}
|
||
);
|
||
function trajeto_dinamico_json_add (data) {
|
||
trajeto_dinamico_json.addData(data);
|
||
}
|
||
trajeto_dinamico_json_add({"features": []});
|
||
|
||
trajeto_dinamico_json.addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
|
||
function adicionarGeometriaDinamica(novaGeometria) {
|
||
trajeto_dinamico_json.addData(novaGeometria);
|
||
}
|
||
|
||
function adicionarCoordenadaDinamica(idGeometria, coordenadas) {
|
||
var feature = trajeto_dinamico_json.toGeoJSON().features.find(f => f.id === idGeometria);
|
||
if (feature) {
|
||
feature.geometry.coordinates = [];
|
||
coordenadas.forEach(x => feature.geometry.coordinates.push([x.longitude, x.latitude]));
|
||
var ft = feature;
|
||
trajeto_dinamico_json.clearLayers();
|
||
trajeto_dinamico_json.addData(ft);
|
||
} else {
|
||
console.log("Feature com ID " + idGeometria + " nao encontrada.");
|
||
}
|
||
}
|
||
|
||
adicionarGeometriaDinamica({
|
||
"type": "Feature",
|
||
"geometry": {
|
||
"type": "LineString",
|
||
"coordinates": []
|
||
},
|
||
"properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"},
|
||
"id": "TjD"
|
||
});
|
||
|
||
</script>
|
||
|
||
<script src="folium/mqtt.min.js"></script>
|
||
<script src="folium/leaflet.rotatedMarker.js"></script>
|
||
<script>
|
||
let posicaoAtualEquipamento = {
|
||
lat: 0,
|
||
long: 0
|
||
};
|
||
|
||
let posicaoAtualBase = {
|
||
lat: 0,
|
||
long: 0
|
||
};
|
||
|
||
var customIcon = L.icon({
|
||
iconUrl: 'folium/images/position_marker.png',
|
||
iconSize: [32, 32],
|
||
iconAnchor: [16, 16],
|
||
popupAnchor: [0, -16]
|
||
});
|
||
|
||
var marcadorEquipamento = L.marker([0, 0], {
|
||
icon: customIcon
|
||
}).addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
|
||
var marcadorBase = L.marker([0, 0], {}).addTo(map_4b25dc040c38cf297431749720a0478b);
|
||
var icon = L.AwesomeMarkers.icon(
|
||
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
|
||
);
|
||
marcadorBase.setIcon(icon);
|
||
|
||
// Conectar ao broker MQTT
|
||
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conex<65>o segura
|
||
|
||
// Quando conectado, inscreva-se no t<>pico desejado
|
||
client.on('connect', function () {
|
||
console.log('Conectado ao broker MQTT');
|
||
|
||
// Inscrever-se no t<>pico
|
||
client.subscribe('coordenadas_gps', function (err) {
|
||
if (!err) {
|
||
console.log("Inscricao bem-sucedida no topico");
|
||
} else {
|
||
console.error("Falha na inscricao do topico", err);
|
||
}
|
||
});
|
||
client.subscribe('trajetoria_dinamica', function (err) {
|
||
if (!err) {
|
||
console.log("Inscricao bem-sucedida no topico");
|
||
} else {
|
||
console.error("Falha na inscricao do topico", err);
|
||
}
|
||
});
|
||
client.subscribe('selecao_ruas_mapa', function (err) {
|
||
if (!err) {
|
||
console.log("Inscricao bem-sucedida no topico");
|
||
} else {
|
||
console.error("Falha na inscricao do topico", err);
|
||
}
|
||
});
|
||
});
|
||
|
||
// Lidar com mensagens recebidas para o topico inscrito
|
||
client.on('message', function (topic, message) {
|
||
var dados = JSON.parse(message);
|
||
if (topic === "trajetoria_dinamica") {
|
||
adicionarCoordenadaDinamica("TjD", dados); // "Tj" <20> o ID da feature no GeoJSON
|
||
}
|
||
else if (topic === "coordenadas_gps") {
|
||
// A mensagem e um Buffer, converta para string ou objeto conforme necessario
|
||
//console.log(`Mensagem recebida no topico '${topic}': ${message.toString()}`);
|
||
|
||
var id = dados.id;
|
||
var novaLatitude = dados.latitude;
|
||
var novaLongitude = dados.longitude;
|
||
var novaPosicao = [novaLatitude, novaLongitude];
|
||
var orientacao = dados.orientacao;
|
||
var foco = dados.foco;
|
||
|
||
if (id == 1) {
|
||
marcadorBase.setLatLng(novaPosicao);
|
||
|
||
// Calcular angulo de rotacao
|
||
var angulo = dados.orientacao;
|
||
|
||
posicaoAtualBase.lat = novaPosicao[0];
|
||
posicaoAtualBase.long = novaPosicao[1];
|
||
|
||
// Rotacionar o marcador para o angulo calculado
|
||
marcadorBase.setRotationAngle(angulo);
|
||
}
|
||
else {
|
||
marcadorEquipamento.setLatLng(novaPosicao);
|
||
|
||
// Calcular angulo de rotacao
|
||
var angulo = dados.orientacao;
|
||
|
||
posicaoAtualEquipamento.lat = novaPosicao[0];
|
||
posicaoAtualEquipamento.long = novaPosicao[1];
|
||
|
||
// Rotacionar o marcador para o angulo calculado
|
||
marcadorEquipamento.setRotationAngle(angulo);
|
||
|
||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||
}
|
||
|
||
if (foco) {
|
||
map_4b25dc040c38cf297431749720a0478b.setView(novaPosicao, map_4b25dc040c38cf297431749720a0478b.getZoom());
|
||
}
|
||
|
||
}
|
||
else if (topic === 'selecao_ruas_mapa') {
|
||
var selecionadas = dados;
|
||
if (selecionadas.length != RuasSelecionadas.length) {
|
||
atualizarSelecaoRuas(selecionadas);
|
||
}
|
||
}
|
||
|
||
});
|
||
|
||
// Fun<75><6E>o para atualizar a sele<6C><65>o das ruas e mudar a cor no mapa
|
||
function atualizarSelecaoRuas(selecionadas) {
|
||
selecionadas = JSON.parse(selecionadas);
|
||
RuasSelecionadas = Array.isArray(selecionadas) ? [...selecionadas] : [];
|
||
geo_json_d5c14e71c16ae299a52a1648382432ec.eachLayer(function (layer) {
|
||
if (RuasSelecionadas.includes(parseInt(layer.feature.id))) {
|
||
layer.setStyle({ color: 'blue' });
|
||
} else {
|
||
layer.setStyle({ color: '#3388ff' }); // Cor original
|
||
}
|
||
});
|
||
}
|
||
|
||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||
// Converter latitudes e longitudes de graus para radianos
|
||
const latA = P1latitude * (Math.PI / 180.0);
|
||
const lonA = P1longitude * (Math.PI / 180.0);
|
||
const latB = P2latitude * (Math.PI / 180.0);
|
||
const lonB = P2longitude * (Math.PI / 180.0);
|
||
|
||
// Calcular a diferen<65>a de longitude
|
||
const deltaLon = lonB - lonA;
|
||
|
||
// Calcular a dire<72><65>o
|
||
const y = Math.sin(deltaLon) * Math.cos(latB);
|
||
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
|
||
const direcaoRadianos = Math.atan2(y, x);
|
||
|
||
// Converter a dire<72><65>o de radianos para graus
|
||
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
|
||
|
||
// Normalizar a dire<72><65>o para que esteja no intervalo de 0 a 360 graus
|
||
direcaoGraus = (direcaoGraus + 360) % 360;
|
||
|
||
return direcaoGraus;
|
||
}
|
||
|
||
</script>
|
||
</html> |