CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: elmegio con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: bluemask con ben 43 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 6 su 6
Discussione:

Problema aggiornamento MapView

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Nov 2009
    Messaggi
    3

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Question

    Problema aggiornamento MapView

    Ciao a tutti,
    sto cercando di sviluppare una semplice applicazione che visualizza alcuni punti di interesse su una MapView, utilizzando la classe ItemizedOverlay per disegnare i punti.
    Il problema è che quando il numero di punti cresce (adesso sono 20 punti) lo scorrimento della mappa diventa estremamente lento. Facendo un pò di debug mi sembra di aver capito che, ogni qualvolta faccio click sullo schermo, viene richiamato il mentodo draw() della classe ItemizedOverlay, che ridisegna tutta la mappa e i punti su di essa.
    Questo continuo aggiornamento, chiaramente, rallenta l'applicazione e rende impossibile l'utilizzo della mappa stessa.
    Sono già un pò di giorni che impazzisco senza trovare una soluzione. Forse devo fare in modo che il metodo draw non venga richiamato in modo così frequente? In che modo? Avete qualche suggerimento per rendere l'applicazione più veloce?

    Grazie mille!
    41fr3

  2.  
  3. #2
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Ciao, una soluzione che adottai è quella di fare il plot dei punti su un tuo canvas e poi unire i due canvas nell onDraw..

    In questo modo non devi ricalcolare il canvas e aggiungere ogni volta i punti poichè questi son cachati.

    Twitter @veke87

  4. #3
    Baby Droid


    Registrato dal
    Nov 2009
    Messaggi
    3

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da Andrea Visualizza il messaggio
    Ciao, una soluzione che adottai è quella di fare il plot dei punti su un tuo canvas e poi unire i due canvas nell onDraw..

    In questo modo non devi ricalcolare il canvas e aggiungere ogni volta i punti poichè questi son cachati.
    Ciao Andrea, grazie mille dell'utilissimo suggerimento. A livelli teorico mi è abbastanza chiaro quelli che dici.
    Ora provo ad implementare la cosa...se nel frattempo hai qualche sample da inviarmi te ne sarei infinitamente grato.

  5. #4
    Baby Droid


    Registrato dal
    Nov 2009
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Un altro trucco ancora sarebbe mostrare solo i punti visualizzabili, per cui se c'è zoom e la zona dei punti non compare lì dentro (è facile saperlo se usi sqlite per conservare i punti, altrimenti ti fai un piccolo ciclo), non è certamente il caso di andarli ad includere nella mappa

    Ciao!

  6. #5
    Baby Droid


    Registrato dal
    Nov 2009
    Messaggi
    3

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da bigalex Visualizza il messaggio
    Un altro trucco ancora sarebbe mostrare solo i punti visualizzabili, per cui se c'è zoom e la zona dei punti non compare lì dentro (è facile saperlo se usi sqlite per conservare i punti, altrimenti ti fai un piccolo ciclo), non è certamente il caso di andarli ad includere nella mappa

    Ciao!
    la tua idea mi sembra molto interessante. Ma come faccio a sapere quali punti rientrano nella mappa? Dovrei calcolare i range di latitudine e longitudine sulla mappa e poi vedere quali punti rientrano in questo range in un dato momento...come calcolare questi range?

    Grazie mille per ogni suggerimento

  7. #6
    Baby Droid


    Registrato dal
    Nov 2009
    Messaggi
    21

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Non c'è una funzione come google maps/earth che ti definisce l'angolo in alto a sinistra e quello in basso a destra, per cui tu sai qual'è lo spazio entro il quale puoi piazzare i punti?
    Personalmente ho lavorato proprio con google maps ed earth, e proprio per risolvere problemi di questo tipo, spesso andavano eliminati i punti che non interessavano (ad esempio le mappe di fon.com non lo facevano ed oltre che occupare terabytes di memoria, il browser continuava a far cigolare criceti quando muovevi la mappa :P)
    Riguardo il come sia possibile ottenere gli angoli, spetta, ti dico subito se c'è questa cosa :P
    Ecco qui, trovata (dopo qualche minuto, ma c'era )
    MapView
    In particolare, ti dovrebbe interessare questo:
    getLatitudeSpan()
    The current latitude span (from the top edge to the bottom edge of the map) in decimal degrees multiplied by one million.

    getLongitudeSpan()
    The current longitude span (from the left edge to the right edge of the map) in decimal degrees multiplied by one million.


    Che dovrebbe fare proprio quel che ti ho detto
    Buona giornata :P

Discussioni simili

  1. Problema aggiornamento milestone 2.0.1
    Da Gouken nel forum Motorola Milestone
    Risposte: 12
    Ultimo messaggio: 30-01-10, 02:42
  2. Problema aggiornamento 2.0.1 + root [MAC]
    Da Fofain nel forum Motorola Milestone Modding
    Risposte: 4
    Ultimo messaggio: 22-01-10, 08:12
  3. problema Market - Notifiche aggiornamento app
    Da teo1969 nel forum Motorola Milestone
    Risposte: 2
    Ultimo messaggio: 24-12-09, 12:38
  4. problema dopo aggiornamento ahome
    Da acos88 nel forum HTC Magic
    Risposte: 3
    Ultimo messaggio: 23-11-09, 00:31
  5. Problema aggiornamento!!!
    Da Baccioccia nel forum Samsung Galaxy (i7500)
    Risposte: 4
    Ultimo messaggio: 09-10-09, 10:20

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy