Friday, June 11, 2010

[android-developers] MapOverlay turns the phone unresponsive

I'm trying to draw some points (around 200) in a MapOverlay and
noticed that the application gets slow and the phone becomes
unresponsive. Here's my code:

MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapa.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
...

class MapOverlay extends com.google.android.maps.Overlay
{
Cursor c;
Bitmap bmp;

private MapOverlay()
{
...initialize Bitmap and then Cursor with around 200 points taken
from a database...
}

@Override
public boolean draw(Canvas canvas, MapView mapView,boolean shadow,
long when)
{
super.draw(canvas, mapView, shadow);

for (int f=0;f<c.getcount();f++) {
c.moveToPosition(f);
Point pt=new Point();
mapView.getProjection().toPixels(new
GeoPoint(c.getInt(0),c.getInt(1)),pt);
canvas.drawBitmap(bmp, pt.x,pt.y-16, null);
Log.i(TAG,"Drawing point "+f);
}
...

After adding the Log.i message I found the problem, the loop is run
endlessly (note that the phone is quiet and there's nothing happening
in the background):

I/XP (10507): Drawing point 0
I/XP (10507): Drawing point 1
...
I/XP (10507): Drawing point 199
I/XP (10507): Drawing point 0
I/XP (10507): Drawing point 1
...
I/XP (10507): Drawing point 199

Is this a "normal" behaviour, a bug in the OS or am I doing something
wrong?

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment