Настраиваемый информационный пузырь для наложения элементов с помощью osmdroid - PullRequest
7 голосов
/ 20 февраля 2012

Я использую osmdroid в моем новом проекте Android (поскольку я хочу использовать автономные карты), но я сталкиваюсь со многими трудностями в настройке внешнего вида информационного пузыря, назначенного наложенному элементу.

Сейчас я использую оверлей ItemizedOverlayWithFocus для отображения своих предметов; Глядя на его код , я заметил, что все это было нарисовано в методе onDrawFinished, поэтому я попытался создать собственное наложение для переопределения этого метода, но получить результат довольно сложно. Я бы хотел получить что-то вроде этого:

The result

Как вам, ребята, удалось получить нестандартный информационный пузырь о ваших проектах?

Я нашел несколько классов, чтобы реализовать такую ​​вещь для Google MapView (например, Джефф Гилфелт, MapView Balloons ), но ничего для osmdroid.

Ответы [ 2 ]

8 голосов
/ 27 февраля 2012

РЕДАКТИРОВАТЬ:

  • Этот ответ был лучшим для старых карт Google API.В Google Map V2 эта вещь уже дана.

Вы можете получить код от https://github.com/galex/android-mapviewballoons

, вы можете получить выбранный шарик из метода "BalloonItemizedOverlay.java"."как следует

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+"");
            }
        }
}

Чтобы установить данные, вы можете использовать метод setBalloonData файла BalloonOverlayView.java следующим образом:

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);
        }
}
7 голосов
/ 15 августа 2012

Вы должны проверить эту новую библиотеку, бонусный пакет OSM. Должен делать именно то, что вы хотите.

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

...