Déterminer si l'utilisateur est dans la zone géographique donnée

Résolu/Fermé
Heine - 2 mars 2016 à 14:15
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 2 mars 2016 à 16:20
Bonjour à tous et tout d'abord merci de prendre le temps de lire ces quelques lignes !

Voilà, j'ai dans l'idée de mettre au point un site internet qui possédera plusieurs versions, selon la position géographique de l'utilisateur. Je suis encore dans la version Alpha.

J'ai déjà réussi à connaître la position de l'utilisateur. L'idée est que le site possède une page de garde, où un script javascript va voir la position de l'utilisateur puis voir dans quelle zone il se trouve. De là, un lien apparaîtra, le menant vers le site relié à sa position.

Le problème est que justement je ne vois pas du tout comment programmer cette condition... Je ne suis pas bon niveau géographie et je ne vois pas trop comment "vérifier" qu'il se trouve dans un bloc, sachant que j'ai les données longitudes / latitudes de la dite zone (les 4 coins, vu que ça sera surtout des carrés / rectangles / autres polygones à 4 côtés).

En espérant que quelqu'un puisse me venir en aide !

Merci d'avance.

2 réponses

Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
2 mars 2016 à 14:23
Bonjour,

L'adresse Ip est sans doute le meilleur moyen de connaitre la position d'un utilisateur.
0
Déjà d'une, non, l'adresse IP n'est pas le meilleur moyen. Déjà car il peut éventuellement utiliser un proxy et qu'en plus ce n'est pas tout le temps vrai. La technique via la géolocalisation est bien meilleure.

Et ça ne répond pas à ma question. je sais DEJA comment avoir la position de la personne, ce que je cherche c'est comment mettre en place plusieurs "zones géographiques" dont je connais les latitudes / longitudes pour faire des tests et voir si la personne est à l'intérieur.
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
Modifié par Pierre1310 le 2/03/2016 à 14:34
Tu peux rentrer tout ça dans plusieurs tableaux puis faire une analyse.
Chaque tableaux correspondent à une région bien précise.
Pour info, même si il passe par un proxy, le proxy possède son adresse Ip.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
2 mars 2016 à 14:39
Salut,

Le plus simple pour s'y retrouver est d'utiliser un schéma :
pointNO -------------- pointNE
------------------------------
------------------------------
-------------User-------------
------------------------------
------------------------------
pointSO -------------- pointSE

Une zone est donc délimitée par 4 points : Nord Ouest, Nord Est, Sud Ouest et Sud Est (nommé ici pointNO, pointNE, ...). Chaque point est composé d'une latitude et d'une longitude que l'on peut nommé latPointNO, lngPointNO, latPointNE, lngPointNE, ...

Pour que l'utilisateur soit dans la zone, il faut donc que sa latitude soit comprise entre les latitudes des points NO et NE, et que sa longitude soit coimprise entre les longitudes des points NO et SO, soit :
if (latUser >= latPointNO && latUser <= latPointNE && lngUser <= lngPointNO && lngUser >= lngPointSO)


Bonne journée,
0
Tu es sûr ? Ça semble étrange comme manière. SE n'a rien à voir avec le tas, du coup ?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 2/03/2016 à 16:22
Oui le point SE n'est pas utilisé puisque la latitude du point SE est égale à la latitude du point NE et la longitude du point SE est égale à la longitude du point SO.
Donc si la latitude de l'utilisateur est comprise entre la latitude des points NO et NE, elle est forcément comprise dans entre la latitude des points SO et SE.

Ce n'est pas vraiment étrange comme manière, il s'agit des bases de géométrie (pour le cas le plus simple d'un rectangle sans rotation).
0