From 8a64f94659e2b158089b9b44dab9ef1ca11679b2 Mon Sep 17 00:00:00 2001 From: Troispoils Date: Sat, 21 Sep 2024 17:54:36 +0200 Subject: [PATCH] Add resctangle after clic (landblock rectangle) --- public/scripts/main.js | 3 +- public/scripts/overlays/overlaysCoord.js | 36 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/public/scripts/main.js b/public/scripts/main.js index 17e460d..dbcdbcf 100644 --- a/public/scripts/main.js +++ b/public/scripts/main.js @@ -1,6 +1,6 @@ import InitMap, { map } from "./map.js"; import InitOverlayPoi from "./overlays/overlaysPoi.js"; -import InitOverlayCoord, { UpdateCoord } from "./overlays/overlaysCoord.js"; +import InitOverlayCoord, { RectLandBlock, UpdateCoord } from "./overlays/overlaysCoord.js"; import InitOverlayPlayer from "./overlays/overlaysPlayer.js"; //Init leaflet @@ -12,6 +12,7 @@ InitOverlayCoord(map); map.on("click", function (ev) { UpdateCoord(ev, map); + RectLandBlock(ev, map); }); //Interval Player Overlay diff --git a/public/scripts/overlays/overlaysCoord.js b/public/scripts/overlays/overlaysCoord.js index 700b66e..15180d8 100644 --- a/public/scripts/overlays/overlaysCoord.js +++ b/public/scripts/overlays/overlaysCoord.js @@ -1,6 +1,12 @@ import * as math from "../modules/math.js"; +var boundsMax = [ + [-255, 0], + [0, 255], +]; + var coordOverlay = L.control({ position: "bottomleft" }); +var rectangle = L.rectangle(boundsMax, {color: "#ff7800", weight: 1}); coordOverlay.onAdd = function (map) { this._div = L.DomUtil.create("div", "coordinates-overlay"); @@ -19,6 +25,36 @@ coordOverlay.update = function (coord, cardinal) { + cardinal; }; + +export function RectLandBlock(ev, map) { + rectangle.remove(); + // Latitude et longitude initiales du coin supérieur gauche du rectangle + var latlng = ev.latlng; + + //4352 + var pointATmp = map.project(latlng, 4); + + const blockSize = 16; // Taille d'un bloc + var testReverse = Math.floor((4080 - pointATmp.y) / blockSize); + var pointA = L.point(Math.round(pointATmp.x), Math.round(pointATmp.y)); + const blockX = Math.floor(pointA.x / blockSize) * 16; + const blockY = Math.floor(pointA.y / blockSize) * 16; + + var landX = blockX / 16; + + var pointAn = L.point(blockX, blockY); + var pointB = L.point(blockX + blockSize, blockY + blockSize); + console.log(pointAn, pointB); + var latlngA = map.unproject(pointAn, 4); + var latlngB = map.unproject(pointB, 4); + + // Création du rectangle + var bounds = L.latLngBounds(latlngA, latlngB); + rectangle = L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map) + .bindPopup("LandBlock : 0x" + landX.toString(16).toUpperCase().padStart(2, '0') + + "" + testReverse.toString(16).toUpperCase().padStart(2, '0') + "FFFF"); +} + export function UpdateCoord(ev, map) { coordOverlay.update(math.GetLandBlockId(ev, map), math.coordToCardinal(ev.latlng.lat, ev.latlng.lng)); }