ArcGIS for Android示例解析之地图旋转-----MapRotation
MapRotation添加地图控件,并且为地图容器中添加地图服务上面已经介绍完了,下面我们来个复杂一点的,这个例子主要实现了地图的旋转功能,下面来看一下应用的布局文件main.xml,内容如下: xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ma
MapRotation
添加地图控件,并且为地图容器中添加地图服务上面已经介绍完了,下面我们来个复杂一点的,这个例子主要实现了地图的旋转功能,下面来看一下应用的布局文件main.xml,内容如下:
<com.esri.android.map.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" initExtent="-1.3296373526814876E7 3930962.41823043 -1.2807176545789773E7 4201243.7502468005"/> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/test" android:background="@drawable/picture" > |
布局文件中添加了一个地图的‘MapView’控件和一个图片按钮,“MapView”控件用来添加地图服务,而图片按钮控件是用来显示一个图片。
下面我们来看一下MapRotation.java文件中的代码:
setContentView(R.layout.main); map = (MapView) findViewById(R.id.map);
ArcGISTiledMapServiceLayer url=new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");//定义一个切片服务 map.addLayer(url);//添加切面服务到map中 //设置地图可以旋转,通过设置这个属性我们就可以对地图进行旋转操作了 map.setAllowRotationByPinch(true);
compass = new Compass(this,null);//定义的指北针旋转算法 map.addView(compass);//添加指北针到map中 test = (ImageButton)findViewById(R.id.test); |
从上面的代码中可以看出想要实现地图可以旋转,非常简单,只需要设置
map.setAllowRotationByPinch(true); 为真即可,而下面的代码中定义了再地图旋转时的一些事件监听及其处理操作,如下:
//添加点击一下地图控件时监听的事件及其处理操作 map.setOnSingleTapListener(new OnSingleTapListener() {
private static final long serialVersionUID = 1L;
@Override public void onSingleTap(float x,float y) { //设置map的旋转角度为0 map.setRotationAngle(0); //设置指北针的角度 compass.setRotationAngle(map.getRotationAngle()); //重新绘制指北针 compass.postInvalidate();
} });
//给map添加一个两手指捏及其旋转的事件监听及其处理操作 map.setOnPinchListener(new OnPinchListener() {
private static final long serialVersionUID = 1L;
@Override public void prePointersUp(float arg0,float arg1,float arg2, float arg3, double arg4) { //获取地图的当前地图旋转角度 map.getRotationAngle(); //设置指北针的角度 compass.setRotationAngle(map.getRotationAngle()); //重新绘制指北针 compass.postInvalidate();
}
@Override public void prePointersMove(float arg0,float arg1,float arg2, float arg3, double arg4) { // TODO Auto-generated method stub
}
@Override public void prePointersDown(float arg0,float arg1,float arg2, float arg3, double arg4) { // TODO Auto-generated method stub
}
@Override public void postPointersUp(float arg0,float arg1,float arg2, float arg3, double arg4) { // TODO Auto-generated method stub
}
@Override public void postPointersMove(float arg0,float arg1,float arg2, float arg3, double arg4) { // TODO Auto-generated method stub
}
@Override public void postPointersDown(float arg0,float arg1,float arg2, float arg3, double arg4) { // TODO Auto-generated method stub
} }); |
在上面的代码中可以看到,我们给map添加了两个事件监听:一个是点击一下地图控件恢复地图的旋转角度为0,并且改变指北针的角度通过map的旋转角度来计算,另一个监听操作为通过两根手指来旋转地图来改变指北针的角度,这个事件监听类重写了6个方法,我们可以写一些其他的操作在这些重写的方法中。
到此Map_View中的例子已经介绍完毕,在例子中的都是一些基本的操作没有什么过于复杂的,稍后的例子中将深入了解ArcGIS for Android的大千世界。更多推荐
所有评论(0)