移动ArcgisAndroid知识

Arcgis For Android

2017-10-16  本文已影响39人  _执_念__

一、环境配置

  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. 离线模式
packagingOptions{
        exclude 'META-INF/LGPL2.1'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
}

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

二、基本用法

  1. 在布局文件中添加
<com.esri.android.map.MapView
       android:id="@+id/map"
       android:layout_width="fill_parent"
       android:layout_height="match_parent" />
  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. 地图的监听
  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);

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

上一篇 下一篇

猜你喜欢

热点阅读