Design pattern: "distances sur GG Maps"

Discussion dans 'YouTube, Google Images et Google Maps' créé par bucheron, 25 Septembre 2008.

  1. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
    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
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 748
    J'aime reçus:
    18
    Peut-être en se tournant vers cette fonction PHP:
    Code:
    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);
    }
    
     
  3. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
    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.
     
  4. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    22 709
    J'aime reçus:
    0
    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.
     
  5. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
    mais y aurait il une autre solution ?

    ou peut être une autre approche ? (genre structurer la base de données différemment)
     
  6. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
    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.
     
  7. OTP
    OTP Modérateur
    Inscrit:
    16 Décembre 2005
    Messages:
    20 161
    J'aime reçus:
    0
    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...
     
  8. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
  9. jpw
    jpw WRInaute discret
    Inscrit:
    23 Juin 2008
    Messages:
    160
    J'aime reçus:
    0
    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
     
  10. bucheron
    bucheron WRInaute discret
    Inscrit:
    16 Juin 2006
    Messages:
    131
    J'aime reçus:
    0
    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 ?
     
  11. jpw
    jpw WRInaute discret
    Inscrit:
    23 Juin 2008
    Messages:
    160
    J'aime reçus:
    0
    ben vu que les coordonnées proviennent de mes fichiers....

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