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

fhu*_*cho 22 android google-maps

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

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

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

Kir*_*ran 46

我的方式是:

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

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

View popUp = getLayoutInflater().inflate(R.layout.map_popup, map, false);
Run Code Online (Sandbox Code Playgroud)

使用MapView.LayoutParams在ItemizedOverlay <OverlayItem> :: onTap方法中相对于GeoPoint定位弹出窗口.当用户滚动地图时,弹出窗口将自动滚动(无需任何其他代码).基本上弹出窗口绑定到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);
Run Code Online (Sandbox Code Playgroud)


One*_*rld 12

这是"失踪的小工具"......