Convert all coordinates to string for wasm
This commit is contained in:
parent
8c6fff2a3b
commit
99d111ea17
@ -37,6 +37,22 @@ impl TryFrom<LatLon> for Coordinates {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TryFrom<&crate::Coordinate> for Coordinates {
|
||||||
|
type Error = Error;
|
||||||
|
|
||||||
|
fn try_from(value: &crate::Coordinate) -> Result<Self, Self::Error> {
|
||||||
|
Self::try_from(LatLon::from(value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<crate::Coordinate> for Coordinates {
|
||||||
|
type Error = Error;
|
||||||
|
|
||||||
|
fn try_from(value: crate::Coordinate) -> Result<Self, Self::Error> {
|
||||||
|
Self::try_from(&value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl FromStr for Coordinates {
|
impl FromStr for Coordinates {
|
||||||
type Err = Error;
|
type Err = Error;
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@ mod tests {
|
|||||||
easting: 666962.588,
|
easting: 666962.588,
|
||||||
northing: 0.0,
|
northing: 0.0,
|
||||||
|
|
||||||
|
// Allow nearby comparisons
|
||||||
latlon: LatLon::new(1.534972646100779e-9, 100.50027886695585).unwrap()
|
latlon: LatLon::new(1.534972646100779e-9, 100.50027886695585).unwrap()
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
})
|
})
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
// Initialize the app
|
// Initialize the app
|
||||||
|
// TODO: This leads to a `map is undefined` error
|
||||||
updateAddr(wasm.call.EncodedAddress.from_coordinate(coordinateInputValue), true);
|
updateAddr(wasm.call.EncodedAddress.from_coordinate(coordinateInputValue), true);
|
||||||
})
|
})
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
|
@ -55,6 +55,9 @@ pub struct EncodedAddress {
|
|||||||
|
|
||||||
#[wasm_bindgen(js_name = decimalDegrees)]
|
#[wasm_bindgen(js_name = decimalDegrees)]
|
||||||
pub decimal_degrees: String,
|
pub decimal_degrees: String,
|
||||||
|
|
||||||
|
#[wasm_bindgen(js_name = allCoordinates)]
|
||||||
|
pub all_coordinates: Coordinates,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
@ -118,6 +121,30 @@ impl EncodedAddress {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen(getter_with_clone)]
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct Coordinates {
|
||||||
|
// pub latlon: LatLon,
|
||||||
|
pub dd: String,
|
||||||
|
pub dms: String,
|
||||||
|
pub dmm: String,
|
||||||
|
pub utm: String,
|
||||||
|
// pub xpin: String,
|
||||||
|
pub plus: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&spatial_coordinate_systems::all::Coordinates> for Coordinates {
|
||||||
|
fn from(value: &spatial_coordinate_systems::all::Coordinates) -> Self {
|
||||||
|
Self {
|
||||||
|
dd: value.dd.to_string(),
|
||||||
|
dms: value.dms.to_string(),
|
||||||
|
dmm: value.dmm.to_string(),
|
||||||
|
utm: value.utm.to_string(),
|
||||||
|
plus: value.plus.to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl TryFrom<&'_ Address<'_>> for EncodedAddress {
|
impl TryFrom<&'_ Address<'_>> for EncodedAddress {
|
||||||
type Error = String;
|
type Error = String;
|
||||||
|
|
||||||
@ -129,6 +156,9 @@ impl TryFrom<&'_ Address<'_>> for EncodedAddress {
|
|||||||
let src_coords =
|
let src_coords =
|
||||||
Coordinate::from_str(&format!("{}, {}", lat, lon)).map_err(|e| e.to_string())?;
|
Coordinate::from_str(&format!("{}, {}", lat, lon)).map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
|
let all_coordinates = spatial_coordinate_systems::all::Coordinates::try_from(&src_coords)
|
||||||
|
.map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
address: addr.to_string(),
|
address: addr.to_string(),
|
||||||
lat_lon: Box::new([lat, lon]),
|
lat_lon: Box::new([lat, lon]),
|
||||||
@ -136,6 +166,7 @@ impl TryFrom<&'_ Address<'_>> for EncodedAddress {
|
|||||||
src_coords_type: src_coords.get_type().into(),
|
src_coords_type: src_coords.get_type().into(),
|
||||||
src_coords,
|
src_coords,
|
||||||
decimal_degrees: format!("{}, {}", lat, lon),
|
decimal_degrees: format!("{}, {}", lat, lon),
|
||||||
|
all_coordinates: Coordinates::from(&all_coordinates),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user