yeswiki
yeswiki copied to clipboard
Bazar : rendre identifiables les fiches visibles dans les boundaries de la carte
Type of issue (keep only one) / Type de demande (ne garder qu'une ligne) New feature / Nouvelle fonctionnalité
Description
Quand des fiches Bazar sont affichées sur une carte, il n'y a aujourd'hui aucun moyen d'avoir accès aux points qui sont visibles.
Par exemple, sur la capture d'écran suivantes, il y a 101 items de retournés par Bazar, mais seuls les 2 affichés m'intéressent :

Suggestion(s) :
- mettre à jour avec les valeurs de
data-id_fiche(ex :<div id="bazar-list-1" class="bazar-list" data-visible-id_fiche="FoyerRuralPlaisance,EpicerieChezAlexandreStGervaisSurMare2" data-template="map-min.tpl.html">) - émettre un événement avec les données des fiches sur la liste concernée :
var map = new L.Map(\'osmmapform\', {
scrollWheelZoom:'.$GLOBALS['wiki']->config['baz_wheel_zoom'].',
zoomControl:'.$GLOBALS['wiki']->config['baz_show_nav'].'
});
+
+ function broadcastChange ({ map }) {
+ return (event) => {
+ var mapPane = map.getPane('mapPane')
+
+ var bounds = map.getBounds()
+ var visibleMarkers = getMarkers().filter(marker => bounds.contains(marker.getLatLng())
+ $(mapPane).trigger('bazar:selected-items', visibleMarkers)
+ }
+ }
+
+ map.on('zoomend', broadcastChange({ map }))
+ map.on('moveend', broadcastChange({ map }))
var geocodedmarker;
Et dans un autre script :
$('.bazar-list .leaflet-map-pane).on('bazar:selected-items', (items) => console.log(items)
ok, intéressant, après je m'interroge sur le comportement de data-id_fiche dans le cas de cartes avec des centaines voire des milliers de point, aussi a quel point les clusters marchent avec cette proposition, et enfin, comment trigger ce changement en cas de filtrage avec les facettes.
Oui, carrément intéressant.
Visiblement, en HTML y'a pas eu de limites de longueurs d'attributs. Des personnes ont testé, et 10 millions de caractères/100Ko de JS dans un attribut passaient tranquille.
Côté JS, si la carte supporte plusieurs milliers de points en affichage, ça se gèrera en événement (surtout si ça apparaît à la fin d'un déplacement, et pas pendant).
Ça peut aussi se gérer avec une limite arbitraire (tel niveau de zoom minimum et/ou un nombre max d'éléments présents à l'écran).
tu voudrais ça pour faire du custom code en fonction des fiches visibles? Je pense que c'est un peu trop spécifique pour être implémenté. En plus on peut faire un workaround un peu moche avec un timer qui check toutes les secondes les points visibles