ArcGis for Android 工作与学习

ArcGis安装
需求
  windows7(32/64)
  Eclipse3.6以上版本
  Android Sdk 2.2以上
  Jdk 7

安装步骤
  Eclipse安装
    下载ArcGis插件
    在Eclipse上打开 Help >> Install New Software

创建Arcgis项目
  创建方式等同Android项目,不同点创建项目时,选择创建Arcgis项目,然后傻瓜式的next即可。(默认支持的最低sdk是2.2)

项目测试
补充:
  Arcgis绘制不同于Android,并不是在UI(main)线程完成绘制,而是使用OpenGL完成的绘制(好处:采用GPU绘制,大大降低了对CPU的依赖,所以绘制会变得更加连贯自然,绘制OpenGL有专门的绘制线程,不会影响主线程)

模拟器测试需注意:
  ArcGIS Runtime SDK for Android 使用 OpenGL ES 2.0。如果用模拟器开发,需要使用 Android 4.0.3 以上版本的模拟器(支持 GPU)

ArcGis中主要的控制继承自FramLayout的MapView
  MapView
    1,MapView是呈现地图数据的容器,MapView可以添加一个或多个图层;图层只有添加到 MapView 容器中才能进行显示。其次,通过 MapView 可以设置地图的显示范围、是否允许被旋转、地图背景、地图的最大/最小分辨率及
  其指定当前显示的分辨率/比例尺。最后,MapView 提供了丰富的手势监听接口,通过这些监听器,可以监听各种手势动作,如点击,双击,移动或长按等操作

  2,MapView的添加方式两种
    XML添加即:
    <com.esri.android.map.MapView
       android:id="@+id/map"
       android:layout_width="fill_parent"
       android:layout_height="match_parent">
    代码中动态添加:
    MapView map = new MapView(this);//--new MapView对象
    map.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
    LayoutParams.FILL_PARENT)); //--设置LayoutParams
    tileLayer = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"); //--切片图层的创建
    map.addLayer(tileLayer);//--图层的添加
    setContentView(map ); //--将图层添加给窗体,最后显示在手机上.
3,地图的缩放(API)
    1,常用的缩放方式
    mMapView.zoomIn(...) //--放大
    mMapView.zoomOut(...)//--缩小

    2,其他缩放方式
    mMapView.zoomToResolution(...);
    mMapView.zoomToScale(...);
4,常用API的介绍
  Envelope env = new Envelope(...);//范围
  mMapView.setExtent(env)//设置地图显示范围
  mMapView.setScale(295828763);//当前显示的比例尺
  mMapView.setResolution(9783.93962049996);//设置当前显示的分辨率

  mMapView.setMapBackground(...);//设置地图背景
  mMapView.setAllowRotationByPinch(...); //是否允许使用Pinch方式旋转地图
  mMapView.setRotationAngle(...); //初始化时将地图旋转多少度,参数为正时按逆时针方向旋转。

  mMapView.toMapPoint(x,y);//屏幕坐标转换成空间坐标
  mMapView.toScreenPoint(pt);//转换成屏幕坐标对象

5,MapView的listener设置
  地图单击监听:OnSingleTapListener(Code中的应用,单击在地图上显示的graphic点时,需要将graphic在地图上的坐标转化成屏幕坐标,然后使用ArcGis for Android中Callout展示相应的数据)
  平移监听:OnPanListener //--这里指的是地图平移的监听,Code中的使用Nothing.
  长按监听:OnLongPressListener //--地图上某一点的长按监听,Code中的使用,定义当前事件点.
  缩放监听:OnZoomListener //--对地图的缩放操作,Code中的使用Nothing.
  状态监听:OnStatusChangedListener //--状态监听,主要是当前Mapview的状态变化相对应的CallBack.
  pinch 监听:OnPinchListener //--这里是对地图进行多指缩放(地图的放大和缩小)

图层
  切片图层、动态图层、本地图层等等
  1,ArcGISTiledMapServiceLayer
    切片图层,顾名思义,片状的展示数据,设计多线程的操作,故而处理速度快.
  2, ArcGISDynamicMapServiceLayer
    性能低于(1),主要依赖数据的复杂度.
  3,ArcGISImageServiceLayer
    基本等同(2)
  4,ArcGISFeatureLayer
  5, ArcGISLocalTiledLayer
    当前项目中正在使用的图层.加载本利离线数据库数据.
  6,GraphicsLayer
    当前项目中各种图标Icon的展示图层,该图层允许添加Graphic.
  例如:
    PictureMarkerSymbol mSymbol = new PictureMarkerSymbol(drawable);//Drawable即Android中对应的PNG.
    graphicsLayer.addGraphic(new Graphic(point, mSymbol,atttributes)); //--point 绘制点的坐标,symbol图片,attributes需要添加的属性信息.

SpatialReference
  空间参考,主要用于坐标系的转换操作(空间坐标系到投影坐标系的转换,反之亦然).

绘制操作
  绘制点(Icon.图层.6)

  绘制线.
    Polyline mPloyline = new Polyline();//--绘制线段的对象
    SimpleLineSymbol outline = new SimpleLineSymbol(Color.RED, 3, STYLE.SOLID);//--为线段设置属相,如线段的颜色,样式

    mPloyline.setEmpty();//--清空之前的所有数据 仅仅在Down的时候清空即可.
    mPloyline.startPath(pressPoint); //--设置绘制的起始位置. 仅仅在Down的时候清空即可
    mPolyline.lineTo(movePoint); //--设置当前位置移动的下一个位置点.Move的时候调用此处

    Graphic graphic = new Graphic(myCustomPolyline, outline);//--创建Graphic 仅仅一次
    mPolygonId = mCustomGraphicLayer.addGraphic(graphic); //--将Graphic添加到图层 仅仅一次
    mCustomGraphicLayer.updateGraphic(mPolygonId, myCPolyline); //--更新当前数据到图层.

    Notes:如果你希望绘制的折现最后是闭合状态,这里可通过设置mPloyline.lineTo(pressPoint);

  绘制面(等同之上的操作,唯一不同点在于绘制对象)
    Polygon mPolygon = new Polygon();
    SimpleFillSymbol mPolygonSymbol = new SimpleFillSymbol(color);
    ...
    Graphic graphic = new Graphic(mPolygon,mPolygonSymbol);
    mPolygonId = mCustomGraphicLayer.addGraphic(graphic);  
    mCustomGraphicLayer.updateGraphic(mPolygonId, myCPolyline);

    Notes:这里是对面的绘制操作,面顾名思义就是闭合状态,所以整个绘制过程中面都处于闭合状态;

从开始学习到现在一个月的时间了,懂的实在是太少了,我这里提几个我不懂的问题,希望路过的大神会的留个脚印,解答疑惑.

mMapView.setScale();
mMapView.setResolution();

上述API的区别,虽然他们能起到相同的效果,但是还是没区分出来分辨率和比例尺的最终区别?其次我想应该是有办法转换的,根据是他们有等同的效果?

地理坐标系,空间坐标系(实际坐标系单位为米)?

时间: 2024-08-06 00:47:09

ArcGis for Android 工作与学习的相关文章

ArcGIS for Android学习(一)

GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map.MapControl类的作用是一样的. 地图常见的操作有缩放.旋转.平移.获取范围.比例尺.分辨率等信息,以及常用的手势操作,其中,经常使用到的功能和常见问题有以下几个: 1)将地图缩放到指定的比例尺/

记录我在百度地图开发和ArcGIS for Android开发时出现的一些错误及解决方案(后续更新)

[1]The import com.baidu.mapapi.map.Geometry conflicts with a type defined in the same file 解决:百度api包下的Geometry和某个类名相冲突,将类名换成另外的名字,不要和百度相关类里面的类名相同 [2]java.lang.ClassCastException: 解决:类型转换错误.查看Test_Geometry项目的Mainfest.xml清单文件,在<applicaiton>标签里面少了对Myap

ArcGIS for Android 在Eclipse上的安装配置 (下:安装配置篇)

承接上一篇ArcGIS for Android 在 Eclipse上的安装配置(上:下载篇),本文详细说明一下ArcGIS Runtime SDK for Android 在Eclipse环境下安装配置. 本文主要包括两部分: 一.自动安装(适用于arcgis-android-sdk-v10.2.4 以及之前SDK版本): 二.手动配置(适用于arcgis-android-sdk-v10.2.5 以及之后SDK版本): 以下自动安装以v10.2.4版本为例,手动配置以v10.2.5版本为例,默认

Android文档学习01_Android基础

一旦安装到了一个设备,每个应用生存在它自己的安全沙箱 系统给每个应用分配一个独立的Linux用户ID(这个ID只由系统使用并且对应用来说是不可知的) Android系统实现了最小特权原则.默认,每个应用仅仅访问需要工作的组件,并不多做其他的事.这样创建了一个非常安全的环境,应用不能访问系统没有授权的其他部分 有可能安排两个应用共用一个linux系统ID,在那种情况下,它们能互相访问相互的数据.为了节约系统资源,拥用相同用户ID的应用,可能也被安排运行在同一个Linux进程中并共享相同的VM(应用

Android之SurfaceView学习(一)转转

Android之SurfaceView学习(一) 首先我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; the SurfaceView takes care of pla

Android程序员学习之路

和一些刚工作以及未毕业的同学沟通,很多同学对在没有工作机会或熟练Android人员指导的情况下,如何学习Android并提高Android水平比较关心.下面我从几个方面介绍一些方法和方式来和大家分享: 1.Android知识 1.1.网站资源 1.1.1.Android官网 这个是最权威最官方的.主要看设计篇 和开发篇 .API相关接口用到哪一个接口再去看.不用挨个看.当然现在可能会被墙,大家也可以看本地SDK目录下的docs中的index.html打开后的文档. 1.1.2.stackover

我的Android之旅——学习、项目、心态

本文作者: 伯乐在线 - 唐韧 .未经许可,禁止转载!欢迎分享原创到伯乐头条. 来源:唐韧 学习Android也一年多了,项目做了五六个,有大有小,有难有易.一直以来都没有好好总结过,今天周六休息,就写下这一年多从事Android以来的一些感想和小经验.涉及学习.项目和一些个人感受. 1.学习篇 我是从11年5月份开始接触并学习Android的,在那之前有过一年的J2EE的经验,做过三个J2EE的项目,从08年开始接触Java,所以到去年学习Android时,开发语言上我还是比较熟悉的,这也成了

Android开发最佳学习路线图(转)

Android开发总体路线图: 基础学习——JavaSE:        很多朋友一上手就开始学习Android,似乎太着急了一些. Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的.那么Java学到 什么程度才算是过关呢?以下的JAVA的基础(JavaSE)语法知识必须全面掌握. 经典学习视频教程 Java 概述 标示符.关键字1 标示符.关键字2 运算符 流程控制1 流程控制2 字符串数组 面向对象编程特征1 面向

Android直播推流学习

Android直播推流学习 Android直播推流学习 第一部 第二部 第三部 第四部 第一部 本文也主要是一步步分析spydroid源码. 首先spydroid的采用的协议是RTSP,目前我知道支持RTSP协议的服务器是Darwin,但是Darwin比较复杂,所以大家可以选择EasyDarwin,大家可以去搜搜看看.还是继续说spydroid吧,spydroid这个项目大家可以在github上搜到的,不过作者也是很久没有更新了,如果大家只做推流的话可以看看原作者的另外一个项目Spydroid.