Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58

    Trovare distanze da coordinate geografiche

    Salve a tutti, scrivo in questa sezione perchè presumo che il mio problema si possa risolvere in javascript tramite qualche api di google maps.
    Il problema è molto semplice, io ho bisogno di confrontare tanti luoghi di cui ho le coordinate geografiche con un punto ben preciso che cambia di volta in volta e ottenere solo i luoghi che non siano più lontani di un certo tanto dal punto scelto.
    Questo algoritmo c'è su un sacco di siti, quindi dubito che sia complesso, ma proprio non riesco a capire come si possa fare senza dover calcolare la distanza di tutti i luighi che si trovano nel database.
    Comunque faccio un esempio per farmi capire meglio.
    Ipotizziamo di dover cercare delle pizzerie a milano non più lontane di un chilometro da casa mia, io inserisco le coordinate di casa mia, e il sistema che ipoteticamente ha nel database tutte le pizzerie della lombardia con tanto di relative coordinate, mi restituirà solo le pizzerie entro il chilometro.

    Qualche suggeirmento per il mio problema?

    Grazie a tutti.
    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Niente?

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lato client non la vedo tanto semplice, passa le coordinate di casa tua al server, a quel punto basta una query nel db con un uso accorto del teorema di pitagora... per lo scambio di dati puoi usare ajax
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Ciao, grazie per la risposta.
    Potresti spiegarti un po' meglio per favore?
    Non credo che possa bastare il teorema di pitagora per risolvere il mio problema, in più dovrei fare tutto in sql al momento dell'interrogazione.
    E' questo quello che mi hai suggerito o ho capito male?

    Grazie
    Ciao

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ti sposto
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    58
    Penso di aver trovato una possibile soluzione, la posto comunque nel caso possa interessare a qualcuno.
    Magari, vedendo la soluzione, qualcuno può consigliarmi come ottimizzarla mi farebbe un favore... anche se ancora non posso credere che una funzione del genere non sia gia implementata nelle api di google maps.

    Ho risolto leggendo questo articolo:
    http://blog.casertano.name/2008/10/1...ti-geografici/

    Ho trasformato tutto in sql in modo da scremare nel momento della query.

    A questo punto penso che andrebbe spostato nella sezione database e non php.

    Comunque il codice è il seguente, i numeri inseriti sono delle coordinate di prova (41.890164,12.492346) che dovrebbero essere le coordinate che cambiano di volta in volta, mentre i campi "lon" e "lat" sono semplicemente due campi che contengono rispettivamente longitudine e latitudine di un punto registrato nel database.
    Trovo tutti i punti distanti non più di 2 Km da il punto avente coordinate 41.890164,12.492346.

    codice:
    SELECT * FROM `shops` WHERE (ACOS(
    				(SIN(RADIANS(41.890164)) * SIN(RADIANS(lat))) 
    				+ 
    				(COS(RADIANS(41.890164)) * COS(RADIANS(lat)))
    				* 
    				COS(ABS(RADIANS(12.492346) - RADIANS(lon))))
    				*6372.795477598)<2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.