Skip to content

Commit

Permalink
copy url to clipboard
Browse files Browse the repository at this point in the history
  • Loading branch information
pieterprovoost committed Jun 22, 2024
1 parent 3fa5b48 commit 59f89c1
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 33 deletions.
39 changes: 7 additions & 32 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ import { Twitter } from "react-bootstrap-icons";
import FullscreenControl from "./FullscreenControl";
import CRC32 from "crc-32";
import { EditControl } from "react-leaflet-draw";
import { geojsonToWKT } from "@terraformer/wkt";
import ReactGA from "react-ga4";
import { transformInput, ValueError, getBbox } from "./wkt";
import { transformInput, ValueError, getBbox, layerGroupToWkt } from "./wkt";
import toast, { Toaster } from "react-hot-toast";

const DEFAULT_EPSG = "4326";
Expand Down Expand Up @@ -155,40 +154,15 @@ function App() {
}
}, [map]); // eslint-disable-line react-hooks/exhaustive-deps

function splitGeometry(geometry) {
if (geometry.type === "GeometryCollection") {
return geometry.geometries;
} else {
return [geometry];
}
}

function handleDrawStop() {
let geometries = [];
groupRef.current.eachLayer(function(layer) {
const geo = layer.toGeoJSON();
if (geo.type === "Feature") {
geometries = geometries.concat(splitGeometry(geo.geometry));
} else if (geo.type === "FeatureCollection") {
geo.features.forEach(feature => {
geometries = geometries.concat(splitGeometry(feature.geometry));
});
}
});
const wktGeometries = geometries.map(geojsonToWKT);
let wkt;
if (wktGeometries.length === 1) {
wkt = wktGeometries[0];
} else if (wktGeometries.length > 1) {
wkt = "GEOMETRYCOLLECTION(" + wktGeometries.join(", ") + ")";
}
const wktDraw = layerGroupToWkt(groupRef.current);
setEpsg(4326);
clearHash();
if (wkt) {
setWkt(wkt);
if (wktDraw) {
setWkt(wktDraw);
processInput({
epsg: 4326,
wkt: wkt
wkt: wktDraw
}, false);
}
}
Expand Down Expand Up @@ -259,7 +233,8 @@ function App() {
}
}).catch(error => console.error(error));
window.history.replaceState(null, null, "?" + hash);
toast("Generated URL for sharing")
navigator.clipboard.writeText(window.location.href);
toast("Generated URL for sharing and copied to clipboard")
ReactGA.event({
category: "wkt",
action: "wkt_share",
Expand Down
33 changes: 32 additions & 1 deletion src/wkt.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Buffer } from "buffer";
import { cellToBoundary } from "h3-js";
import geohash from "ngeohash";
import quadkeytools from "quadkeytools";
import { geojsonToWKT } from "@terraformer/wkt";

const USE_WKT = false;

Expand Down Expand Up @@ -205,4 +206,34 @@ async function transformInput(input) {

}

export { parseWkt, transformInput, ValueError, fetchProj, extractAndParseCrs, getBbox };
function splitGeometry(geometry) {
if (geometry.type === "GeometryCollection") {
return geometry.geometries;
} else {
return [geometry];
}
}

function layerGroupToWkt(layerGroup) {
let geometries = [];
layerGroup.eachLayer(function(layer) {
const geo = layer.toGeoJSON();
if (geo.type === "Feature") {
geometries = geometries.concat(splitGeometry(geo.geometry));
} else if (geo.type === "FeatureCollection") {
geo.features.forEach(feature => {
geometries = geometries.concat(splitGeometry(feature.geometry));
});
}
});
const wktGeometries = geometries.map(geojsonToWKT);
let wkt;
if (wktGeometries.length === 1) {
wkt = wktGeometries[0];
} else if (wktGeometries.length > 1) {
wkt = "GEOMETRYCOLLECTION(" + wktGeometries.join(", ") + ")";
}
return wkt;
}

export { parseWkt, transformInput, ValueError, fetchProj, extractAndParseCrs, getBbox, layerGroupToWkt };

0 comments on commit 59f89c1

Please sign in to comment.