Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Как показывать "baloon tooltip" или "info window" при нажатии на маркер на карте #320

Open
panovvitalik opened this issue Jan 29, 2023 · 3 comments

Comments

@panovvitalik
Copy link

panovvitalik commented Jan 29, 2023

На карте добавлены некие маркеры, с иконками.
Необходимо чтобы при нажатии на маркер показывалось всплываеющее окно - как в картах гугл. Со стилем "baloon tooltip" или "info window" - ну т.е. чтобы граница была со скругленными краями и выступом - как в комиксах :-). И отображалось прямо над маркером. Также чтобы кроме текста в данном тултипе отображались изображения и кнопки.
example

  1. Никаких специальных функций для этого как в картах гугл или osmdroid, я не нашел. Подскажите есть ли такие?
    Пример который здесь всем предлагается показывает обычный андроидный Tooltip, состоящий из одной строки текста, без привязки к маркеру или месту на карте - он всплывает по центру экрана - такое точно не нужно.

  2. Если таких функций нет, то можно ли создать и отобразить кастомное view со всеми необходимимыми картинками и кнопками?

Написал что-то типа такого для начала:

PlacemarkMapObject startPoint;
startPoint.addTapListener(new MapObjectTapListener() {
                @Override
                public boolean onMapObjectTap(@NonNull MapObject mapObject, @NonNull Point point) {
                    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    View markerView = inflater.inflate(R.layout.marker_track_openstreet, null);
                    final ViewProvider viewProvider = new ViewProvider(markerView );
                   PlacemarkMapObject mapInfoWindowObject = mInfoWindowCollection.addPlacemark(
                             new Point(1, 1), viewProvider);
// Как здесь отобразить markerView на карте с привязкой к mapObject?
                    return fase;
                }
            });

Допустим я в R.layout.marker_track_openstreet даже могу в теории границу нарисовать "ballon style" - это конечно будет криво максимально смотреться, но если другого выхода нет, то что делать ...
Но тогда остается еще два вопроса:

  1. Как View markerView из примера выше показать в конкректной точке на карте? или с привязкой к конретному MapObject mapObject? При этом сам mapObject должен остаться как есть
  2. Как сделать так чтобы View markerView скрывался при тапе где-нибудь в любом месте карты? (у info window гугловых это делается автоматически)
@panovvitalik
Copy link
Author

panovvitalik commented Jan 30, 2023

1- 3 вопросы закрыты, как я понял функционала работы с info window нет - пошел по пути создания кастомного вью.
Но как теперь сделать чтоб в кастомном вью срабатывали обработчики нажатий?
setOnClickListener на кнопке на картинке в теме не срабатывает:
bubble_share_coordinates_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Никогда сюда не приходит } });
Срабатывает всегда клик по карте. И/или по маркерам на карте за моим view
Как добавить обработчики нажатий???

@YandexMapKit
Copy link
Collaborator

Уточнить, пожалуйста, что значит "пошел по пути создания кастомного вью"?

Если речь про PlacemarkMapObject.setView(), то OnClickListener работать не будет. Единственное, что можно сделать, это обработать нажатия на весь PlacemarkMapObject c помощью MapObjectTapListener.

@panovvitalik
Copy link
Author

Уточнить, пожалуйста, что значит "пошел по пути создания кастомного вью"?

Если речь про PlacemarkMapObject.setView(), то OnClickListener работать не будет. Единственное, что можно сделать, это обработать нажатия на весь PlacemarkMapObject c помощью MapObjectTapListener.

Ну очень жаль такое слышать. Про тап листенер целиком на вью это понятно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants