Пользовательский информационный пузырь при касании для элементов наложения с использованием osmdroid

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

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

Результат

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

Я нашел несколько классов для реализации такой вещи для Google MapView (например, Jeff Gilfelt MapView Balloons), но ничего для osmdroid.


person Vivi    schedule 20.02.2012    source источник
comment
android-mapviewballoons должен использовать почти тот же API. Вы не пробовали портировать его на osmdroid?   -  person Macarse    schedule 20.02.2012
comment
Я пытаюсь прямо сейчас, но я отлаживаю (например, у меня нет никакого события касания). Но поскольку я видел довольно много проектов с красивыми информационными пузырями, я думаю, что упускаю что-то более простое, чем портирование mapviewballoons.   -  person Vivi    schedule 20.02.2012


Ответы (2)


ИЗМЕНИТЬ:

  • Этот ответ был лучшим для старых API карт Google. В 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);
        }
}
person dinesh sharma    schedule 27.02.2012

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

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

person Drublic    schedule 14.08.2012