我无法相信没有简单的方法可以做这样的基本事情...我想在用户点击地图标记后显示一个弹出/气球(一个LinearLayout)(对谷歌的内容很微不足道)地图应用)。当用户滚动地图时,它应随地图移动。这样做的最佳方式是什么?
一个想法是在我的Activity的根布局中使用LinearLayout并在需要时显示它。但是如何让它随地图移动?
另一种方法可能是创建一个Overlay,在onDraw中绘制LinearLayout并给出布局触摸事件。这可能吗?
答案 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)
这是“失踪的小工具”......
没有图标的气球: https://github.com/jgilfelt/android-mapviewballoons#readme
带图标的气球(延伸杰夫 Gilfelt的项目): https://github.com/galex/android-mapviewballoons