插曲1-项目开始前夕【我的第一次云项目连载】

折腾一天准备搞个android客户端访问自己搭建的arcgis服务器,结果遇到这么一个问题,经过各种排错方法搞了几乎一天才找到原因。

12-14 17:02:48.476: E/ArcGIS(6730): java.lang.NullPointerException
12-14 17:02:48.476: E/ArcGIS(6730):  at com.esri.android.map.ags.ArcGISTiledMapServiceLayer.initLayer(Unknown Source)
12-14 17:02:48.476: E/ArcGIS(6730):  at com.esri.android.map.ags.ArcGISTiledMapServiceLayer$1.run(Unknown Source)
12-14 17:02:48.476: E/ArcGIS(6730):  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
12-14 17:02:48.476: E/ArcGIS(6730):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
 

解决:

错误: tiledMapServiceLayer  = new ArcGISTiledMapServiceLayer(mapURL);

正确:dynamicLayer  = new ArcGISDynamicMapServiceLayer(mapURL);
  

为什么呢?因为arcgis for anroid里面服务器分两类,一类是瓦片服务器 cached (tiled) map services,另一类是动态图 dynamic  map services,相应的在加载地图时,要判断服务器发布地图类型是什么,根据具体情况使用相应API函数。

你可能感兴趣的:(android)