您的位置:首页 > 移动开发 > Android开发

ArcGIS for Android示例解析之地图旋转-----MapRotation

2012-03-06 09:16 465 查看

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的大千世界。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: