diff --git a/public/views/js/d.map.js b/public/views/js/d.map.js
index 092c0e0..724093f 100755
--- a/public/views/js/d.map.js
+++ b/public/views/js/d.map.js
@@ -43,6 +43,13 @@ $(document).ready(function() {
layers: [topo_maptiler]
}).setView([47, 3], 6);
+ // Pane dédiée pour les vector tiles, au-dessus du fond
+ if (!mymap.getPane('vectorPane')) {
+ mymap.createPane('vectorPane');
+ mymap.getPane('vectorPane').style.zIndex = 650;
+ mymap.getPane('vectorPane').style.pointerEvents = 'auto';
+ }
+
$("#map-credits").html(topo_maptiler.getAttribution());
poiLayer = L.layerGroup().addTo(mymap);
@@ -58,16 +65,16 @@ $(document).ready(function() {
let shapeSvg;
if (shape === 'triangle') {
- const p1 = `${w/2},${inset}`, p2 = `${w-inset},${h-inset}`, p3 = `${inset},${h-inset}`, points = `${p1} ${p2} ${p3}`;
- shapeSvg = `
-
-
- `;
+ const p1 = `${w/2},${inset}`, p2 = `${w-inset},${h-inset}`, p3 = `${inset},${h-inset}`, points = `${p1} ${p2} ${p3}`;
+ shapeSvg = `
+
+
+ `;
} else {
- shapeSvg = `
-
-
- `;
+ shapeSvg = `
+
+
+ `;
}
const svg = ``;
@@ -75,11 +82,11 @@ $(document).ready(function() {
}
function getPoiStyle(type) {
- if (window.poi_style_map && window.poi_style_map[type]) {
- return window.poi_style_map[type];
- }
- // Final hardcoded fallback (keeps previous defaults)
- return { color: "#ef2929", size: 14, shape: "square" };
+ if (window.poi_style_map && window.poi_style_map[type]) {
+ return window.poi_style_map[type];
+ }
+ // Final hardcoded fallback (keeps previous defaults)
+ return { color: "#ef2929", size: 14, shape: "square" };
}
function buildPoiVectorIcon(properties) {
@@ -101,6 +108,7 @@ $(document).ready(function() {
{
maxZoom: 9,
rendererFactory: L.svg.tile,
+ pane: 'vectorPane',
vectorTileLayerStyles: {
pois: function(properties, zoom) {
var icon = buildPoiVectorIcon(properties);
@@ -183,6 +191,15 @@ $(document).ready(function() {
$("#map-credits").html(
e.layer.getAttribution()
);
+
+ if (mymap.hasLayer(vectorLayer)) {
+ if (vectorLayer.bringToFront) {
+ vectorLayer.bringToFront();
+ } else {
+ mymap.removeLayer(vectorLayer);
+ mymap.addLayer(vectorLayer);
+ }
+ }
});
// ---------------------------------------------------------
@@ -190,63 +207,63 @@ $(document).ready(function() {
// ---------------------------------------------------------
function loadVisiblePois() {
- if (mymap.getZoom() < 10)
- return;
+ if (mymap.getZoom() < 10)
+ return;
- var b = mymap.getBounds();
- var currentZoom = mymap.getZoom();
+ var b = mymap.getBounds();
+ var currentZoom = mymap.getZoom();
- // helper local : construit un L.Icon en fonction du type et du zoom
- function getMarkerIconFor(type, zoom) {
- var size = (zoom > 11) ? 32 : 24;
+ // helper local : construit un L.Icon en fonction du type et du zoom
+ function getMarkerIconFor(type, zoom) {
+ var size = (zoom > 11) ? 32 : 24;
- return L.icon({
- iconUrl: window.poi_icons[type],
- iconSize: [size, size],
- iconAnchor: [Math.floor(size / 2), size],
- popupAnchor: [0, -size]
- });
- }
+ return L.icon({
+ iconUrl: window.poi_icons[type],
+ iconSize: [size, size],
+ iconAnchor: [Math.floor(size / 2), size],
+ popupAnchor: [0, -size]
+ });
+ }
- $.getJSON(
- root + "poi/api_bbox",
- {
- north: b.getNorth(),
- south: b.getSouth(),
- east: b.getEast(),
- west: b.getWest()
- },
- function(pois) {
- poiLayer.clearLayers();
+ $.getJSON(
+ root + "poi/api_bbox",
+ {
+ north: b.getNorth(),
+ south: b.getSouth(),
+ east: b.getEast(),
+ west: b.getWest()
+ },
+ function(pois) {
+ poiLayer.clearLayers();
- pois.forEach(function(poi) {
- var markerIcon = getMarkerIconFor(poi.type, currentZoom);
+ pois.forEach(function(poi) {
+ var markerIcon = getMarkerIconFor(poi.type, currentZoom);
- var marker = L.marker(
- [poi.lat, poi.lon],
- {
- icon: markerIcon
- }
- );
+ var marker = L.marker(
+ [poi.lat, poi.lon],
+ {
+ icon: markerIcon
+ }
+ );
- marker.bindTooltip(
- poi.name,
- {
- direction: "top",
- offset: [0, -10],
- opacity: 0.9,
- className: "poi-tooltip"
- }
- );
+ marker.bindTooltip(
+ poi.name,
+ {
+ direction: "top",
+ offset: [0, -10],
+ opacity: 0.9,
+ className: "poi-tooltip"
+ }
+ );
- marker.on("click", function() {
- window.location = root + "poi/" + poi.permalink;
- });
+ marker.on("click", function() {
+ window.location = root + "poi/" + poi.permalink;
+ });
- poiLayer.addLayer(marker);
- });
- }
- );
+ poiLayer.addLayer(marker);
+ });
+ }
+ );
}
// ---------------------------------------------------------