Projet

Général

Profil

Development #40742

carto, avoir un layer leaflet par layer de carto

Ajouté par Frédéric Péters il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
16 mars 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Aujourd'hui on agrège les couches GeoJSON pour tout servir à partir d'une seule URL (vue "mapcell-geojson").

On pourrait modifier le fonctionnement pour avoir un layer leaflet par couche de données, ça correspond davantage à l'API de leaflet (map.addLayer / map.removeLayer), ça a l'avantage aussi de paralléliser la récupération des données.

On garderait des URL de GeoJSON dans Combo, et ça ferait juste proxy très léger vers les réelles URL, ça évite les blocages qu'il pourrait y avoir à interroger un serveur tiers, c'est nécessaire pour les bouts demandant de l'authentification, etc. (et ça n'empêche pas d'imaginer un jour un paramétrage sur les couches pour y dire d'interroger directement l'URL donnée, plutôt que la charger par l'intermédiaire de Combo).


Fichiers

Révisions associées

Révision 0757cd7f (diff)
Ajouté par Lauréline Guérin il y a environ 4 ans

maps: geojson url per geojson layer (#40742)

Historique

#1

Mis à jour par Lauréline Guérin il y a environ 4 ans

  • Assigné à mis à Lauréline Guérin
#2

Mis à jour par Lauréline Guérin il y a environ 4 ans

J'ai fait des trucs, ça a l'air de marcher, mais je suis quand même pas très sûre de moi :)
Notamment l'histoire du label qui était ajouté dans additional_strings dans la méthode MapLayer.get_geojson, dans le cas de multiples layers, que j'ai fait sauter.

#3

Mis à jour par Frédéric Péters il y a environ 4 ans

Je viens de tester et ça marche bien; il y a juste côté toodego qui attend des trucs particuliers (et dont le js nécessite de toute façon adaptations),

-              if (map.geo_json) map.geo_json.remove();
-              map.geo_json = geo_json;

Ça permettait à toodego de charger un nouveau geojson et que les marqueurs viennent remplacer les anciens; ça ne peut évidemment plus fonctionner ainsi; ma proposition est de conserver un dictionnaire map.geojson_layers pour pouvoir retirer le bon layer; comme aussi côté toodego l'URL du geojson récupéré est modifiée, ça ne peut pas se baser sur celle-ci, il faut donc exposer le slug du layer dans le javascript.

Aussi, le mode "grouper les marqueurs", je me demandais si ça pouvait marcher en faisant des groupes différents par layer mais à tester ça ne fonctionne pas très bien; il y a donc à créer un "L.markerClusterGroup" unique.

J'ai poussé une branche rebasée avec mon commit de review reprenant ces commentaires. (mais je n'y ai pas fait d'éventuelles adaptations aux tests)

Notamment l'histoire du label qui était ajouté dans additional_strings dans la méthode MapLayer.get_geojson, dans le cas de multiples layers, que j'ai fait sauter.

C'est à conserver, c'est #26112, mais ça peut sans doute être réécrit/optimisé, vu qu'on saura que tous les marqueurs du layer correspondront (ou pas).

#4

Mis à jour par Frédéric Péters il y a environ 4 ans

Aussi, autre affaire à cause de Toodego, il faudrait :

     def get_geojson_layers(self):
+        if not self.id:
+            return []

(parce qu'une carte est créée à la volée et affichée sans être enregistrée...).

#5

Mis à jour par Lauréline Guérin il y a environ 4 ans

j'ai inclus ta review et remis le label dans les feature_words (tout le temps du coup, pour éviter de compter les couches à chaque rendu de geojson)

#6

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Solution proposée à Solution validée

Ok pour moi ainsi,

#7

Mis à jour par Lauréline Guérin il y a environ 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 0757cd7fca1b5e4700d692c26c5b03d075f57502
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri Apr 3 11:08:40 2020 +0200

    maps: geojson url per geojson layer (#40742)
#8

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF