Pagina 1 di 1

Google maps API

Inviato: ven ott 11, 2013 21:21
da rfringuello89
Salve a tutti!
Sapete se esiste un'API o una libreria che consenta di scoprire se una serie di punti (definiti con latitudine e longitudine) fanno parte di una precisa circonferenza tracciata a partire da un punto. Ovvero immaginando la geolocalizzazione, a partire da dove mi trovo io vorrei sapere se una serie di punti appartengono alla circonferenza tracciata a partire dalla posizione corrente con un certo raggio.

Grazie a tutti ;)

Re: Google maps API

Inviato: sab ott 12, 2013 4:26
da ZeroUno
fermo restando che non conosco la risposta per eventuali api prefatte, che c'entra google map?

Io direi che basta trattare il mondo come un piano cartesiano; ti prepari la formula del cerchio, che non ricordo a memoria ma dovrebbe essere una semplice disequazione di secondo grado tipo (x-A)^2+(y-B)^2<=R in cui A e B sono le coordinate del centro del cerchio, R é il raggio del cerchio, x e y le coordinate che vuoi testare (ma potrei sbagliare visto che l'ho studiata c.a. 20 anni fa).
Metti il tutto in una if del tuo programma e hai fatto.

Se il cerchio é largo diverse migliaia di kilometri il risultato potrebbe risulta meno attendibile ai bordi del cerchio; potresti trovare problemi ai poli e nelle vicinanze della latitudin4e 0/360

Re: Google maps API

Inviato: sab ott 12, 2013 14:27
da rfringuello89
Si ovviamente ho omesso di scrivere che l'idea riguarda un APP android che dovrebbe contenere una parte con google maps, quindi l'idea era capire se alcuni luoghi stanno entro una certa distanza (ovvero entro un certo raggio) da dove si trovare lo smartphone.

Ho visto che esiste una particolare libreria che permette di "disegnare" su google maps delle aree ma devo ancora indagare se è possibile sfruttarla in modo semplice per sapere quali punti fanno parte o meno di essa.

Per quanto riguarda la formula algebrica, ne sono ovviamente a conoscenza ma volevo evitare di eseguire calcoli matematici in quanto potrebbero esserci centinaia di punti...

Grazie e attendo aiuto!!

Re: Google maps API

Inviato: sab ott 12, 2013 15:49
da Trotto@81
Sinceramente non ho capito cosa tu voglia fare. Le coordinate terrestri sono riferite al centro della Terra e valgono per una sfera. La Terra non è piatta!

Re: Google maps API

Inviato: sab ott 12, 2013 19:03
da lennynero
Come diceva ZeroUno il tuo problema si risolve semplicemente con una formula matematica. Io ho esperienza con le API di Google e ho costruito una logica simile a quella che vuoi tu, quindi posso dirti che è fattibile. In sostanza io ho creato una funzione che controlla se un poligono contiene un dato punto; magari a te non interessa questo nello specifico, ma puoi semplicemente usare la formula che descrive il poligono(cerchio, quindi semplice nel tuo caso) e successivamente verificare se il punto è contenuto. Non ho la formula sottomano, ma con un pò di algebra e google search ci metterai un attimo per scriverla. Ricordati che il limite, nel software, è dato solo dalla creatività di chi lo scrive;)

Re: Google maps API

Inviato: dom ott 13, 2013 15:49
da puzuma
rfringuello89 ha scritto:Si ovviamente ho omesso di scrivere che l'idea riguarda un APP android che dovrebbe contenere una parte con google maps, quindi l'idea era capire se alcuni luoghi stanno entro una certa distanza (ovvero entro un certo raggio) da dove si trovare lo smartphone.


la libreria standard per fare questi tipo di calcoli (e che tiene conto della corretta forma della terra) è GDAL: http://www.gdal.org . Se la tua circonferenza non è molto estesa puoi approssimare la terra ad un piano e usare della semplice trigometria, però devi stare attento che non puoi usare le coordinate geografiche (quelle espresse in gradi) ma coordinate proiettate (di solito espresse in metri). Puoi passare dalle prime alle seconde sempre con GDAL o PROJ4. Semplificando al massimo puoi anche approssimare la terra ad una sfera (quello che fa google) e utilizzare formule molto semplificate.

Tutto dipende dalla precisione che vuoi avere e da quanto è estesa la tua circonferenza.