diff --git a/justfile b/justfile
index 834ecbe..408db79 100644
--- a/justfile
+++ b/justfile
@@ -12,7 +12,7 @@ rust-build: docs-build output-clean
cargo build -p web --release --target x86_64-unknown-linux-musl
earthly +rust-image
-wasm-build: output-clean
+wasm-build:
wasm-pack build --target web xpin-wasm
# wasm2js xpin-wasm/pkg/xpin_wasm_bg.wasm -o xpin-wasm/pkg/xpin_wasm_bg.wasm.js
# sed -i 's/xpin_wasm_bg.wasm/xpin_wasm_bg.wasm.js/' xpin-wasm/pkg/wasm2js.js xpin-wasm/pkg/wasm2js_bg.js
diff --git a/web-frontend/src/lib/Map.svelte b/web-frontend/src/lib/Map.svelte
index fcf6ab0..3ba2205 100644
--- a/web-frontend/src/lib/Map.svelte
+++ b/web-frontend/src/lib/Map.svelte
@@ -1,12 +1,23 @@
diff --git a/web-frontend/src/lib/common.js b/web-frontend/src/lib/common.js
index 7e12429..5e4c0ce 100644
--- a/web-frontend/src/lib/common.js
+++ b/web-frontend/src/lib/common.js
@@ -12,7 +12,8 @@ export function getxpin(xpin) {
}
return {
address: xpin.get_address(),
- latLon: xpin.get_lat_lon()
+ latLon: xpin.get_lat_lon(),
+ decimalDegrees: xpin.get_decimal_degrees()
};
}
diff --git a/web-frontend/src/routes/app/+page.svelte b/web-frontend/src/routes/app/+page.svelte
index db51d07..fa6fc08 100644
--- a/web-frontend/src/routes/app/+page.svelte
+++ b/web-frontend/src/routes/app/+page.svelte
@@ -12,7 +12,7 @@
let map;
- let latlng = { lat: '', lng: '' };
+ // let latlngInputValue = { lat: '', lng: '' };
let addr = emptyxpin;
let addrInputValue = '';
@@ -22,11 +22,9 @@
call: undefined
};
- const onMapClick = (e) => {
+ const updateEditedAddress = (latlng) => {
let popup = leaflet.popup();
-
try {
- latlng = e.latlng;
addr = getxpin(wasm.call.EncodedAddress.from_lat_lon(latlng.lat, latlng.lng));
addrInputValue = addr.address;
popup
@@ -36,15 +34,25 @@
})
.setContent(`${addr.address}`)
.openOn(map);
- // popup.setLatLng(e.latlng).setContent(`${addr.address}`).openOn(map);
+ // latlngInputValue = { lat: latlng.lat, lng: latlng.lng };
+ // popup.setLatLng(latlng).setContent(`${addr.address}`).openOn(map);
} catch (err) {
console.error(err);
// addr = emptyxpin;
addrInputValue = '';
- popup.setLatLng(e.latlng).setContent(`You clicked at ${e.latlng}`).openOn(map);
+ popup.setLatLng(latlng).setContent(`You clicked at ${latlng}`).openOn(map);
}
};
+ const locationfound = (e) => {
+ console.log('Updating current location event', e);
+ updateEditedAddress(e.detail.latlng);
+ };
+
+ const onMapClick = (e) => {
+ updateEditedAddress(e.latlng);
+ };
+
let init = async () => {
await getWasm()
.then((w) => (wasm = w))
@@ -106,30 +114,22 @@
Loading WebAssembly module...
{:then}
Address: {addr.address}
- ({addr.latLon}) => ({latlng.lat}, {latlng.lng})
+ ({addr.latLon}) => ({addr.decimalDegrees})
-
+
-
-
-
+
{:catch message}
Could not start core module
{/await}
diff --git a/xpin-wasm/src/lib.rs b/xpin-wasm/src/lib.rs
index 159c4b6..ef00f0d 100644
--- a/xpin-wasm/src/lib.rs
+++ b/xpin-wasm/src/lib.rs
@@ -12,6 +12,13 @@ pub struct EncodedAddress {
#[wasm_bindgen]
impl EncodedAddress {
+ /// Get the current address as decimal degrees
+ #[wasm_bindgen]
+ pub fn get_decimal_degrees(&self) -> String {
+ format!("{}, {}", self.lat, self.lon)
+ }
+
+ /// Get an encoded address from a latitude/longitude
#[wasm_bindgen]
pub fn from_lat_lon(lat: f64, lon: f64) -> Result {
xpin::Address::from_lat_lon(lat, lon)