Autore Topic: Mappe e Marker  (Letto 1284 volte)

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Mappe e Marker
« il: 26 Aprile 2011, 12:42:09 CEST »
0
Ciao a Tutti sto sviluppando un APP che sfrutta le mappe.

All'interno della mappa di una determinata zona vado a posizionare una serie di marker. L'applicazione funziona correttamente, ma lo scroolling della della mappa e lo zoom non vengono eseguiti in modo fluido, tutto va a scatti.

Il marker che vado ad inserire nella mappa è una img. formato "png o jpg" (non ricordo precisamente xk non ho il progetto qui con me) e ha un peso di 800 byte circa.

Può essere che troppi oggetti disegnati creano questi rallentamenti?...

...Se è così, perchè allora l'applicazione "Place / Luoghi" di Google funziona senza lag di scroolling e zoom anche se ci sono molti marker sulla mappa?

SPERO POSSIATE DARMI UNA DRITTA PER RISOLVERE QUESTO ENIGMA!!  :'(

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Mappe e Marker
« Risposta #1 il: 27 Aprile 2011, 09:39:11 CEST »
0
che telefono hai?
quanti oggetti ci sono?

comunque, se posti il codice, sarebbe pure meglio, perché magari è lì il collo di bottiglia.....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Mappe e Marker
« Risposta #2 il: 28 Aprile 2011, 12:49:47 CEST »
0
Guarda sono circa un Centinaio di oggetti:

Ti posto il codice dell'activityMap e MyItemizedOverlay

Codice (Java): [Seleziona]
plublic class IDC extends MapActivity {

        private LocationManager locationManager;
        private LocationListener locationListener;
        private MapController mc;
        private MapView mapView;
        private String myPosition;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String errore="";
        myPosition="";
        try{        
        mapView = (MapView) findViewById(R.id.mapview);
        mc = mapView.getController();
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationListener = new GPSLocationListener();
        //getMyLocation();
        MyDBHelper myDB = new MyDBHelper(IDS.this);
        Cursor cursor= myDB.query(new String[] { "x", "y", "y2", "w", "k", "latitude", "longitude"});
        //Log.i("NOMI", "TOT. NOMI"+cursor.getCount());
 
        List<Overlay> mapOverlays = mapView.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.mm_20_blue);
        MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable,IDS.this);
       

        List<Address> address = new ArrayList<Address>();
        Log.i("TOT TUPLE", " = "+cursor.getCount());

       
        while(cursor.moveToNext()){
               
                String s= cursor.getString(0);
                errore=s;
                String nome[]=s.split("-");
               
//              Log.i("Pos Colonna NOME", ""+cursor.getColumnIndex("nome"));
//              Log.i("Pos. in Colonna", ""+cursor.getString(0));
                //address.addAll(gc.getFromLocationName(nome[1], 1));
                //Address a= address.get(address.size()-1);
                String la=cursor.getString(5);
                String lo=cursor.getString(6);
                double latitude= Double.parseDouble(la);
                double longitude= Double.parseDouble(lo);
                int lan= (int)(latitude*1E6);
                int lon= (int)(longitude*1E6);

                GeoPoint point = new GeoPoint(lan, lon);
                String tel1=cursor.getString(1);
            String tel2=cursor.getString(2);
            String mail=cursor.getString(4);
            String web=cursor.getString(3);
            String info[]= {tel1,tel2,nome[1],web,mail};
            MyOverlayItem overlayitem = new MyOverlayItem(point, "Hello", nome[0], info);
            //mc.animateTo(point);
           
            itemizedoverlay.addOverlay(overlayitem);
            mapOverlays.add(itemizedoverlay);
             
           
        }
       
        mapView.setBuiltInZoomControls(true);
        mc.setZoom(6);
       
        }catch (Exception e) {
               
                        e.printStackTrace();
                }
       
    }
}

Codice (Java): [Seleziona]
public class MyItemizedOverlay extends ItemizedOverlay {
       
        private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
        private Context mContext;
        private CustomizeDialog customizeDialog;
       
        public MyItemizedOverlay(Drawable defaultMarker) {
                super(boundCenterBottom(defaultMarker));
        }
       
        public MyItemizedOverlay(Drawable defaultMarker, Context context) {
                super(boundCenterBottom(defaultMarker));
                mContext = context;
                }

        protected boolean onTap(int index)
                  MyOverlayItem item = (MyOverlayItem) mOverlays.get(index);

                  customizeDialog = new CustomizeDialog(mContext);
                  customizeDialog.setPersonalText(item.getSnippet());
                  String []info= item.getInfo();
                  customizeDialog.setT1(info[0]);
                  customizeDialog.setT2(info[1]);
                  customizeDialog.setA(info[2]);
                  customizeDialog.setW(info[3]);
                  customizeDialog.setM(info[4]);
                  customizeDialog.show();
                  return true;
        }

        protected OverlayItem createItem(int i) {
                return mOverlays.get(i);
        }

        public int size() {
                return mOverlays.size();
        }
       
        public void addOverlay(OverlayItem overlay) {
            mOverlays.add(overlay);
            populate();
        }

}

NON RIESCO A CAPIRE IL MOTIVO DELLA LENTEZZA E DELLA SCATTOSITA'!!!!!! -.-
« Ultima modifica: 28 Aprile 2011, 12:55:44 CEST da 7h38ugg3r, Reason: ho messo i tag code Java »

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Mappe e Marker
« Risposta #3 il: 11 Maggio 2011, 16:32:37 CEST »
0
Up...

...NESSUNO SA AIUTARMI!?!?!?  :'(

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Mappe e Marker
« Risposta #4 il: 13 Maggio 2011, 10:48:38 CEST »
0
il codice sembra pulito.
che telefono hai?

prova a postare l'apk e lo provo.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re:Mappe e Marker
« Risposta #5 il: 17 Maggio 2011, 00:37:46 CEST »
0
HTC Desire!!

Ma non dipende dal telefono, ho fatto test su più telefoni, ma la cosa non cambia!! La mappa è lenta, non so se per colpa delle img. o ci sono errori di programmazione...ank se nel codice ho seguito le procedure di google!!!  :'( :'( :'( :'( :'(

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re: Re:Mappe e Marker
« Risposta #6 il: 17 Maggio 2011, 08:09:32 CEST »
0
HTC Desire!!

Ma non dipende dal telefono, ho fatto test su più telefoni, ma la cosa non cambia!! La mappa è lenta, non so se per colpa delle img. o ci sono errori di programmazione...ank se nel codice ho seguito le procedure di google!!!  :'( :'( :'( :'( :'(

Hai provato con il profiler ad analizzare qual'è il metodo che ha problemi?

Sent from my HTC Desire

Offline mist3r0

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire
Re: Re:Mappe e Marker
« Risposta #7 il: 17 Maggio 2011, 11:35:39 CEST »
0
Hai provato con il profiler ad analizzare qual'è il metodo che ha problemi?

Sent from my HTC Desire

Ciao Ricky, potresti spiegarmi cosa è il "PROFILER" ?? Non l'ho mai sentito...

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Mappe e Marker
« Risposta #8 il: 17 Maggio 2011, 11:45:20 CEST »
0