[Google MAPS] Come trovare le località ad una certa distanza da un punto
Giovanni
| Argomenti: none | 12275
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 |
31 Maggio 2007 alle 18:00
Da i risultati che ottengo sembra che $dist sia in km piuttosto che in metri.
2 Giugno 2007 alle 14:32
Hai ragione, infatti la strDist() converte in metri e chilometri, grazie della segnalazione.
23 Giugno 2007 alle 10:40
Ma quali nomi devo dare ai campi del DataBase?
Grazie mille
saluti e buon fine settimana francesco
23 Giugno 2007 alle 11:58
La tabella si chiama “luoghi” (oppure si modifica la query) e i campi latitudine e longitudine (oppure, anche qui, si modifica la query).
24 Giugno 2007 alle 18:48
ok grazie mille! ora provo e poi vi faccio sapere ;-)
5 Luglio 2007 alle 08:57
Perfetto! ci sono riuscito!!! OTTIMO tutorial!!!
20 Gennaio 2008 alle 23:51
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.
21 Gennaio 2008 alle 06:40
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.
16 Marzo 2008 alle 19:53
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
18 Marzo 2008 alle 07:16
Per il tuo problema ti consiglio di leggere questo semplice articolo.
31 Luglio 2009 alle 12:04
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!!.
2 Agosto 2009 alle 12:27
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.
4 Agosto 2009 alle 11:32
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.”