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. 离线模式
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);

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容