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 »