Add new functionality for dzialki, dzialki2, lines, mpzp, osuwiska, position, section, and test modules with API integration and canvas drawing capabilities

This commit is contained in:
2025-06-05 11:33:33 +02:00
parent 1c97e0610f
commit eb69a810fd
8 changed files with 556 additions and 0 deletions

79
js/functions/position.js Normal file
View File

@@ -0,0 +1,79 @@
let posStarted = -1;
const posIcon = document.createElement("img");
function getPos() {
posStarted = -posStarted;
const canvas = document.getElementsByClassName("ol-unselectable")[0];
if (posStarted == 1) {
posIcon.src = chrome.runtime.getURL("icons/position_alt.png");
posButton.appendChild(posIcon);
canvas.addEventListener("click", drawPos, true);
} else {
posIcon.src = chrome.runtime.getURL("icons/position.png");
posButton.appendChild(posIcon);
canvas.removeEventListener("click", drawPos, true);
}
}
function drawPos(event) {
event.preventDefault();
if (event.target.className == "ol-unselectable") {
const bttm = document.getElementsByClassName("pl-2");
const x = bttm[0].innerHTML;
const y = bttm[1].innerHTML;
const canvas = document.getElementsByClassName("ol-unselectable")[0];
const ctx = canvas.getContext("2d");
const header = canvas.getBoundingClientRect().top;
ctx.beginPath();
ctx.arc(event.clientX, event.clientY - header, 3, 0, Math.PI * 2, true);
ctx.fill();
let URL = `https://epsg.io/trans?data=${x},${y}&s_srs=2177&t_srs=4326`;
fetch(URL, {
method: "GET",
})
.then((response) => response.json())
.then((data) => {
const x = data.x; //E
const y = data.y; //N
const degreesNorth = Math.floor(y);
const degreesEast = Math.floor(x);
const minutesNorth = Math.floor((y - degreesNorth) * 60);
const minutesEast = Math.floor((x - degreesEast) * 60);
const secondsNorth = Math.floor(
((y - degreesNorth) * 60 - minutesNorth) * 60
);
const secondsEast = Math.floor(
((x - degreesEast) * 60 - minutesEast) * 60
);
const positionText =
"" +
degreesNorth +
"°" +
minutesNorth +
"'" +
secondsNorth +
'"N ' +
degreesEast +
"°" +
minutesEast +
"'" +
secondsEast +
'"E';
//https://www.calculatorsoup.com/calculators/conversions/convert-decimal-degrees-to-degrees-minutes-seconds.php
ctx.font = "20px Arial";
ctx.fillText(positionText, event.clientX + 5, event.clientY - header);
navigator.clipboard.writeText(positionText);
});
}
}