Ответ 1
Как я это сделал:
Поместите маркеры в нужные геоданные путем подкласса 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 <OverlayItem> :: 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);