一、首先我们来看一个网络图层:

http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer,这是全球街道图。加载的代码也很简单:

 private static final String WORLD_STREETS_URL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";private MapView mMapView = null;private ArcGISTiledMapServiceLayer mWorldStreetsLayer = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.map_view);mWorldStreetsLayer = new ArcGISTiledMapServiceLayer(WORLD_STREETS_URL);mMapView.addLayer(mWorldStreetsLayer);mWorldStreetsLayer.setOnStatusChangedListener(new OnStatusChangedListener() {@Overridepublic void onStatusChanged(Object o, STATUS status) {if (status==STATUS.INITIALIZED){Log.i("huang","加载成功");}else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){Log.i("huang","加载失败");}}});}

效果图 

问:为什么用ArcGISTiledMapServiceLayer 加载而不用其他图层加载呢?

用浏览器打开 
http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer,可以看到详细信息。 
它的子图层只有一个: 

下面是坐标信息,注意Single Fused Map Cache: true,支持缓存。 
与Tile Info信息,

 
通过信息说明这是一个TiledLayer,而ArcGISTiledMapServiceLayer是TiledLayer子类的子类,看一下ArcGISTiledMapServiceLayer的介绍 

点开World Street Map链接, 
http://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer/0,这是它的唯一子图层。真正加载的也是这个图层 
 
Type虽然说是FeatureLayer,但它得用ArcGISFeatureLayer加载。

ArcGISFeatureLayer arcGISFeatureLayer = new ArcGISFeatureLayer(WORLD_STREETS_URL+"/0", ArcGISFeatureLayer.MODE.ONDEMAND);SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(Color.argb(0,0,0,0),SimpleFillSymbol.STYLE.SOLID);mMapView.addLayer(arcGISFeatureLayer);arcGISFeatureLayer.setRenderer(new SimpleRenderer(simpleFillSymbol));arcGISFeatureLayer.setOnStatusChangedListener(new OnStatusChangedListener() {@Overridepublic void onStatusChanged(Object o, STATUS status) {if (status==STATUS.INITIALIZED){Log.i("huang","加载成功");}else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){Log.i("huang","加载失败");}}});

上面虽然加载成功,但并看不到图层,而且报错:

FeatureSetCallback.onError
com.esri.core.io.EsriServiceException: Requested operation is not supported by this service. The requested capability is not supported.

 仔细再看网络信息, 

 大体上知道为什么报 The requested capability is not supported。也就是不能用这种方法加载,而得用前面的代码加载!!!

ArcGISDynamicMapServiceLayer

服务地址: 
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer,这是美国的高铁图。 
用浏览器打开,有三个子图层,Single Fused Map Cache: false! 
 
下面是ArcGISDynamicMapServiceLayer的介绍: 
 
加载代码 :

 private static final String DYNAMIC_USA_HIGHWAY_URL = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer";private ArcGISDynamicMapServiceLayer usaHighwayLayer = null;private MapView mMapView = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.map_view);usaHighwayLayer = new ArcGISDynamicMapServiceLayer(DYNAMIC_USA_HIGHWAY_URL);mMapView.addLayer(usaHighwayLayer);usaHighwayLayer.setOnStatusChangedListener(new OnStatusChangedListener() {@Overridepublic void onStatusChanged(Object o, STATUS status) {if (status==STATUS.INITIALIZED){Log.i("huang","加载成功");}else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){Log.i("huang","加载失败");}}});}

效果图 

二、ArcGISFeatureLayer加载图层

服务地图 
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0,也就是上面服务的子图层。

 ArcGISFeatureLayer arcGISFeatureLayer = new ArcGISFeatureLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0", ArcGISFeatureLayer.MODE.ONDEMAND);mMapView.addLayer(arcGISFeatureLayer);arcGISFeatureLayer.setRenderer(new SimpleRenderer(new SimpleLineSymbol(Color.argb(250, 52, 17, 255),2))); arcGISFeatureLayer.setOnStatusChangedListener(new OnStatusChangedListener() { @Override public void onStatusChanged(Object o, STATUS status) { if (status==STATUS.INITIALIZED){ Log.i("huang","加载成功"); }else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ Log.i("huang","加载失败"); } } });

注意要设置setRenderer,效果 
 
ArcGISFeatureLayer 具有FeatureLayer的一些查询方法,与前面几讲里FeatureLayer查询相似,这里不再讲了。

//查询要素方法
queryIds(Query query, CallbackListener<int[]> callback)
queryFeatures(Query query, CallbackListener<FeatureSet> callback)

在http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/0,页面底部,

点击Query进入查询要素界面,可直接 查询要素

where 1=1,点击Query(GET),可得到以下结果集

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7752063.html,如需转载请自行联系原作者

Android GIS开发系列-- 入门季(15) 网络图层加载相关推荐

  1. Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件

    Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...

  2. Android GIS开发系列-- 入门季(11) Callout气泡的显示

    一.气泡的简单显示 首先我们要获取MapView中的气泡,通过MapView的getCallout()方法获取一个气泡.看一下Callout的简单介绍: 大体的意思是通过MapView获取Callou ...

  3. Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询

    FeatureLayer是要素图层,也是Arcgis的主要图层.用这个图层可以加载本地的shp文件.下面我们看怎样加载shp文件到MapView中.查看ArcGis API可知FeatureLayer ...

  4. android 之ListView分页效果以及从网络上加载数据一系列的综合运用

    数据分页策略: <1>:用多少查多少 <2>:全部查询出来,再进行分页处理 数据分页的有关算法: (1):起始索引值 = (当前页-1)*每页显示的记录数 (2):结束索引值 ...

  5. android MVP连接服务器,Android之MVP模式实现登陆和网络数据加载

    MVP简介 相信你们对 MVC 都是比较熟悉了:M-Model-模型.V-View-视图.C-Controller-控制器,MVP做为MVC的演化版本,也是做为用户界面(用户层)的实现模式,那么相似的 ...

  6. 《 Android物联网开发从入门到实战》

    今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...

  7. 《 Android物联网开发从入门到实战》国内第一本开发书籍!

    今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...

  8. Android游戏开发的入门实例

         在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬.那怎样开发Android游戏呢?下面介绍一个简单的入门实例.        一.创建 ...

  9. Android商城开发系列

    Android商城开发系列(一)--开篇 Android商城开发系列(二)--App启动欢迎页面制作 Android商城开发系列(三)--使用Fragment+RadioButton实现商城底部导航栏 ...

  10. Android自定义控件开发系列(零)——基础原理篇

    在后边的文章中发现在说Android自定义时,有时候要重复解释很多东西,所以想想返回来增加一篇"基础原理篇",直接进入正题吧-- 首先的问题是:在Android项目开发中,什么时候 ...

最新文章

  1. SAP WMSD集成之Copy WM Quantity
  2. SD-WAN5年增长率超过40%,为什么越来越受到企业欢迎?
  3. 伪距定位算法(matlab版)
  4. UA MATH574M 统计学习II 二元分类例子与高维问题
  5. C++中的运算符优先级
  6. ES权威指南[官方文档学习笔记]-8
  7. struts 2中为什么抽象包不能包含action?
  8. hazelcast入门教程_Hazelcast入门指南第6部分
  9. 记录A component required a bean named ‘studentService‘ that could not be found.
  10. 对标Postman的ApiPost创始人:用户,是ApiPost唯一的信仰
  11. Oracle与MySQL使用区别
  12. protobuf3 自定义option_ProtoBuf3语法指南(Protocol Buffers)_下
  13. 图的表示:如何存储微博、微信等社交网络中的好友关系
  14. docker 进入停止的容器_在Docker中运行一个Ubuntu镜像
  15. 数字时代的必经之路,汽车经销商(4S)行业的信息化特点
  16. 《机械工程测试技术基础》教学大纲
  17. 软件文档的类型有哪些?
  18. Android N 程序适配要点
  19. 中国电信向小米释放善意,高度认可它的5G性能领先而不是华为
  20. 互联网无插件直播流媒体服务器方案EasyNVR下载新的软件执行程序,出现“invalid license”字样是什么意思?

热门文章

  1. 面向对象编程(十)——继承之Super关键字及内存分析
  2. Discuz 3x重新声明内置函数$解决jQuery冲突
  3. 我的PDF阅读器之muPDF的编译
  4. 从2013年下半年始计算机等级考试大纲有重要调整
  5. 用组策略彻底禁止USB存储设备、光驱、软驱、ZIP软驱
  6. 问题记录:模组屏调试点亮
  7. 编程基础(四)——cache之一
  8. 第二部分 Automake的标准工程组织
  9. linux下测试磁盘的读写IO速度(IO物理测速)
  10. L1- 017——024