Comment gérez-vous la localisation ?

Comment procédez-vous

  • Listes déroulantes

    Votes: 0 0.0%
  • Code postal

    Votes: 0 0.0%
  • Auto-complétion

    Votes: 0 0.0%
  • Autre

    Votes: 0 0.0%

  • Total voters
    0
WRInaute passionné
Bonjour,

Quand le visiteur doit indiquer une ville, comment procédez-vous ?

1/ Listes déroulantes dépendantes (Pays > Régions > Départements > Ville)
2/ Saisie du code postal
3/ Auto-complétion sur le nom de la ville
4/ Autre

Merci d'indiquer la méthode utilisée et surtout la solution (code perso, API, ...).

Dorian
 
WRInaute impliqué
Salut,

Petit commentaire : plusieurs communes sont susceptibles d'avoir le même code postal, en fonction de leur taille et de leur proximité. Exemple : 66120 = Font Romeu Odeillo Via OU Egat OU Targasonne
 
WRInaute passionné
Bonne remarque, il faudrait donc gérez de l'auto-complétion pour proposer les communes d'un même code postal.

Dommage que ce topic n'intéresse pas plus de personne, c'est un besoin récurrent que je rencontre sur beaucoup de projets.

Merci
 
WRInaute accro
auto completion avec code insee comme ID (unique)
voir "accès à votre commune" sur la home du site d'actu dont je m'occupe
 
WRInaute passionné
Pas trop difficile à gérer le référentiel des communes ?
Sont-elles amenées à changer ? Comment gérer les autres pays ?

Personne n'utilise une API tierce (Google Maps, ou autre... ) ?
 
WRInaute accro
C'est pas des topics à succès, je pense qu'il faudrait mettre "Mise à jour du PR" dans le titre :mrgreen:
 
WRInaute impliqué
dorian53 a dit:
À partir de quelles de données tu travailles pour l'auto-complétion ?


Bien j'ai toutes les villes en base de donnée sqlite et j'effectue une requête en ajax.
J'ai récupéré une liste sous format CSV sur un site dont j'ai pu l'adresse en tête, le problème c'est que ces listes sont rarement à jour, mais fonctionnelles pour 99.99% des situations.
 
WRInaute passionné
WRInaute passionné
dorian53 a dit:
spout a dit:

Extra, je pense partir sur ce genre de solution.
En revanche c'est limité à 2500 requêtes par ip (donc serveur).
Quelqu'un a-t-il déjà contact un commercial Google ou a une idée du tarif de licence d'un compte premium ?

Merci
Oui pas de soucis Marie-Aude, je vais également proposer auto-complétion l'utilisateur n'aura qu'à choisir.

En revanche pour ceux qui ont mis en place l'AJAX, vous n'êtes pas restreint par le nombre de requêtes ?
Car en plus si vous interrogés le Web Service à chaque saisie d'une lettre au clavier, la limite de 2500 ça va être vite atteinte.
Non "spout" ?
 
WRInaute passionné
spout a dit:
Si c'est en AJAX et que c'est bien 2500 requêtes par IP, donc pr chaque visiteur qui utilisera le form. Il faut déjà y aller pr atteindre cette limite.

Ca va vite parce qu'en Web Service, l'IP limitée c'est celle du serveur qui requête.
Non ?
 
WRInaute accro
Oui avec les requêtes geocoding depuis un script PHP, ce sera l'IP du serveur qui compte.
Mais rien ne t'empêche de sauvegarder tout le retour JSON via l'autocomplete (champ hidden par exemple).

Dans un script où j'utilise l'autocomplete, ça remplis des champs hidden: latitude, longitude, pays, ville, codepostal.
Ensuite au traitement/sauvegarde des données, je fais qd même une requête geocoding via PHP afin d'avoir tous les "address_components", que je sauvegarde en format serializé (comme je disais, cette requête supplémentaire pourrait être évitée).
 
WRInaute passionné
Ok mais à chaque lettre saisie = 1 requête.

M -> 1 requête
A -> 1 requête
R -> 1 requête
S -> 1 requête
E -> 1 requête
I -> 1 requête
lle -> OK...

Donc une saisie de ville peut coûter N requêtes x N utilisateurs.
Un site avec un peu de trafic peut rapidement atteindre la limite.
 
WRInaute accro
oui, mais comme le disait spout, les requêtes étant effectuées en ajax, directement depuis le navigateur, l'ip prise en compte serait celle de l'internaute, normalement, donc pour dépasser le quota, il faudrait que l'internaute reste longtemps sur ton site.
A vérifier...
 
WRInaute passionné
Leonick a dit:
oui, mais comme le disait spout, les requêtes étant effectuées en ajax, directement depuis le navigateur, l'ip prise en compte serait celle de l'internaute, normalement, donc pour dépasser le quota, il faudrait que l'internaute reste longtemps sur ton site.
A vérifier...

Oké merci !

Je ne sais pas pourquoi je partais sur un clic bouton avec requête PHP par serveur... la fatigue.
 
WRInaute passionné
Etape suivante, maintenant comment gérez-vous le calcul de distance entre vos villes ?
Par exemple : je veux toutes les villes à moins de 50km de Paris.

Que pensez-vous de ce genre de solution ?
http://www.phpsources.org/calcul-de-la-distance-entre-deux-coordonnees ... l_101.html

N'est-ce pas trop lourd à supporter comme calcul "temps réel à chaque requête" si l'on imagine une base de plusieurs milliers de villes ?

Avez-vous d'autres solutions ?
 
WRInaute occasionnel
Perso je suis sur de l'autocomplétion avec les ID INSEE pour ne pas avoir le probleme de "doublon" code postal avec plusieurs villes
 
WRInaute passionné
Leonick a dit:
spout a dit:
j'ai du mal à comprendre le fonctionnement, car $formule semble être calculé en php, ça fait donc un mélange php/sql
la méthode http://www.phpsources.org semble plus adaptée

Au final ça revient au même, là tout est fait par le SGBD. Même s'il pourrait y avoir une partie des calculs déportés en PHP mais l'autre à partir des champs MySQL "lat" et "lon".
Donc "spout" tu es concerné par le "problème" de charge. Sur une grosse base ça va recalculer N distances à chaque requête.

Sinon il y a la solution de stocker en dur la distance entre toutes les villes (en limitant les distances < à 200 km par exemple).

Qu'en pensez-vous ?
 
WRInaute accro
@Leonick: non la formule avec les sinus/cosinus est en MySQL, c'est juste $latitude et $longitude qui sont passés en paramètres à la requête SQL.

@dorian53: pour le problème de charge, n'ayant pas encore bcp d'enregistrements, je ne vois pas de problèmes, j'utilise cette formule juste pr afficher "Autres activités dans les environs":
http://bit.ly/gcbJxR
Et de plus cette requête SQL est mise en cache de données.
 
WRInaute accro
La requête geocoding ne permet la recherche que sur toute l'adresse (paramètre address), le seul moyen c'est de voir si le type est "locality" (via results[0].types ou results[0].address_components) et de remplir l'autocomplete (le return).
 
Discussions similaires
Haut