Показать всплывающее окно над маркером карты в MapView - PullRequest
22 голосов
/ 14 сентября 2010

Я не могу поверить, что нет простого способа сделать такую ​​простую вещь, как эта ... Я хочу показать всплывающее окно / всплывающее окно (LinearLayout) после того, как пользователь нажимает на маркер карты (что-то смехотворное тому, что в Google Приложение Карт). Он должен двигаться вместе с картой, когда пользователь прокручивает карту. Каков наилучший способ сделать это?

Одна из идей - включить LinearLayout в корневой макет моей Деятельности и показать его при необходимости. Но как заставить его двигаться вместе с картой?

Другим способом сделать это может быть создание наложения, которое рисует LinearLayout в onDraw и дает события касания макета. Возможно ли это?

Ответы [ 2 ]

46 голосов
/ 30 сентября 2010

Я сделал так:

Поместите маркеры в требуемые GeoPoints путем создания подкласса ItemizedOverlay, как описано в http://developer.android.com/guide/tutorials/views/hello-mapview.html

Создайте всплывающее представление, надувая из макета:

View popUp = getLayoutInflater().inflate(R.layout.map_popup, map, false);

Используйте MapView.LayoutParams для позиционирования всплывающего окна относительно GeoPoint в методе ItemizedOverlay :: onTap.Всплывающее окно будет прокручиваться автоматически (без дополнительного кода), когда пользователь прокручивает карту.По сути, всплывающее окно привязывается к GeoPoint, если пользователь увеличивает масштаб, положение всплывающего окна настраивается автоматически.

MapView map = (MapView) findViewById(R.id.mapview);   
MapView.LayoutParams mapParams = new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        <geopoint>,
                        <x offset if required>,
                        <y offset like pinHeight>,
                        MapView.LayoutParams.BOTTOM_CENTER);
map.addView(popUp, mapParams);
12 голосов
/ 07 октября 2010

Вот "пропавший виджет" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...