ArcGIS for Android示例解析之地图旋转-----MapRotation
来源:互联网 发布:淘宝客服的专业术语 编辑:程序博客网 时间:2024/04/27 18:40
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的大千世界。- ArcGIS for Android示例解析之地图旋转-----MapRotation
- Arcgis for android 10.2示例代码之MapRotation
- ArcGIS for Android示例解析之地图基础-----HelloWorld
- ArcGIS for Android示例解析之添加地图服务-----AddLayer
- ArcGIS for Android示例解析之离线地图-----LocalTiledLayer
- ArcGIS for Android示例解析之添加bingMap-----AddBingMap
- ArcGIS for Android示例解析之标绘-----DrawGraphicElements
- ArcGIS for Android示例解析之高亮要素-----HighlightFeatures
- ArcGIS for Android示例解析之要素识别-----IdentifyTask
- ArcGIS for Android示例解析之空间查询-----QueryTask
- ArcGIS for Android示例解析之空间查询-----QueryTask
- ArcGIS for Android示例解析之GP服务调用-----ViewShed
- ArcGIS for Android示例解析之地理编码服务-----AGS_Locator
- ArcGIS for Android示例解析之FeatureLayer服务-----SelectFeatures
- ArcGIS for Android示例解析之空间查询-----QueryTask
- Arcgis for android 地图放大镜
- ArcGIS for Android 之本地离线地图添加(LocalTitledLayer)
- ArcGIS Api For Android学习之(二)加载地图
- Filter Control for Visual Studio LightSwitch 本地化处理
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽
- 对象池Object Pool
- SVN 签出源码 Struts Spring Hibernate
- 如何学好程序设计?
- ArcGIS for Android示例解析之地图旋转-----MapRotation
- 流媒体服务器、转发、客户端心得标签
- iOS UIViewController 对内存警告的处理经验
- A Macro Defined Ring Buffer(C Language)
- 电子技术课程设计报告
- ArcGIS for Android示例解析之标绘-----DrawGraphicElements
- 开发的郁闷,360浏览器页面自动提交两次,servlet也难逃摧残
- 智能车笔记4 内部中断(时钟中断)
- 把apache和jettty(jboss/tomcat)通讯从mod_jk方式调整为mod_proxy方式后,应该获取IP方式要修改。