Messages: 132

Enregistré le: 16 Juin 2006

Message le Jeu Sep 25, 2008 13:36

Bonjour à tous,

je suis en train de développer un projet qui va utiliser google map.
J'utilise une base de données d'annonces. chaque annonce est géolocalisé par longitude/latitude.
Je souhaite chercher en fonction d'un endroit les annonces qui sont dans un périmètres de X km (X étant une variable).

Quel est selon vous le design pattern le mieux adapté ?
Connaissez vous un articles ou tuto qui traite de cette problématique ?

D'avance merci
Haut
10 Réponses
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Jeu Sep 25, 2008 17:09

Peut-être en se tournant vers cette fonction PHP:
Code: Tout sélectionner
function getGPSDistance($long1, $lat1, $long2, $lat2)
{
   $earth_radius = 6367000;   // Terre = sphère de 6367km de rayon
   $rlo1 = deg2rad($long1);
   $rla1 = deg2rad($lat1);
   $rlo2 = deg2rad($long2);
   $rla2 = deg2rad($lat2);

   $dlo = ($rlo2 - $rlo1) / 2;
   $dla = ($rla2 - $rla1) / 2;
   $a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
   $d = 2 * atan2(sqrt($a), sqrt(1 - $a));

   return ($earth_radius * $d);
}
Haut
Messages: 132

Enregistré le: 16 Juin 2006

Message le Jeu Sep 25, 2008 17:17

est ce qu'il serait possible de le tourner autrement.

En prenant une longitude et latitude de référence, il faudrait pouvoir récupérer une plage de longitude/latitude en fonction d'une distance.

Car la fonction m'oblige à effectuer une requete pour chaque entrée dans ma base.
Haut
Messages: 22678

Enregistré le: 8 Aoû 2004

Message le Ven Sep 26, 2008 22:32

bucheron a écrit:est ce qu'il serait possible de le tourner autrement.

En prenant une longitude et latitude de référence, il faudrait pouvoir récupérer une plage de longitude/latitude en fonction d'une distance.

Car la fonction m'oblige à effectuer une requete pour chaque entrée dans ma base.
ben non, car une distance a un point est représentée par un cercle. Je te laisse alors imaginer le nombre de couples longitude/latitude que cela représente.
Haut
Messages: 132

Enregistré le: 16 Juin 2006

Message le Sam Sep 27, 2008 13:59

mais y aurait il une autre solution ?

ou peut être une autre approche ? (genre structurer la base de données différemment)
Haut
Messages: 132

Enregistré le: 16 Juin 2006

Message le Lun Sep 29, 2008 20:55

je ne sais pas si vous connaissez, mais prenons l'exemple du site http://www.adopteunmec.com (concept assez marrant au passage). Ce site vous propose de rechercher les filles (et oui c est un site de rencontre) , par rapport à votre localisation, qui sont à X kilomètres de vous. (fonction présente dans la partie recherche).

J'ai trouvé cette idée très astucieuses, d'ou mon post.
Donc apparemment c'est possible, mais comment font il ?
Je ne pense pas qu'ils vont effectuer une requete sur chaque fille dans la BDD.

Quand pensez vous.

PS: désolé mais pour voir la fonctionnalité il faut s'inscrire.
Haut
Messages: 20170

Enregistré le: 16 Déc 2005

Message le Lun Sep 29, 2008 21:39

bucheron a écrit:Quand pensez vous.


Plutôt le matin... :roll:

A mon avis, comme dit plus haut avec un cercle à gérer, pas le choix, il faut passer par un test à chaque enregistrement.
Ou alors raisonner au premier ordre (avec les développements limités des sin et cos) et faire le calcul dans le WHERE de la requete. A voir si c'est possible.

Edit : pour compenser l'erreur des développements limités, restreindre au préalable avec un carré au lieu d'un cercle. Attention aux bugs aux pôles...
Haut
Messages: 132

Enregistré le: 16 Juin 2006

Message le Mar Sep 30, 2008 13:03

j'ai trouvé un article traitant du sujet. Et justement par rapport à une requète SQL.

Pour le moment je ne peux tester mais j'aurais bien aimé savoir ce que vous en pensez.

Voila l'article:
http://www.awelty.fr/index.php?post/2008/09/24/Afficher-les-villes-a-proximite-dune-ville-de-reference-par-rapport-a-une-distance-en-km-en-SQL-/-PHP
Haut
Messages: 160

Enregistré le: 23 Juin 2008

Message le Mar Sep 30, 2008 13:22

bonjour

j'utilise cette fonction pour un site que je suis en train de refaire

bon, les pages ne sont pas finalisées donc ne m'en voulez pas trop...

bon ça commence là :
(désolé c'est sur l'afrique pas la france)

http://www.revafrique.com/geographie/

soit on tape le nom d'une ville par le nom
soit on choisit un pays pour afficher les principales villes

bon si on suit le choix proposé "dakar"
on voit que le nom existe dans 4 pays

on en choisit un et j'affiche sur la carte les points les plus proches
et j'en fait une liste plus conséquente

bon c'est loin d'être finalisé

j'en encore plein de tracassins à règler
mais ça peut donner une idée

idem ici

http://www.revafrique.com/reserves/limpopo.php

jpw
Haut
Messages: 132

Enregistré le: 16 Juin 2006

Message le Mar Sep 30, 2008 14:46

en effet cela rejoint ce que je recherche.

N'étant pas un connaisseur de l'Afrique, peux tu me dire si la requete sql est pertinente pour les villes recherchés.

en gros si les résultats recherchés sont ceux que tu voulais ou si il y a des différences ?
Haut
Messages: 160

Enregistré le: 23 Juin 2008

Message le Mar Sep 30, 2008 16:39

ben vu que les coordonnées proviennent de mes fichiers....

si c'est pas bon, je dois m'en prendre à moi....
Haut