Custom information bubble on tap for overlay items using osmdroid
Asked Answered
S

2

8

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 :

The result

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.

Sizzle answered 20/2, 2012 at 13:43 Comment(2)
android-mapviewballoons should be using almost the same API. You didn't try porting it to osmdroid?Sezen
I'm trying right now but I'm debugging (I don't have any touch event triggered for example). But since i saw quite a few projects with nice looking information bubbles, I think I'm missing something easier than porting mapviewballoons.Sizzle
M
8

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);
        }
}
Messeigneurs answered 27/2, 2012 at 8:14 Comment(0)
L
7

You should check out this new library, OSM bonus pack. Should do exactly what you want.

http://code.google.com/p/osmbonuspack/

Legrand answered 14/8, 2012 at 22:5 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.