PHPBBIntegrare PHPBB PHPFunzioni PHP CFunzioni C EcologiaLa mia ecologia   Chi siamoChi è Senamion HomeHome page corner Il Web e l'ecologia

Senamion


Chi siamo:

Il web e l'ecologia, condividere il web e un momento di riflessione sullo stato dell'ecologia e sul suo futuro

Google

[Google MAPS] Come trovare le località ad una certa distanza da un punto

30 Marzo 2007 by Giovanni | Argomenti: none | 18224

Utilizzando Google MAPS e altri sistemi satellitari ci si rende conto di avere a disposizione una serie di informazioni utilissime.

Supponendo di avere una tabella luoghi con almeno i seguenti campi:

  • latitudine
  • longitudine

E di dover cercare tutti i luoghi a meno di $dist metri da un punto di coordinate $lat e $long, possiamo fare una query sul data base di questo tipo:

$query = "SELECT *, TRUNCATE ( 6363 * sqrt( POW( RADIANS($lat) - RADIANS(l.latitudine) , 2 ) + POW( RADIANS($long) - RADIANS(l.longitudine) , 2 ) ) , 3 ) AS dist FROM luoghi AS l WHERE TRUNCATE ( 6363 * sqrt( POW( RADIANS($lat) - RADIANS(l.latitudine) , 2 ) + POW( RADIANS($long) - RADIANS(l.longitudine) , 2 ) ) , 3 ) < $dist ORDER BY dist ASC";

Nella select ci viene ritornato, oltre ai campi della tabella, un campo dist in cui avremo la distanza in chilometri (con i decimali) tra i due punti (quello passato alla query e quello trovato). Con una semplice fetch sui risultati della query potremo visualizzare tutti i punti in ordine di distanza e con la distanza in metri.
Occorre solo notare che le distanze sono in linea d’aria, quindi non tengono in considerazione dell’orografia del territorio o delle strade.

Chiaramente tutte questi punti potremo inserirli all’interno di una mappa di google maps con tutte le informazioni presenti nella tabella e la distanza dal punto “di interesse”.

Ecco infine una semplicissima funzione per trasformare le distanze in metri in formato leggibile:

// // FUNZIONE CHE CONVERTE LA DISTANZA IN metri O chilometri // function strDist($dist) { if ($dist == 0) return(""); else return(($dist < 1) ? ("" . (int) ($dist * 1000) . " m.") : "$dist Km."); }

Pubblicato in Di google un po', Google Maps |

13 Commenti a “[Google MAPS] Come trovare le località ad una certa distanza da un punto”

  1. davidino scrive:

    Da i risultati che ottengo sembra che $dist sia in km piuttosto che in metri.

  2. Giovanni scrive:

    Hai ragione, infatti la strDist() converte in metri e chilometri, grazie della segnalazione.

  3. Francesco scrive:

    Ma quali nomi devo dare ai campi del DataBase?
    Grazie mille
    saluti e buon fine settimana francesco

  4. Giovanni scrive:

    La tabella si chiama “luoghi” (oppure si modifica la query) e i campi latitudine e longitudine (oppure, anche qui, si modifica la query).

  5. Francesco scrive:

    ok grazie mille! ora provo e poi vi faccio sapere ;-)

  6. Francesco scrive:

    Perfetto! ci sono riuscito!!! OTTIMO tutorial!!!

  7. Francesco scrive:

    Ciao
    Forse qui posso chiedervi un parere tecnico poichè non riesco a trovare da nessun\’alra parte.

    vorrei capire come questo sito http://www.prontoimprese.it ha realizzato
    l\’elenco collegato alle mappe di google, ho controllato e c\’è solamente il nome attività e il numero di telefono,
    siccome sto cercando di realizzare qualcosa di simile, sarebbe utile capire come

    e qual\’è il metodo migliore, premessa , non ho alcun database con le aziende nè nomi nè telefoni, quindi spero di non dover inserire tutto a mano….

    Se c\’è qualche guida. etc…

    Grazie in anticipo
    Ciao
    non so se posso postare qui, ma ho cercato altre aree e non ho trovato il posto adatto, se lo ritenete spostatelo pure.

  8. Giovanni scrive:

    Se guardi quasi in fondo al sorgente pagina c’è una parte javascript che gestisce la mappa, in pratica dall’indirizzo lancia la funzione (di google maps) GClientGeocoder() e ottiene le coordinate.
    Chiaramente il data base degli indirizzi lo devi ottenere in qualche modo. Quel sito forse ha fatto un accordo con pagine gialle, senno’ devi fare un modulo dove sono le imprese stesse a registrarsi.

  9. centopino scrive:

    Ciao io vorrei solo mettere la destinazione tipo fumetto ed aggiungere magari il nome della destinazione ed il numero di telefono , si può fare facilmente?
    Grazie

  10. Giovanni scrive:

    Per il tuo problema ti consiglio di leggere questo semplice articolo.

  11. Ettore scrive:

    Salve,
    ho letto il tutorial e lo trovo molto interessante, sto sviluppando qualcosa di simile, con una “piccola” variante ossia:
    verificare se il Percorso generato passa vicino ($dist) a dei punti memorizzati sul db.
    Secondo voi avendo a disposizione nel db una serie di punti, e avendo già implementato il calcolo del percorso con inserimento partenza e destinazione calcolati con geocodifica, come posso visualizzare sulla mappa solo i punti vicini al percorso?.

    Grazie mille in anticipo!!.

  12. Giovanni scrive:

    Se per percorso si intende la retta che parte dai due punti allora bisogna calcolare la perpendicolare tra questa retta con il punto “vicino” al percorso.
    Con le nuove api di google maps è però anche possibile creare dei percorsi automobilistici, in questo caso ritengo diventi tutto più difficile.

  13. Ettore scrive:

    Esatto molto più difficile dato che per percorso intendevo proprio quello automobilistico, e dire che avrei trovato anche un sito che ha implementato all’incirca quello che vorrei fare io… http://www.tandemobility.com/
    nella home page si legge quanto segue:

    “Basandosi su una profilazione degli iscritti Tandemobility consente di sapere chi abita lungo un determinato percorso, i suoi orari e di conseguenza permette di ottimizzare la definizione di un percorso comune.”

Scrivi un commento