Autore Topic: Creare un Overlay lato utente  (Letto 1638 volte)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Creare un Overlay lato utente
« il: 22 Marzo 2011, 17:51:16 CET »
0
Ho bisogno nuovamente del vostro aiuto..

Ho lettoqua e la come impostare i POI in modo tale da poter essere visibili sulla mappa.. in modalità realtà aumentata
Quello che voglio fare io è:
permettere all'utente di toccare (o di tenere premuta) la mappa in un determinato punto e da li creare un marcatore,
così che l'utente possa mettere tanti punti dove decide lui

cosa mi consigliate?

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #1 il: 25 Marzo 2011, 17:47:26 CET »
0
nessun suggerimento? :'(

mi spiego meglio:
L'utente deve poter inserire un overlay toccando un punto della mappa.
Il dato dell'overlay così creato dagli utenti, deve essere scritto in un database che
da un lato si aggiorna di volta in volta dei nuovi dati inseriti dagli utenti
e dall'altro essere letto dall'app al fine di una consultazione sulla mappa di tutti i dati fino a quel momento inseriti


Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #2 il: 26 Marzo 2011, 02:49:39 CET »
+1
Secondo me dovresti usare una classe che estenda la classe itemizedOverlay:
ItemizedOverlay
.

Sarebbe un po' lungo scrivere del codice. Comunque, a grandi linee:

Per aggiungere l'overlay quando l'utente tocca un punto, usi il metodo onTouchEvent(MotionEvent motionEvent, MapView mapView) di questa classe.
- Trovi l'x e l'y del motionEvent
- Li trasformi in latitudine e longitudine tramite una Projection (A Projection serves to translate between the coordinate system of x/y on-screen pixel coordinates and that of latitude/longitude points on the surface of the earth. You obtain a Projection from MapView.getProjection(). )
- Crei un Geopoint usando latitudine e longitudine trovate
- Crei un OverlayItem dal Geopoint.
- Aggiungi l'overlay all'arrayList di overlayItem che contiene tutti gli overlay.
- (...) prova a cercare qualche tutorial per il resto, tipo disegnare il marker, come posizionarlo in base al punto ecc.

Nel database salvi le informazioni che ti serve che l'utente inserisca, e, come riferimenti, la latitudine e la longitudine.
Quando vuoi consultare sulla mappa tutti i punti del database, usi latitudine e longitudine dei punti, crei gli overlay, li aggiungi all'arraylist ecc...


Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #3 il: 27 Marzo 2011, 20:09:06 CEST »
0
Per aggiungere l'overlay quando l'utente tocca un punto, usi il metodo onTouchEvent(MotionEvent motionEvent, MapView mapView) di questa classe.
- Trovi l'x e l'y del motionEvent
- Li trasformi in latitudine e longitudine tramite una Projection (A Projection serves to translate between the coordinate system of x/y on-screen pixel coordinates and that of latitude/longitude points on the surface of the earth. You obtain a Projection from MapView.getProjection(). )
- Crei un Geopoint usando latitudine e longitudine trovate
- Crei un OverlayItem dal Geopoint.
- Aggiungi l'overlay all'arrayList di overlayItem che contiene tutti gli overlay.
- (...) prova a cercare qualche tutorial per il resto, tipo disegnare il marker, come posizionarlo in base al punto ecc.
ciao, grazie della risposta.
questi punti da te elencati, penso di averli fatti con successo
riguardo a questo invece
Nel database salvi le informazioni che ti serve che l'utente inserisca, e, come riferimenti, la latitudine e la longitudine.
Quando vuoi consultare sulla mappa tutti i punti del database, usi latitudine e longitudine dei punti, crei gli overlay, li aggiungi all'arraylist ecc...
non so proprio come devo partire per la gestione del database.

la mia applicazione deve funzionare da più cellulari di utenti differenti. ciascun utente inserirà i suoi overlay che dovranno essere memorizzati in un database esterno (ovviamente ogni utente potrà vedere sulla mappa gli overlay inseriti precedentemente da altri utenti)

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #4 il: 27 Marzo 2011, 20:56:45 CEST »
+1
riguardo a questo invecenon so proprio come devo partire per la gestione del database.

la mia applicazione deve funzionare da più cellulari di utenti differenti. ciascun utente inserirà i suoi overlay che dovranno essere memorizzati in un database esterno (ovviamente ogni utente potrà vedere sulla mappa gli overlay inseriti precedentemente da altri utenti)

Non ho avuto mai a che fare con l'accesso a database esterni, quindi posso solo consigliarti di dare un'occhiata qui http://downloadandroid.info/2010/05/how-to-connect-to-mysql-database/ e qui anddev.org • View topic - [TUTORIAL] Connecting to MySQL database e, in caso di problemi con il database, aprire un thread nella sezione "Gestione dei dati".

Mi spiace non esserti molto d'aiuto, però posso aggiungere dei consigli non richiesti sulla logica dell'applicazione, ai quali, magari, hai già pensato. 
Trovandoti a lavorare con la rete, prima o poi si presenteranno problemi di latenza, sia ricevendo che inviando i record al database online, con la conseguenza di rallentare/bloccare l'interfaccia finché le operazioni di ricezione o invio non saranno concluse.
 Ti converrebbe, quindi, eseguire in background la ricezione dei record e popolare la mappa man mano che gli overlay si scaricano, oppure popolarla solo quando sono stati ricevuti tutti. Anche per l'invio dei record ti converrebbe farlo in background, tenendo conto che potrebbero esserci momentanee assenze di connessione. Potresti quindi salvare in qualche variabile quelle non inviate, e ritentare dopo tot tempo, oppure, inserire i record, man mano che vengono creati, in un database locale e, all'uscita dall'activity o in un qualche momento che deciderai, inviare i record e svuotare il database dai record inviati con successo. In questo modo, se l'utente ha creato degli overlay, però non è riuscito a salvarli perché nel frattempo ha perso la connessione e non avrà modo, per molto tempo, di riaverla, potrà tranquillamente chiudere l'activity e l'applicazione. Una volta riaperta, l'applicazione controllerà il database locale e, se troverà dei record (ovvero ci sono dei record che non sono ancora stati inviati), tenterà nuovamente di inviarli al database online. Ultimo consiglio: in termini di tempo, se devi inviare 10 record al database online, è più economico inviarne 3 + 3 + 3 +1 che 1 + 1 + 1(...), perché nel primo caso hai meno latenze che nel secondo (4 invii vs 10 invii). Stessa cosa per la ricezione. Questo, infatti, è proprio il metodo che viene usato per la ricezione delle icone nell'applicazione del market android: invece che scaricarle ad una ad una, nel scarica 5, mi pare, alla volta.
Perdona la lunghezza e i consigli non richiesti.  :-)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #5 il: 28 Marzo 2011, 10:00:18 CEST »
0
Ti ringrazio della risposta. Meglio ricevere più consigli che non ricevere proprio risposta :)
Seguirò i link, i consigli non richiesti che mi hai dato sono sicuramente validi e non ci avevo pensato, ma li affronterò in un secondo momento quando vorrò perfezionare la mia app. Per adesso mi preme che funzioni quanto detto sopra ;)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Creare un Overlay lato utente
« Risposta #6 il: 07 Aprile 2011, 20:10:45 CEST »
0
Oggi ho provato a seguire i passi che mi hai detto e ci sono riuscito.
grazie ancora ;)