Autore Topic: Come visualizzare 2 puntatori GPS differenti in un'unica mappa  (Letto 1302 volte)

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« il: 16 Aprile 2014, 17:12:06 CEST »
0
Ciao ragazzi! Volevo sviluppare una semplice app che visualizzasse le coordinate GPS di un secondo dispositivo. Voglio comunque lasciare la possibilità di ricevere la mia posizione. Tramite setMyLocationEnabled() posso abilitare la mia posizione con relativa icona sulla mappa (nelle api v2 di GoogleMap: https://developers.google.com/maps/documentation/android/map) ma non trovo nessun metodo riguardante l'aggiunta di un secondo "location dot". Come potrei fare?
L'intento era di suddividere l'app in 2 parti! Il client (che riceve la posizione del secondo dispositivo, e nel contempo mi segnala la mia) e il server (che invia le coordinate gps al client). Per il server penso basti implementare un LocationListener, ma appunto il dubbio rimane nel client, come posso visualizzare contemporaneamente le coordinate del mio dispositivo e del dispositivo da tracciare.
Qualcuno potrebbe darmi una mano? Grazie  ;-)

Offline jagam

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #1 il: 16 Aprile 2014, 21:35:55 CEST »
0
Scusa ma non mi è chiaro il problema.
Potresti spiegare meglio?
Per 'location dot' intendi i markers?

Inviato dal mio citofono


Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #2 il: 17 Aprile 2014, 00:03:07 CEST »
0
Scusa ma non mi è chiaro il problema.
Potresti spiegare meglio?
Per 'location dot' intendi i markers?

Inviato dal mio citofono

no, a differenza del marker, che ti segnala un indirizzo da te cercato, il location dot segnala unicamente una posizione di un dispositivo GPS. Ecco come appare



il problema appunto è, oltre a visualizzare il mio in blu, ne voglio visualizzare un secondo di un dispositivo che mi invia remotamente le sue coordinate, dove la sua posizione si aggiorna col tempo. Magari in un secondo tempo cambiargli anche colore, ma la priorità è appunto come fare

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #3 il: 17 Aprile 2014, 01:59:02 CEST »
0
Ti basta semplicemente ottenere le coordinate del secondo dispositivo e disegnarle sulla mappa. Ora non so se sia possibile disegnare un secondo "blue dot" ma se fossi in te non lo farei, perchè tipicamente indica la posizione del dispositivo in uso, vederne due causerà confusione. Puoi invece disegnare un marker per identificare la posizione di un altro dispositivo. Ti dico già che implementare un app client/server direttamente su rete mobile non si può fare. (invece è possibile farlo se i dispositivi sono connessi ad una rete locale, ad esempio una WAN). Per inviare e ricevere informazioni da e verso altri dispositivi, devi usare un server centrale in rete al quale tutti i dispositivi si "connettono" e scambiano informazioni. Il secondo dispositivo invierà le sue coordinate al server, magari quando osserva che queste sono cambiate, e il server "comunica" al primo dispositivo le nuove coordinate. Ora le strade sono due :
1) Usare Google Cloud Messaging for Android | Android Developers per effettuare comunicazioni server/client in modo "event-driven"
In questo modo sarà il server a decidere quando comunicare le nuove coordinate.
2) Creare un più semplice polling client/server.
Qui il client chiederà ciclicamente al server se ha delle nuove coordinate del secondo dispositivo, in caso affermativo, il client le richiederà e aggiornerà il relativo marker sulla mappa.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #4 il: 17 Aprile 2014, 09:44:55 CEST »
0
allora,
prima di tutto, il location dot non è altro che un marker con disegnata attorno un'era semitrasparente (probabilmente è un semplice circle l'area), quindi tu puoi farti un marker personalizzato e puoi farlo come vuoi (io ad esempio disegno on-the-fly un pallino con contorno giallo e dentro blu), e applicarlo alla seconda posizione.

Detto questo, puoi usare GCM per la comunicazione, o se non vuoi passare da li prova a guardare il protocollo MQTT. Vedi se fa al caso tuo, tieni conto che ti serve un server accessibile da entrambi i device (il server è leggero, un portatile è sufficiente).
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #5 il: 17 Aprile 2014, 10:57:22 CEST »
0
Ti basta semplicemente ottenere le coordinate del secondo dispositivo e disegnarle sulla mappa. Ora non so se sia possibile disegnare un secondo "blue dot" ma se fossi in te non lo farei, perchè tipicamente indica la posizione del dispositivo in uso, vederne due causerà confusione. Puoi invece disegnare un marker per identificare la posizione di un altro dispositivo. Ti dico già che implementare un app client/server direttamente su rete mobile non si può fare. (invece è possibile farlo se i dispositivi sono connessi ad una rete locale, ad esempio una WAN). Per inviare e ricevere informazioni da e verso altri dispositivi, devi usare un server centrale in rete al quale tutti i dispositivi si "connettono" e scambiano informazioni. Il secondo dispositivo invierà le sue coordinate al server, magari quando osserva che queste sono cambiate, e il server "comunica" al primo dispositivo le nuove coordinate. Ora le strade sono due :
1) Usare Google Cloud Messaging for Android | Android Developers per effettuare comunicazioni server/client in modo "event-driven"
In questo modo sarà il server a decidere quando comunicare le nuove coordinate.
2) Creare un più semplice polling client/server.
Qui il client chiederà ciclicamente al server se ha delle nuove coordinate del secondo dispositivo, in caso affermativo, il client le richiederà e aggiornerà il relativo marker sulla mappa.
allora,
prima di tutto, il location dot non è altro che un marker con disegnata attorno un'era semitrasparente (probabilmente è un semplice circle l'area), quindi tu puoi farti un marker personalizzato e puoi farlo come vuoi (io ad esempio disegno on-the-fly un pallino con contorno giallo e dentro blu), e applicarlo alla seconda posizione.

Detto questo, puoi usare GCM per la comunicazione, o se non vuoi passare da li prova a guardare il protocollo MQTT. Vedi se fa al caso tuo, tieni conto che ti serve un server accessibile da entrambi i device (il server è leggero, un portatile è sufficiente).

Perfetto, da quello che mi avete detto la cosa comune è creare un server centralizzato. Questo lo avevo già in mente, poiché se devo avere più client mi serve per forza un server centrale che intermedi le cose. Non mi sono chiare invece 2 cose:
1) Come creare un maker personalizzato
2) Utilizzare i protocolli per la comunicazione...
Grazie  :-)

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #6 il: 19 Aprile 2014, 11:51:34 CEST »
0
Niente??  :-o

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #7 il: 19 Aprile 2014, 12:56:30 CEST »
0
il marker è una semplice immagine.
Puoi inserirlo nella mappa semplicemente con map.addMarker() (al quale vai ad aggiungere varie opzioni, come la posizione, la risorsa grafica, la label etc etc)
per i protocolli, se non hai nessuna infarinatura, ti direi di iniziare a documentarti un pò su delle semplici comunicazioni http

Offline valerio65

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S III
  • Sistema operativo:
    Windows 8.1 PRO - Ubuntu 12
Re:Come visualizzare 2 puntatori GPS differenti in un'unica mappa
« Risposta #8 il: 26 Aprile 2014, 13:10:19 CEST »
0
Perfetto, diciamo che sto iniziando a costruire le basi dell'app :D però adesso sono davanti un problema...

nell'app server, che dovrebbe inviare le coordinate di dove si trova, devo comunque istanziare un oggetto GoogleMap per poter usare il LocationListener corrispondente... però, vorrei diciamo nascondere la mappa, perché vorrei mettere semplicemente un tasto "avvia" e "arresta" quando devo inviare le mie coordinate... non voglio visualizzare la mappa nella mia activity. Però per poter istanzare la mappa, necessariamente devo chiamare dall'XML il fragment relativo ad essa. Ho provato ad usare un FragmentManager e un FragmentTransiction, e con il metodo hide() nascondere il fragment relativo alla mappa, ma dopo un po' l'app crasha... come potrei fare? :\