feat(figures): mettre en avant le point de l'organisme consulté sur la carte
Marque is_home=True sur les marqueurs du home_type (acheteur ou titulaire selon la page) dans get_org_location_map. Côté client, pointToLayer donne à ce point un rayon légèrement plus grand (8 vs 5) et le ramène toujours au premier plan (bringToFront), indépendamment de l'ordre des couches.
This commit is contained in:
@@ -1,14 +1,23 @@
|
||||
window.dash_clientside = Object.assign({}, window.dash_clientside, {
|
||||
leaflet: {
|
||||
pointToLayer: function (feature, latlng, context) {
|
||||
return L.circleMarker(latlng, {
|
||||
radius: 5,
|
||||
const isHome = Boolean(feature.properties.is_home);
|
||||
const marker = L.circleMarker(latlng, {
|
||||
radius: isHome ? 8 : 5,
|
||||
fillColor: feature.properties.marker_color,
|
||||
color: "white",
|
||||
weight: 1,
|
||||
opacity: 1,
|
||||
fillOpacity: 0.8,
|
||||
}).bindTooltip(feature.properties.tooltip);
|
||||
// Le point de l'organisme consulté (is_home) doit toujours passer
|
||||
// au-dessus de ses contreparties, quel que soit l'ordre des couches.
|
||||
if (isHome) {
|
||||
marker.on("add", function () {
|
||||
marker.bringToFront();
|
||||
});
|
||||
}
|
||||
return marker;
|
||||
},
|
||||
clusterToLayer: function (feature, latlng, index, context) {
|
||||
console.log(feature);
|
||||
|
||||
+5
-2
@@ -582,6 +582,8 @@ def get_org_location_map(
|
||||
"acheteur": build_org_markers(lff, "acheteur"),
|
||||
"titulaire": build_org_markers(lff, "titulaire"),
|
||||
}
|
||||
for marker in markers_by_type[home_type]:
|
||||
marker["is_home"] = True
|
||||
|
||||
ns = Namespace("dash_clientside", "leaflet")
|
||||
point_to_layer = ns("pointToLayer")
|
||||
@@ -589,8 +591,9 @@ def get_org_location_map(
|
||||
|
||||
layers: list = [dl.TileLayer()]
|
||||
all_points: list[tuple[float, float]] = []
|
||||
# Ordre fixe (titulaire puis acheteur), comme sur /observatoire : la
|
||||
# couche acheteur est toujours peinte au-dessus, quel que soit home_type.
|
||||
# Ordre fixe (titulaire puis acheteur), comme sur /observatoire. Le point
|
||||
# de l'organisme consulté (is_home) est de toute façon toujours ramené au
|
||||
# premier plan côté client (pointToLayer, dash_clientside.js).
|
||||
for org_type in ("titulaire", "acheteur"):
|
||||
markers = markers_by_type[org_type]
|
||||
if not markers:
|
||||
|
||||
Reference in New Issue
Block a user