ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件
2015-07-27 09:46
495 查看
原址:http://blog.csdn.net/ArcGIS_Mobile/article/details/8263283
ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示:
[java] view
plaincopy
myListener = new MyTouchListener(this, mapView);
mapView.setOnTouchListener(myListener);
/*
* MapView's touch listener
*/
class MyTouchListener extends MapOnTouchListener {
public MyTouchListener(Context context, MapView view) {
super(context, view);
}
public void setType(String geometryType) {
this.type = geometryType;
}
public String getType() {
return this.type;
}
public boolean onSingleTap(MotionEvent e) {
return true;
}
public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {
return super.onDragPointerMove(from, to);
}
@Override
public boolean onDragPointerUp(MotionEvent from, MotionEvent to) {
return super.onDragPointerUp(from, to);
}
}
通过上面代码的方式我们就可以监听到不同的手势操作,对于不同的手势操作将执行不通过方法,通过这些方法我们可以添加我们所需的操作功能。如,当我们在地图上点击时弹出一个窗体,我们只需在onSingleTap()方法中完成点的获取、窗体的创建及其弹出操作即可。
[java] view
plaincopy
//为地图添加一个长按监听器
mapView.setOnLongClickListener(new View.OnLongClickListener() {
//长按后自动执行的方法
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
return false;
}
});
[java] view
plaincopy
//为地图添加一个平移监听器
mapView.setOnPanListener(new OnPanListener() {
public void prePointerUp(float fromx, float fromy, float tox, float toy) {
}
public void prePointerMove(float fromx, float fromy, float tox, float toy) { }
public void postPointerUp(float fromx, float fromy, float tox, float toy) { }
public void postPointerMove(float fromx, float fromy, float tox, float toy) {
}
});
[java] view
plaincopy
//为地图添加夹/捏监听器
mapView.setOnPinchListener(new OnPinchListener() {
public void prePointersUp(float x1, float y1, float x2, float y2,
double factor) {
}
public void prePointersMove(float x1, float y1, float x2, float y2,
double factor) {
}
public void prePointersDown(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersUp(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersMove(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersDown(float x1, float y1, float x2, float y2,
double factor) {
}
});
[java] view
plaincopy
//为地图添加单击事件监听
mapView.setOnSingleTapListener(new OnSingleTapListener() {
//点击地图后自动执行的方法
public void onSingleTap(float x, float y) {
// TODO Auto-generated method stub
}
});
[java] view
plaincopy
//添加状态监听器
mapView.setOnStatusChangedListener(new OnStatusChangedListener() {
public void onStatusChanged(Object source, STATUS status) {
if(status == STATUS.INITIALIZED){
}else if(status == STATUS.LAYER_LOADED){
}else if((status == STATUS.INITIALIZATION_FAILED)){
}else if((status == STATUS.LAYER_LOADING_FAILED)){
}
}
});
从上面的代码我们可以清晰看到,对于MapView的状态变化主要有四种:
1) STATUS.INITIALIZED初始化成功
2) STATUS.LAYER_LOADED图层加载成功
3) STATUS.INITIALIZATION_FAILED初始化失败
4) STATUS.LAYER_LOADING_FAILED图层加载失败
[java] view
plaincopy
mapView.setOnZoomListener(new OnZoomListener() {
//缩放之前自动调用的方法
public void preAction(float pivotX, float pivotY, double factor) {
}
//缩放之后自动调用的方法
public void postAction(float pivotX, float pivotY, double factor) {
}
});
ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示:
1.1 MapOnTouchListener
MapOnTouchListener是MapView最为重要的监听器之一,它实现了OnTouchListener和MapGestureDetector.OnGestureListener接口,对于地图的所有操作MapOnTouchListener都可以进行相应,使用非常方便,在使用前我们只需扩展这个类并重写该类中的方法即可。用法如下[java] view
plaincopy
myListener = new MyTouchListener(this, mapView);
mapView.setOnTouchListener(myListener);
/*
* MapView's touch listener
*/
class MyTouchListener extends MapOnTouchListener {
public MyTouchListener(Context context, MapView view) {
super(context, view);
}
public void setType(String geometryType) {
this.type = geometryType;
}
public String getType() {
return this.type;
}
public boolean onSingleTap(MotionEvent e) {
return true;
}
public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {
return super.onDragPointerMove(from, to);
}
@Override
public boolean onDragPointerUp(MotionEvent from, MotionEvent to) {
return super.onDragPointerUp(from, to);
}
}
通过上面代码的方式我们就可以监听到不同的手势操作,对于不同的手势操作将执行不通过方法,通过这些方法我们可以添加我们所需的操作功能。如,当我们在地图上点击时弹出一个窗体,我们只需在onSingleTap()方法中完成点的获取、窗体的创建及其弹出操作即可。
1.2 OnLongPressListener
OnLongPressListener接口主要用于监听在地图上的长按事件,用法如下:[java] view
plaincopy
//为地图添加一个长按监听器
mapView.setOnLongClickListener(new View.OnLongClickListener() {
//长按后自动执行的方法
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
return false;
}
});
1.3 OnPanListener
OnPanListener接口是用于当我们在MapView上平移地图操作时的事件监听,用法如下:[java] view
plaincopy
//为地图添加一个平移监听器
mapView.setOnPanListener(new OnPanListener() {
public void prePointerUp(float fromx, float fromy, float tox, float toy) {
}
public void prePointerMove(float fromx, float fromy, float tox, float toy) { }
public void postPointerUp(float fromx, float fromy, float tox, float toy) { }
public void postPointerMove(float fromx, float fromy, float tox, float toy) {
}
});
1.4 OnPinchListener
OnPinchListener接口也是我们经常用到,它是对地图进行两指或多指进行操作时用到的事件监听,比如我们可以通过该接口实现两指夹/捏进行地图地图缩放。用法如下:[java] view
plaincopy
//为地图添加夹/捏监听器
mapView.setOnPinchListener(new OnPinchListener() {
public void prePointersUp(float x1, float y1, float x2, float y2,
double factor) {
}
public void prePointersMove(float x1, float y1, float x2, float y2,
double factor) {
}
public void prePointersDown(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersUp(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersMove(float x1, float y1, float x2, float y2,
double factor) {
}
public void postPointersDown(float x1, float y1, float x2, float y2,
double factor) {
}
});
1.5 OnSingleTapListener
OnSingleTapListener接口是我们对地图进行点击操作时的事件监听器,用法如下:[java] view
plaincopy
//为地图添加单击事件监听
mapView.setOnSingleTapListener(new OnSingleTapListener() {
//点击地图后自动执行的方法
public void onSingleTap(float x, float y) {
// TODO Auto-generated method stub
}
});
1.6 OnStatusChangedListener
OnStatusChangedListener接口用于监听MapView或Layer状态变化的监听器,用法如下:[java] view
plaincopy
//添加状态监听器
mapView.setOnStatusChangedListener(new OnStatusChangedListener() {
public void onStatusChanged(Object source, STATUS status) {
if(status == STATUS.INITIALIZED){
}else if(status == STATUS.LAYER_LOADED){
}else if((status == STATUS.INITIALIZATION_FAILED)){
}else if((status == STATUS.LAYER_LOADING_FAILED)){
}
}
});
从上面的代码我们可以清晰看到,对于MapView的状态变化主要有四种:
1) STATUS.INITIALIZED初始化成功
2) STATUS.LAYER_LOADED图层加载成功
3) STATUS.INITIALIZATION_FAILED初始化失败
4) STATUS.LAYER_LOADING_FAILED图层加载失败
1.7 OnZoomListener
OnZoomListener接口主要监听地图的缩放事件,用法如下:[java] view
plaincopy
mapView.setOnZoomListener(new OnZoomListener() {
//缩放之前自动调用的方法
public void preAction(float pivotX, float pivotY, double factor) {
}
//缩放之后自动调用的方法
public void postAction(float pivotX, float pivotY, double factor) {
}
});
相关文章推荐
- Android命令行测试BT WiFi Sensor工作状态
- ArcGIS Runtime for Android开发教程V2.0(6)基础篇---空间要素可视化
- ArcGIS Runtime for Android开发教程V2.0(5)基础篇---图层
- ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView
- AndroidJNI.SetCharField 设置字符域
- Android恶意代码分析与渗透测试
- android 读取 AndroidManifest.xml 中的数据:版本号、应用名称、自定义K-V数据(meta-data)
- android_数据库操作_LitePal框架
- android 初识Fresco
- 平安科技移动开发二队技术周报(第十二期)
- Android材料设计兼容函数库(Design Support Library)(II)浮动操作按钮(Floating Action Button)
- Android材料设计兼容函数库(Design Support Library)(I)导航视图(Navigation View)
- Android开发书籍推荐
- android 显示特殊符号
- android HDMI 清晰度 分辨率
- Android DataBinding:再见Presenter,你好ViewModel!
- android各种组件的监听器
- android各种组件的监听器 分类: Android 2015-07-27 09:25 13人阅读 评论(0) 收藏
- AndroidJNI.SetCharField 设置字符域
- Android 权限大全