Arcgis For Android

作者: _执_念__ | 来源:发表于2017-10-16 14:13 被阅读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. 地图的监听
    • 地图单击监听: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

        本文链接:https://www.haomeiwen.com/subject/vlpkuxtx.html