TonyOH
TonyOH

Reputation: 25

Change person icon on map using OsmDroid

I am using Osmdroid for the map in an activity, but I cannot change the default icon of a yellow person. Currently what I am trying, but nothing is shown on the map.

 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_truck);
 mLocationOverlay.setPersonIcon(bitmap);
 map.getOverlays().add(mLocationOverlay);

in console this comes out.

E/OsmDroid: error dispatchDraw, probably in edit mode
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
    at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:54)
    at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:226)
    at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:78)

Upvotes: 0

Views: 669

Answers (1)

Feria
Feria

Reputation: 36

See if you missed some context on your code: map.getOverlays().add(mLocationOverlay);

Here is an example:

       //My Location
       //note you have handle the permissions yourself, the overlay did not do it for you
       mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(context), mMapView);
       mLocationOverlay.enableMyLocation();
       Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_menu_compass);
       mLocationOverlay.setPersonIcon(bitmap);
       mMapView.getOverlays().add(this.mLocationOverlay);

Where

private MyLocationNewOverlay mLocationOverlay;

Upvotes: 2

Related Questions