在MapView中显示地图标记上方的弹出窗口

时间:2010-09-14 10:13:23

标签: android google-maps

我无法相信没有简单的方法可以做这样的基本事情...我想在用户点击地图标记后显示一个弹出/气球(一个LinearLayout)(对谷歌的内容很微不足道)地图应用)。当用户滚动地图时,它应随地图移动。这样做的最佳方式是什么?

一个想法是在我的Activity的根布局中使用LinearLayout并在需要时显示它。但是如何让它随地图移动?

另一种方法可能是创建一个Overlay,在onDraw中绘制LinearLayout并给出布局触摸事件。这可能吗?

2 个答案:

答案 0 :(得分:46)

我的方式是:

通过继承ItemizedOverlay将标记放在所需的GeoPoints上,如http://developer.android.com/guide/tutorials/views/hello-mapview.html

中所述

通过从布局中扩充来创建弹出窗口视图:

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

使用MapView.LayoutParams将弹出窗口相对于ItemizedOverlay中的GeoPoint定位< 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);

答案 1 :(得分:12)

这是“失踪的小工具”......