digiwild / app /geolocalisation /js_geolocation.py
vancauwe's picture
feat: functional automatic geolocalisation
4d22027
raw
history blame
2.31 kB
import gradio as gr
import json
from geolocalisation.maps import create_geolocalisation_object, save_geolocalisation_to_json
# JavaScript code to get location and update hidden_input
js_geocode = """
function() {
var textbox = document.querySelector('#textbox_id textarea');
console.log(textbox)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function(position) {
var data = {
'latitude': position.coords.latitude,
'longitude': position.coords.longitude,
'accuracy': position.coords.accuracy
};
console.log("Geolocation data:", data);
textbox.value = JSON.stringify(data);
textbox.dispatchEvent(new Event('input', { bubbles: true }));
},
function(error) {
var data = {'error': error.message};
console.log("Geolocation error:", data);
textbox.value = JSON.stringify(data);
textbox.dispatchEvent(new Event('input', { bubbles: true }));
}
);
} else {
var data = {'error': 'Geolocation is not supported by this browser.'};
console.log("Geolocation unsupported:", data);
textbox.value = JSON.stringify(data);
textbox.dispatchEvent(new Event('input', { bubbles: true }));
}
}
"""
def display_location(location_json, individual):
geo_dict = json.loads(location_json)
if "latitude" in geo_dict.keys():
latitude = geo_dict["latitude"]
longitude = geo_dict["longitude"]
geolocalisation = create_geolocalisation_object(latitude, longitude, "NA")
individual = save_geolocalisation_to_json(geolocalisation, individual)
geo_text = f"Latitude: {latitude} | Longitude: {longitude}"
else:
error = geo_dict["error"]
geo_text = f"Error occured ({error}). Give your browser permission to use your geolocalisation or change browsers."
locationtext = gr.Textbox(
geo_text,
visible=True,
show_label=False,
interactive=False)
return locationtext, individual