Показать всплывающее окно над маркером карты в MapView
Я не могу поверить, что нет простого способа сделать такую простую вещь, как эта... Я хочу показать всплывающее окно / всплывающее окно (LinearLayout) после того, как пользователь нажмет на маркер карты (что-то похожее на то, что есть в приложении Google Maps), Он должен двигаться вместе с картой, когда пользователь прокручивает карту. Каков наилучший способ сделать это?
Одна идея состоит в том, чтобы LinearLayout был в корневом макете моей Деятельности и показывать его при необходимости. Но как заставить его двигаться вместе с картой?
Другим способом сделать это может быть создание оверлея, который рисует LinearLayout в onDraw и дает события касания макета. Это возможно?
2 ответа
Я сделал так:
Поместите маркеры в требуемые 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
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);
Вот "пропавший виджет"...
Воздушные шары без значков: https://github.com/jgilfelt/android-mapviewballoons
Воздушные шары с иконками (расширяет проект Джеффа Гилфельта): https://github.com/galex/android-mapviewballoons