I'm using osmdroid on my new Android project (since I want to be able to use offline maps) but I encounter many difficulties to customize the look 'n feel of the information bubble assigned to an overlay item.
Right now, I'm using an ItemizedOverlayWithFocus
overlay to display my items; looking at its code, I noticed the whole thing was drawn in the onDrawFinished
method so I tried to create my own custom overlay to override this method but this is pretty difficult to get a result. What I would love to get is something just like this :
How did you guys managed to get a custom information bubble on your projects?
I found a few classes to implement such a thing for Google's MapView (like Jeff Gilfelt's MapView Balloons) but nothing for osmdroid.
EDIT:
- This answer was best for older google map apis. In google Map V2 this
thing is already given.
You can get the code from https://github.com/galex/android-mapviewballoons
you can get selected balloon from the method of "BalloonItemizedOverlay.java" as follow
private void hideOtherBalloons(List<Overlay> overlays) {
for(int i=0; i<overlays.size();i++ ){
if (overlays.get(i) instanceof BalloonItemizedOverlay<?> && overlays.get(i) != this) {
((BalloonItemizedOverlay<?>) overlays.get(i)).hideBalloon();
}else{
BalloonOverlayView.SELECTED_BALLOON = i;
Log.i(i+" : Baloon Open", BalloonOverlayView.SELECTED_BALLOON+"");
}
}
}
To set the data you can use setBalloonData method of BalloonOverlayView.java file as follow:
protected void setBalloonData(Item item, ViewGroup parent) {
if (item.getTitle() != null) {
title.setVisibility(VISIBLE);
title.setText(item.getTitle());
} else {
title.setText("");
title.setVisibility(GONE);
}
if (item.getSnippet() != null) {
snippet.setVisibility(VISIBLE);
snippet.setText(item.getSnippet());
} else {
snippet.setText("");
snippet.setVisibility(GONE);
}
}
You should check out this new library, OSM bonus pack. Should do exactly what you want.
http://code.google.com/p/osmbonuspack/