Géolocalisation via liste de communes

Bonjour !

Petit sujet sur la géolocalisation : pour faciliter la saisie dans le formulaire, nous importons une liste de communes pré-formatée.
Afin d’appeler la commune sélectionnée dans la géolocalisation, on avait une petite bidouille sur le fichier MapField.php… mais c’est pas top, surtout pas stable… bref…

Y’aurait-t-il un moyen :

  • que le champs « bf_ville » accepte une liste de choix et pas que du texte ?
  • d’ajouter un champ « texte » caché qui récupère la valeur sélectionnée dans la liste ?
  • appeler la variable sélectionnée à la place du « town » utilisé dans le js ? (mais où ? et là on revient à de la bidouille moche…)

Si vous avez des idées, merci d’avance ! :slight_smile:

1 « J'aime »

Bonjour @CamilleA ,
Il faudrait faire du sur mesure dans ton cas, pas sur de pouvoir faire du « propre ».

Normalement le champ bf_ville est utilisé comme champ par défaut pour town dans la géolocalisation (et sinon c’est changeable dans les paramètres du champ de géolocalisation).

On peut faire une liste « Villes » contenant les villes et en faisant en sorte que la clé soit le nom de la ville.
Ajouter cette liste de villes au formulaire, cela devrait faire un identifiant de champ comme listeListeVilles (a vérifier), et un champ caché bf_ville

puis faire un javascript sur mesure qui lors du changement de ville, copie la valeur dans le champs caché bf_ville, un truc du genre :

$('#listeListeVilles').on('change', function() {
 $('#bf_ville').val($(this).val());
});

C’est vraiment juste une base pour le principe qu’il faudrait solidifier et tester à fond avant de s’appuyer dessus.

Merci pour ta réponse !
Je vais tester :slight_smile:

Et voici donc la réponse :

Pour sélectionner les communes à partir d’une liste déroulante :

  • création d’une liste grâce à vos géomaticiens préférés avec code_insee + nom_commune
  • ajout d’un champ « texte » dans le formulaire qui récupèrera la sélection et qu’on cachera à l’utilisateur ensuite. On le nomme intelligemment « bf_ville ».
  • petit script à ajouter ensuite dans la page de saisie du formulaire :
document.getElementById("listeListeCommunesbf_commune").addEventListener('change', function () {
    commune_select = document.getElementById("listeListeCommunesbf_commune") ;
    textComSelect = commune_select.options[ commune_select.selectedIndex ].text;

    document.getElementById("bf_ville").value = textComSelect;
});


Variante pour @edmondw qui te dit "mouiiiiii mais avec des boutons radio c’est plus beeeaaauuuuu non ? " :yum:

Pour sélectionner les communes à partir de boutons radio :

  • création d’une liste mais ATTENTION au lieu de « code_insee »:« nom_commune » il faut « nom_commune »:« nom_commune »
    (et ça, ça fend le cœur des geomaticiens :broken_heart:)
  • idem le champs texte de récup’ « bf_ville »
  • et le petit script :
var radios = document.querySelectorAll('input[type=radio][name="radioListeCommunesRadiobf_commune"]');
    radios.forEach(radio => radio.addEventListener('change', () => document.getElementById("bf_ville").value = radio.value));

Si vous avez des idées pour faire plus simple je suis preneuse, mais ça fait le job. A tester si c’est écrabouillé par les màj…

2 « J'aime »

'sieur-dames bonjour

Hum ça m’a l’air fort bien tout ça mais heu… pas à la porté de l’utilisateur que je suis. :flushed:

Je m’apprêtais à importer une liste des communes de la Loire avec un bête CSV code_insee;nom_commune
dans les Listes de « mon » YesWiki, sauf que semble-t’il c’est pas une fonction proposée ça, la création de listes par import (sauf venant d’un autre YesWiki). :sob:

Si @CamilleA et @edmondw sont impliqué là-dedans je me dis qu’avec un peu de bol, ça concerne des wikis liés à la méd. num. en région AuRA.

J’ai vu que dans le Bazar de la carto Hinaura, il y avait une Liste « Communes Savoie ». Est-ce que la conversation ci-dessus concerne la création de cette liste ?

Est-ce qu’il faut avoir des techs sous la main pour aller bidouiller du code (php ? JS ?) pour reproduire la création de ces listes de communes ?

Bonjour bonjour !
Ici nous avions besoin de lier une liste de commune à la géolocalisation : c’est pour cela qu’on a ajouté une petite bidouille en javascript.

Mais s’il te faut juste une liste de commune, il est possible d’ajouter assez simplement beaucoup de choix comme pour nous l’ensemble des communes de Savoie :

  • créer une nouvelle liste, avec 1 première commune > cela permet de créer la page qui contiendra les données de la liste.
  • ouvrir cette nouvelle page > on la retrouve nomduwiki/?IDdemaliste. Je vais voir ici la commune ajoutée précédemment avec le formatage qui va bien. {"titre_liste":"Communes Savoie","label":{"73001":"Aiguebelette-le-Lac"}}
  • à partir d’un excel ou csv, on peut ajouter à la suite toutes nos communes, en respectant le formatage "IDdeliste":"labeldecommune",...
    ça donne :
    {"titre_liste":"Communes Savoie","label":{"73001":"Aiguebelette-le-Lac","73002":"Aiguebelle (Val-d\u2019Arc)","73003":"Aigueblanche (Grand-Aigueblanche )","73004":"Aillon-le-Jeune","73005":"Aillon-le-Vieux","73006":"Aime (Aime-la-Plagne)","73007":"Aiton",...,"73330":"Yenne"}}
    Et hop, en enregistrant la page la liste est complétée !

J’espère que ça répond à la question !

Merci Camille.

J’essaye ça et je vous tiens au courant (et dans la foulée je rédige la doc. qui va bien)

Super, ça fonctionne.

Le plus compliqué, en l’état de mes connaissances et de mes outils, a été d’obtenir le bon formatage (en bidouillant l’export depuis Libre Office Calc complété avec un Rechercher-Remplacer dans mon éditeur de texte).

Note : J’ai un petit doute sur l’encodage des caractères :

la saisie manuelle du premier enregistrement de la liste, « Aböen » avec son joli son O tréma, s’affiche dans la page YesWiki comme

Abo\u00ebn

mais j’ai copié-collé dans la page tout le reste du texte (encodé en UTF8 à l’export en csv) avec les accents, et tout semble fonctionner correctement pour l’instant.