reverse lookup for addresses
This commit is contained in:
parent
002aa0de84
commit
79ba55a097
2 changed files with 17 additions and 4 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -654,7 +654,7 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
|||
|
||||
[[package]]
|
||||
name = "huellas"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"rocket",
|
||||
"rocket_db_pools",
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ function clearForm(): void {
|
|||
document.getElementById("modal").style.display = "none";
|
||||
}
|
||||
|
||||
|
||||
async function createPlace(): Promise<void> {
|
||||
const newPlace = getPlaceFromForm();
|
||||
|
||||
|
|
@ -163,6 +162,12 @@ interface MapEvent {
|
|||
relatedTarget: L.Marker | L.Path | undefined;
|
||||
}
|
||||
|
||||
async function getAddressReverse(lat: number, long: number): Promise<string> {
|
||||
const nominatimEndpoint = `https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${long}&format=json`
|
||||
const address = (await fetch(nominatimEndpoint).then(response => response.json())).address;
|
||||
return `${address.road} ${address.house_number}, ${address.city}`;
|
||||
}
|
||||
|
||||
async function setupMap(): Promise<void> {
|
||||
/* Create/Edit form */
|
||||
const modal = document.getElementById("modal");
|
||||
|
|
@ -178,7 +183,7 @@ async function setupMap(): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
function openForm(op: Operation, lat: number, long: number): void {
|
||||
async function openForm(op: Operation, lat: number, long: number): Promise<void> {
|
||||
/* Fill the form for us */
|
||||
const h1 = modal.getElementsByTagName("h1")[0];
|
||||
if (op == Operation.Create) {
|
||||
|
|
@ -192,13 +197,13 @@ async function setupMap(): Promise<void> {
|
|||
latInput.value = lat.toString();
|
||||
longInput.value = long.toString();
|
||||
|
||||
const addressInput = (document.getElementById("address") as HTMLInputElement);
|
||||
if (op == Operation.Edit) {
|
||||
const place = places.get(toStr({ lat: lat, lng: long }));
|
||||
console.log(toStr({ lat: lat, lng: long }));
|
||||
/*Get the form elements*/
|
||||
const idInput = (document.getElementById("id") as HTMLInputElement);
|
||||
const nameInput = (document.getElementById("name") as HTMLInputElement);
|
||||
const addressInput = (document.getElementById("address") as HTMLInputElement);
|
||||
const openHoursArea = (document.getElementById("open_hours") as HTMLTextAreaElement);
|
||||
const iconSelect = (document.getElementById("icon") as HTMLSelectElement);
|
||||
const descriptionArea = (document.getElementById("description") as HTMLTextAreaElement);
|
||||
|
|
@ -210,6 +215,14 @@ async function setupMap(): Promise<void> {
|
|||
openHoursArea.value = place.open_hours;
|
||||
iconSelect.value = place.icon;
|
||||
descriptionArea.value = place.description;
|
||||
} else {
|
||||
getAddressReverse(lat, long).then(
|
||||
(address) => {
|
||||
if (addressInput.value.length == 0) {
|
||||
addressInput.value = address;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/* Plug callbacks */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue