Polyline dynamique pour le pluggin leaflet

Bonsoir,
je joue actuellement avec le plugin leaflet pour afficher des trajets de missions (dans le Sahara).
L’idée est d’avoir un tiddler par lieu (donc avec un field « point »), puis de pouvoir définir un chemin (polyline) comme une liste ordonnée de tiddler.
Pour le moment, je ne trouve pas la solution…

j’ai testé plusieurs approches (sans succès) :

  • list-tagged-draggable -> tagger les lieux avec le nom du trajet. Permet d’ordonner les lieux facilement, mais ne permet pas le doublon (donc pas moyen de revenir au point de départ), et ne donne qu’une liste de tiddler, pas de points
  • list : si la liste ordonnée est dans le field « list », alors l’appel à $list permet d’avoir la liste des localisations, mais je n’arrive pas à stocker cela dans un field « polyline » (automatiquement)
    <$list filter=[enlist{!!list}]>{{!!point}} </$list>
  • utiliser la sortie d’un listing dans une variable (cf. ci dessus) -> pas réussi
  • transclusion du tiddler en utilisant un tiddlerTemplate -> affiche ce que je veux, mais je n’arrive pas à le stocker dans le field « polyline »

bref, je cherche, mais si vous avez une idée géniale…

bien à vous
Lh.

Bonjour,

c’est un sujet intéressant qui pousse malheureusement le plugin (trop) loin dans ses retranchements. Tel que défini aujourd’hui il fait déjà beaucoup MAIS

  1. Il a beaucoup de mal à gérer les erreurs de syntaxe et est très chatouilleux là dessus…
  2. Il n’est pas conçu pour intégrer les coordonnées générées dynamiquement

Mes tests ont tous échoué en tout cas. Par rapport aux tiens une première piste :

  • Pour le filtre enlist, il génère une liste de points qui finit par un espace. C’est sur que le plugin n’en voudra pas. On peut contourner le problème en utilsant +[butlast[]] et [+last[]]:
    <$list filter="[enlist{!!list}]+[butlast[]]">{{!!point}} </$list><$list filter="[enlist{!!list}]+[last[]]">{{!!point}}</$list>

Cela dit à mon avis ça plante…

Bon j’essaye de réfléchir encore un peu

Sylvain
@sycom

Bonsoir,
merci pour ta réponse rapide. Je me doute que je chatouille les limites… je vais voir ce que je peux en faire (et je ne comprends pas tout de TW, loin s’en faut…).
J’ai des idées, et j’essayerai de faire un exemple quelque part.

Merci pour le tuyau, je garde dans un coin.
Pour le côté chatouilleux dans les erreurs de syntaxes, j’ai remarqué… mais on s’accommode très vite, c’est pas un soucis :grin:

A suivre, et encore merci pour le plugin !
Ch.

Hello,

j’ai bien regardé et je confirme qu’il ne sera pas possible - sans réécrire massivement le code du plugin - d’intégrer la construction dynamique que tu décris.

Pour dépanner je peux te proposer un tiddler qui fabrique des tiddlers de polyligne à partir d’un tag (dans l’exemple que je fournis, mais tu peux bricoler le filtre). Le code à récupérer pour un tiddler est après la signature. Pour l’heure ça reste un peu artisanal, mais on touche aux limites de ce qu’on peut faire en syntaxe wiki.

Espérant que ça aide… À plus.

Sylvain
@sycom

title: PolylineCreator
type: text/vnd.tiddlywiki
creator: @sycom
\define polyCoordFilter() [tag[$(tag)$]has[point]get[point]sort[$(sort)$]butlast[]addsuffix[ ]] [tag[$(tag)$]has[point]get[point]sort[$(sort)$]last[]]

\define polyCoord() <$list filter="[tag[$(tag)$]has[point]get[point]sort[$(sort)$]butlast[]addsuffix[ ]][tag[$(tag)$]has[point]get[point]sort[$(sort)$]last[]]">{{!!title}}</$list>

This form will help you build a polyline from your own set of geoTiddlers containing a `point` field. Define the set from a tag or from a word

!! Set your tag and sort field

* tag : <$edit-text tiddler="$:/temp/polylineTag" tag="input" default="your tag"/>
* sort by: <$edit-text tiddler="$:/temp/polylineTag" field="sort" tag="input" default="none"/>

<$set name="tag" value={{$:/temp/polylineTag}}>
<$set name="sort" value={{$:/temp/polylineTag!!sort}}>
<$set name="coord" value=<<polyCoord>>>

!! Get your coordinates
<textarea style="width:100%" rows="5"><<coord>>
</textarea>
''select all, copy and paste below''

<$edit-text tag="textarea" rows="5" tiddler="$:/temp/newPolylineCoord"  field="polyline" default="paste above value here" />

!! Push it to a geoTiddler

* Tiddler title : <$edit-text tiddler="$:/temp/newPolylineTiddler" tag="input" default="new polyline" emptyValue="new polyline"/>

<div style="text-align:center">
<$button>
<$action-createtiddler $basetitle={{$:/temp/newPolylineTiddler}} polyline={{$:/temp/newPolylineCoord!!polyline}} text=" " tag="test" />
Create polyline geoTiddler
</$button></div>

</$set></$set></$set>

Bonjour,
merci beaucoup pour cette réponse, et désolé pour ma réponse tardive (paradoxalement, avec le confinement, j’ai moins de temps pour ça).
Je vais regarder et essayer de l’utiliser. Quand j’ai un truc qui tient la route, j’essayerai de faire une démo…
merci beaucoup pour tes idées et ton temps !
à suivre,
Ch.