Arcgis For Android

一、环境配置

  1. 在线模式
    在线配置非常简单,在Android Studio 新建一个项目,在build.gradle里添加如下代码
allprojects{
           repositories{
           jcenter()
           maven{
                   url'https://esri.bintray.com/arcgis'
           }
       }
   }

    subprojects{
            afterEvaluate{project->
                 if(project.hasProperty("dependencies")){
                            dependencies{
                                    compile'com.esri.arcgis.android:arcgis-android:10.2.7'
                            }
                    }
            }
    }
  1. 离线模式
  • 注册一个Arcgis账户:http://www.arcgis.com/features/free-trial.html
  • 下载离线SDK:https://developers.arcgis.com/downloads/
  • 导包,将jar包放进libs文件夹中,然后右键,点击Add as Library。
  • 在main文件夹下新建一个JniLibs文件夹,将armeabi、arm64-v8a...等文件夹放进去。
    在build.gradle的android{}中配置
packagingOptions{
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
}

Arcgis for Android的环境配置就完成了。

二、基本用法

  1. 在布局文件中添加

  1. 初始化地图
        mMapView = (MapView) findViewById(R.id.map);
        //加载底图
        mMapView.addLayer(new ArcGISTiledMapServiceLayer(
             "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineStreetCold/MapServer"));
  1. 地图去除水印
        String clientID = "273DobVpQjOHcrZe";
        ArcGISRuntime.setClientId(clientID);
  1. 地图操作常用API
        //缩放
  mMapView.zoomIn(...) //--放大
  mMapView.zoomOut(...)//--缩小
  mMapView.zoomToResolution(...); 
  mMapView.zoomToScale(...);
       //控制显示范围 
       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);//转换成屏幕坐标对象
  1. 地图的监听
  • 地图单击监听:OnSingleTapListener(Code中的应用,单击在地图上显示的graphic点时,需要将graphic在地图上的坐标转化成屏幕坐标,然后使用ArcGis for Android中Callout展示相应的数据)
  • 平移监听:OnPanListener //--这里指的是地图平移的监听,Code中的使用Nothing.
  • 长按监听:OnLongPressListener //--地图上某一点的长按监听,Code中的使用,定义当前事件点.
  • 缩放监听:OnZoomListener //--对地图的缩放操作,Code中的使用Nothing.
  • 状态监听:OnStatusChangedListener //--状态监听,主要是当前Mapview的状态变化相对应的CallBack.
  • pinch 监听:OnPinchListener //--这里是对地图进行多指缩放(地图的放大和缩小)
  1. 图层

    1. ArcGISTiledMapServiceLayer
          切片图层,顾名思义,片状的展示数据,设计多线程的操作,故而处理速度快.
       2. ArcGISDynamicMapServiceLayer
          性能低于(1),主要依赖数据的复杂度.
       3. ArcGISImageServiceLayer
          基本等同(2)
       4. ArcGISFeatureLayer
       5. ArcGISLocalTiledLayer
          当前项目中正在使用的图层.加载本利离线数据库数据.
       6. GraphicsLayer
          当前项目中各种图标Icon的展示图层,该图层允许添加Graphic.
  2. 绘制

  • 绘制点
//Drawable即Android中对应的PNG.
         PictureMarkerSymbol mSymbol = new PictureMarkerSymbol(drawable);
//--point 绘制点的坐标,symbol图片,attributes需要添加的属性信息.
         graphicsLayer.addGraphic(new Graphic(point, mSymbol,atttributes)); 
  • 绘制线
    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);

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

你可能感兴趣的:(Arcgis For Android)