Ciao a Tutti sto sviluppando un APP che sfrutta le mappe.
All'interno della mappa, in 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" e ha un peso di 600 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?
Vi posto il codice, SPERO POSSIATE DARMI UNA DRITTA PER RISOLVERE QUESTO ENIGMA!!
codice: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: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(); } }

LinkBack URL
About LinkBacks
Rispondi quotando