作者:xinxin

      随着GIS行业的发展,越来越大的数据应用于移动端,但相比PC端,同一份大小的数据在移动端显示要比在PC端慢,这就有必要通过其他方式来提升数据加载和显示的性能了。在使用SuperMap iMobile for Android产品加载和显示地图时,为了提高性能除了在配图时抽稀数据、设置图层最大最小可见比例尺和创建数据集空间索引等方法外,还可以做离线切片。一般对只浏览的数据做离线切片,下面小编将分享离线切片的制作和在移动端的不同加载方式。
#####1、离线切片制作
      离线切片又叫地图缓存,一般在SuperMap iDesktop中生成。在生成地图缓存时可以设置缓存的级别和比例尺、切缓存的范围和存储类型,如下图:


![这里写图片描述]() 
 

  ![这里写图片描述]() 
 切完地图缓存后得到如下图文件: 

  ![这里写图片描述]() 
 

  ![这里写图片描述]() 
 **PS**:如果切的地图缓存的级别较多,比例尺较大,用“原始”存储类型切出来的数据瓦片很多,拷贝到移动设置上耗时太久,建议选“紧凑”的存储类型,数据量小,方便拷贝。 #####**2、离线切片加载** #####**1)以影像引擎加载** 将切好的地图缓存拷贝到移动设备的某个路径下,加载数据的代码如下: ``` m_workSpace = new Workspace(); //将地图显示控件和工作空间关联 m_mapView = (MapView)findViewById(R.id.Map_view); m_mapControl = m_mapView.getMapControl(); m_mapControl.getMap().setWorkspace(m_workSpace); //缓存数据路径 String server = sdcard + "/SampleData/长春市区图/长春市区图.sci"; DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //设置Server info.setServer(server); //设置数据源连接的引擎类型为影像只读引擎类型 info.setEngineType(EngineType.IMAGEPLUGINS); //获取数据源集合 Datasources datasources = m_workSpace.getDatasources(); //打开数据源 Datasource ds = datasources.open(info); //添加到地图窗口中 m_mapControl.getMap().getLayers().add(ds.getDatasets().get(0),true); //全幅显示 m_mapControl.getMap().viewEntire(); ``

`

#####2)以Rest服务方式加载
用Rest服务方式加载前需要配置数据,首先,要编辑sci文件中的Provider参数,如下图:
编辑前:


![这里写图片描述]() 
 编辑后: 

  ![这里写图片描述]() 
       在”http://127.0.0.1:8090/iserver/services/map-长春市区图/rest/maps/长春市区图”中”127.0.0.1:8090”、”长春市区图”可以自己设定,但设置的值要和放在移动设置上的路径结构保持一致,其它值保持不变。 在sci文件中设置完后,保存后将地图缓存数据拷贝到移动设备中,路径为”...\SuperMap\data\Rest\127.0.0.1_8090\map_长春市区图\长春市区图”。由于文件名中不能用英文的冒号,所以路径中的”127.0.0.1_8090”用”_”代替”:”,如下图: 

  ![这里写图片描述]()