Verbesserung der Performance von osmdroid

  • 0 Antworten
  • Letztes Antwortdatum
P

Patpa

Neues Mitglied
0
Hi Leute,
hab in meiner App eine Karte mittels osmdroid eingebunden. In diese können Punkte geladen werden. Jetzt hab ich das Problem, dass bei großen Punktmengen die App hängt und es zu Wartezeiten oder auch manchmal zum Absturz kommt. Glaube das Problem liegt nicht an den Punkten selber sondern an den Icons welche ich auf die GeoPoints setze. Hab schon alternativen ausprobiert aber sie nicht zum laufen gebracht. Hoffe jemand kennt sich aus und kann mir sagen wie ich es besser machen kann. Hier mal mein Quelltext:
In onCreate:
Code:
ArrayList<OverlayItem> mSeries1 = new ArrayList<OverlayItem>();
DefaultResourceProxyImpl defaultResourceProxyImpl = new DefaultResourceProxyImpl(this);
MyS1ItemizedIconOverlay series1PointIconOverlay   = new MyS1ItemizedIconOverlay(mSeries1, null, defaultResourceProxyImpl);
mapView.getOverlays().add(series1PointIconOverlay);
if(showSeries1Map == true)
{
         setOverlaySeries1();
}
Die Methode in der die GeoPoints erzeugt werden:
Code:
private void setOverlaySeries1()
    	{
    		anzSerie1 = 0;
    		mSeries1.clear();
    		
    		while(anzSerie1<B1.length)
    		{
    			GeoPoint series1Point = new GeoPoint(B1[anzSerie1],L1[anzSerie1]);
        		OverlayItem newMyLocationItem = new OverlayItem("My Location", "My Location", series1Point);
            	mSeries1.add(newMyLocationItem);
            	anzSerie1++;
    		}
Hier die Klasse in der die Icons gesetzt werden:
Code:
private class MyS1ItemizedIconOverlay extends ItemizedIconOverlay<OverlayItem>
        {

    		public MyS1ItemizedIconOverlay(List<OverlayItem> pList,org.osmdroid.views.overlay.ItemizedIconOverlay.OnItemGestureListener<OverlayItem> pOnItemGestureListener,ResourceProxy pResourceProxy) 
    		{
    			super(pList, pOnItemGestureListener, pResourceProxy);
    		}

    		@Override
    		public void draw(Canvas canvas, MapView mapview, boolean arg2) 
    		{
    			super.draw(canvas, mapview, arg2);
    			if(!mSeries1.isEmpty())
    			{
    				vForms = Forms1;
    				vColor = Color1;
    				setPointVisual();
    				int k = 0;
    				GeoPoint in = null;
    				Point out = new Point();
    				
    				
    				Bitmap bm = BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(imageName, "drawable", "com.example.paketname"));
    				canvas.drawBitmap(bm, 
    						out.x - bm.getWidth()/2, 	//shift the bitmap center
    						out.y - bm.getHeight()/2, 	//shift the bitmap center
    						null);
    				while(k<anzSerie1)
    				{
        				in = mSeries1.get(k).getPoint();
        				mapview.getProjection().toPixels(in, out);
        				k++;
    				}
    			}
    		}
    		@Override
    		public boolean onSingleTapUp(MotionEvent event, MapView mapView) 
    		{
    			return true;
    		}
        }
Wäre super wenn jemand der sich auskennt mir vielleicht einen Tipp geben könnte :)
Gruß
Patpa
 
Zurück
Oben Unten