File size: 2,805 Bytes
67675b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import gradio as gr

# Função para exibir o mapa com a última localização
def update_map():
    # A API de Geolocalização captura as coordenadas do dispositivo (celular)
    map_html = '''

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Monitoramento em Tempo Real</title>

        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />

        <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>

        <style>

            #map {

                height: 400px;

                width: 100%;

            }

        </style>

    </head>

    <body>

        <h3>Localização Atual:</h3>

        <div id="map"></div>

        <script>

            // Função que obtém as coordenadas do dispositivo (celular)

            function getLocation() {

                if (navigator.geolocation) {

                    navigator.geolocation.getCurrentPosition(function(position) {

                        const lat = position.coords.latitude;

                        const lng = position.coords.longitude;

                        

                        // Atualiza o mapa com as coordenadas obtidas

                        const map = L.map('map').setView([lat, lng], 15);



                        // Adiciona o tile do OpenStreetMap

                        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {

                            attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'

                        }).addTo(map);



                        // Adiciona o marcador

                        const marker = L.marker([lat, lng]).addTo(map);

                        marker.bindPopup("Localização Atual: " + lat + ", " + lng).openPopup();

                    }, function(error) {

                        alert("Erro ao obter a localização: " + error.message);

                    });

                } else {

                    alert("Geolocalização não é suportada neste navegador.");

                }

            }



            // Chama a função para obter a localização do celular

            getLocation();

        </script>

    </body>

    </html>

    '''
    return map_html

# Cria uma interface Gradio
iface = gr.Interface(
    fn=update_map,  # Função que irá gerar o mapa
    inputs=[],
    outputs=gr.HTML(),  # Exibe o HTML do mapa
    live=True,  # Atualização ao vivo
    title="Monitoramento em Tempo Real com OSM e Leaflet",
    description="Veja a localização em tempo real com o OpenStreetMap",
)

# Inicia o servidor Gradio
iface.launch(share=True)