Android DEV : Show a window on Baidu Map
2014-06-18 20:21
344 查看
周末同学说想弄个基于Baidu地图的应用来, 于是就开始研究这个SDK来. 其中应用有个需求, 需要点击地图上的标记时, 显示一组按钮. 于是按照常规的作法失业了InfoWindow, 如下.
//panel is a view, some buttons in it. final InfoWindow iw = new InfoWindow(panel, marker.getPosition(), null); //getMap() return BaiduMap activity.getMap().showInfoWindow(iw);
倒是不难, 但处理点击事件时发现有问题了. 根据文档, 此时显示出来的InfoWindow实际是View的Bitmap图片, 也就意味着根本没法区分View上的Buttons了, 更别说能处理Button的点击事件了. 怪不得, 文档中对于整个InfoWindow只有一个ClickListener, 还不含有View信息.
这样只能"曲线救国"了, InfoWindow不能用, 那就直接在MapView中弹出个PopupWindow吧. (顺手敲打测试代码, 就记录用)
final View panel = UserPanel.make(activity); Point p = activity.getMap().getProjection().toScreenLocation(marker.getPosition()); final PopupWindow pw = new PopupWindow(panel); pw.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); pw.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); pw.setFocusable(true); pw.setOutsideTouchable(true); //getMapView() return MapView, not BaiduMap any more pw.showAtLocation(activity.getMapView(), Gravity.LEFT | Gravity.BOTTOM,p.x, p.y ); final Button btn = (Button) panel.findViewById(R.id.button2); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pw.dismiss(); } });
搞定,人长个脑袋总是有用的...
测试中发现个问题, 如果地图发生放缩, Window弹出的位置会不准确, 很是奇怪, 按理MapView发生变化时, 其Projection应该能够实时跟随变化的, 这个问题回头需要再看看.
相关文章推荐
- Show IplImage on MFC Window
- window对象的事件:onresize、onpageshow、onload
- MFC OnShowWindow和OnSize
- OPENCV Show IplImage on MFC Window
- MFC MainFrame中的 OnShowWindow一个bug
- RelativePopupWindow.showOnAnchor 空指针
- ubuntu下opencv使用cvNamedWindow()和cvShowImage()出错的解决方法
- Programming on Winodows with Python (I) -- Get/Set window property
- window.onunload | window.onbeforeunload
- BaiduMap---百度地图官方Demo之基本地图功能(创建一张百度地图并管理地图的生命周期)
- android4.0上, baidu map 不能自动刷新问题
- Example: Develop Web application on Baidu App Engine using CherryPy
- Failed to update google map on HTC g3
- Hello Baidu Map
- 如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
- 关闭window.showDialog()窗口
- onAttachedToWindow()在整个Activity生命周期的位置及使用
- How does popupWindow.showAtLocation work? copy from stackoverflow
- studio调用百度MAP的JNI发生的问题: No implementation found for long com.baidu.platform.comjni.map.commonmemcach
- 解决IE下a标签会触发window.onbeforeunload的问题