Android Google Maps onTap(int i)和onTap(GeoPoint geoPoint, MapView mapView)用法
2011-08-03 15:19
465 查看
Android Google Maps API中类ItemizedOverlay提供了两种处理点击(tap)的事件:
1.
Handle a tap event.
2.
Override this method to handle a "tap" on an item.
两种方法可以同时重载,利用第二种重载方法我们可以在点击图标时弹出信息窗口,如下:
但是仅仅重载第二个onTap是不够的,当用户点击图标之外的区域,正常逻辑是信息窗应该消失,但是情况恰恰相反,点击图标区域之外信息窗不会消失,怎么处理呢?
这时我们可以重载第一个方法(
代码结构可以这么写:
@Override
protected boolean onTap(int i) {
//得到当前点击的对象
OverlayItem item = mOverlays.get(i);
setFocus(item);
//点击图标显示信息窗口
showInfoWindow(item);
//必须返回true,让后面一个onTap方法知道点击了图标
return true;
}
@Override
public boolean onTap(GeoPoint geoPoint, MapView mapView) {
//注意super.onTap(geoPoint, mapView)这个方法,如果点击了图标,返回的结果是
//true,如果没有点到图标,即在区域之外,返回的结果是false,这个重载方法是对地图
//而言的,只要点击了地图,就会触发,通过super.onTap(geoPoint, mapView)的返回
//结果来判断是否点击到了图标
if (!super.onTap(geoPoint, mapView)) {
//移除已经显示的信息窗口
removeInfoWindow();
}
return true;
}
参考来源:
http://groups.google.com/group/android-developers/browse_thread/thread/91d4e6d87151a0e1/fceaec7c7e3850e8?show_docid=fceaec7c7e3850e8#
http://stackoverflow.com/questions/4971749/android-itemizedoverlay-ontouchevent-and-ontap-overlapping
1.
onTap(GeoPoint p, MapView mapView)
Handle a tap event.
2.
onTap(int index)
Override this method to handle a "tap" on an item.
两种方法可以同时重载,利用第二种重载方法我们可以在点击图标时弹出信息窗口,如下:
但是仅仅重载第二个onTap是不够的,当用户点击图标之外的区域,正常逻辑是信息窗应该消失,但是情况恰恰相反,点击图标区域之外信息窗不会消失,怎么处理呢?
这时我们可以重载第一个方法(
onTap(GeoPoint p, MapView mapView)),当用户点击图标之外的区域,清空信息窗列表,如下:
代码结构可以这么写:
@Override
protected boolean onTap(int i) {
//得到当前点击的对象
OverlayItem item = mOverlays.get(i);
setFocus(item);
//点击图标显示信息窗口
showInfoWindow(item);
//必须返回true,让后面一个onTap方法知道点击了图标
return true;
}
@Override
public boolean onTap(GeoPoint geoPoint, MapView mapView) {
//注意super.onTap(geoPoint, mapView)这个方法,如果点击了图标,返回的结果是
//true,如果没有点到图标,即在区域之外,返回的结果是false,这个重载方法是对地图
//而言的,只要点击了地图,就会触发,通过super.onTap(geoPoint, mapView)的返回
//结果来判断是否点击到了图标
if (!super.onTap(geoPoint, mapView)) {
//移除已经显示的信息窗口
removeInfoWindow();
}
return true;
}
参考来源:
http://groups.google.com/group/android-developers/browse_thread/thread/91d4e6d87151a0e1/fceaec7c7e3850e8?show_docid=fceaec7c7e3850e8#
http://stackoverflow.com/questions/4971749/android-itemizedoverlay-ontouchevent-and-ontap-overlapping
相关文章推荐
- Android中Google Maps的MapView 申请apiKey
- [转]android MapView 定位与Overlay onTap事件处理
- android MapView 定位与Overlay onTap事件处理
- android MapView 定位与Overlay onTap事件处理
- Android ViewFlipper简单用法解析
- Android开发之ViewSwitcher用法实例
- android 控件-TextView用法整理
- Android中的搜索框(SearchView)的功能和用法
- Android中WebView用法实例分析
- android TextView 带滚动条,和ScrollView 用法(暂时觉得ScrollView滑动速度比较快)
- android.view.InflateException:: Error inflating class com.esri.android.map.MapView
- 举例说明Android中ViewFlipper的用法
- Android开发:SurfaceView基本用法总结及开发问题分享
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- Android属性动画完全解析(三)-Interpolator和ViewPropertyAnimator的用法
- Android中SurfaceView用法示例
- Android ViewSwitcher 的功能与用法
- Android中SurfaceView用法简单实例
- Android中ImageView用法实例分析
- Android WebView用法和WebView加载提升网页速度