LFM2-WebGPU / src /tools /get_location.js
mlabonne's picture
Add demo source code (#1)
68185ce verified
raw
history blame
2.44 kB
/**
* Get the user's current location using the browser's geolocation API.
* @returns {Promise<{ latitude: number, longitude: number }>} The current position { latitude, longitude }.
*/
export async function get_location() {
return new Promise((resolve, reject) => {
if (!navigator.geolocation) {
reject("Geolocation not supported.");
return;
}
navigator.geolocation.getCurrentPosition(
(pos) =>
resolve({
latitude: pos.coords.latitude,
longitude: pos.coords.longitude,
}),
(err) => reject(err.message || "Geolocation error"),
);
});
}
export default (input, output) =>
React.createElement(
"div",
{ className: "bg-green-50 border border-green-200 rounded-lg p-4" },
React.createElement(
"div",
{ className: "flex items-center mb-2" },
React.createElement(
"div",
{
className:
"w-8 h-8 bg-green-100 rounded-full flex items-center justify-center mr-3",
},
"πŸ“",
),
React.createElement(
"h3",
{ className: "text-green-900 font-semibold" },
"Location",
),
),
output?.latitude && output?.longitude
? React.createElement(
"div",
{ className: "space-y-1 text-sm" },
React.createElement(
"p",
{ className: "text-green-700" },
React.createElement(
"span",
{ className: "font-medium" },
"Latitude: ",
),
output.latitude.toFixed(6),
),
React.createElement(
"p",
{ className: "text-green-700" },
React.createElement(
"span",
{ className: "font-medium" },
"Longitude: ",
),
output.longitude.toFixed(6),
),
React.createElement(
"a",
{
href: `https://maps.google.com?q=${output.latitude},${output.longitude}`,
target: "_blank",
rel: "noopener noreferrer",
className:
"inline-block mt-2 text-green-600 hover:text-green-800 underline text-xs",
},
"View on Google Maps",
),
)
: React.createElement(
"p",
{ className: "text-green-700 text-sm" },
JSON.stringify(output),
),
);