目 录
制作数据
本文主要介绍地图缓存数据制作,以及以服务和影像插件两种方式使用缓存数据。制作数据使用的桌面软件是SuperMap
iDesktop 8C(2017)。
地图缓存数据制作
第一步:双击打开地图。
第二步:单击“地图”选项卡“操作”组中的“地图缓存”按钮。打开“生成地图缓存”对话框,设置生成地图缓存的相关参数。(8C(2017)以下版本“地图缓存”按钮,在“开始”选项卡“缓存”组中)
第三步:设置比例尺。应用程序会默认提供一组比例尺,如果不想使用默认的,可以重新输入。
第四步:设置基本参数。版本号为5.0,剖分方式为本地剖分,设置缓存名称和缓存路径。
第五步:设置范围参数。缓存范围和索引范围使用默认的整幅地图的范围 。
第六步:设置图片存储参数。图片类型为
JPG,离散数据的存储类型为“原始”,紧凑数据的存储类型为“紧凑”,推荐使用紧凑型的数据,块大小为512*512像素。
第七步:点击“生成”按钮,等待数据生成。生成结束后,输出窗口中会有提示内容。
地图缓存生成结果
缓存生成完成后,第一级文件夹中,包含数据文件夹和sci文件,如下图所示:
第二级文件夹中,包含以设置的比例尺命名的文件夹以及一个inf文件,如下图所示:
使用数据
以服务方式打开缓存数据
以服务方式打开缓存文件,访问速度快,是推荐的使用方式。使用时需要先配置数据。
第一步:配置数据
- 编辑文件
打开sci文件,替换provider部分为sml:Provider>http://192.168.120.139:8090/iserver/services/map-changchun/rest/maps/changchun/ sml:Provider>
替换前:
替换后:
路径“http://192.168.120.139:8090/iserver/services/map-changchun/rest/maps/changchun”
“192.168.120.139:8090”、“changchun”的值可自己设定,但必须与自己的文件夹的目录结构相对应;
“map-changchun”中,“map-”是必须的,“changchun”可以自己设定,如“map-nanjing”,并且也要与自己的文件夹目录结构相对应;
此外的其它的值不能修改。
- 存储数据
将生成的缓存数据拷贝到设备中,路径为“…\SuperMap\data\Rest\192.168.120.139_8090\map-changchun\changchun”。此处注意“192.168.120.139_8090”中是下划线代替了冒号,由于文件名不能用英文的冒号,特作此修改。目录结构如下图所示:
第二步:加载数据
以服务的方式打开缓存文件,只需要设置数据的地址以及数据类型(Rest)。关键代码如下:
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 =
"http://192.168.120.139:8090/iserver/services/map-changchun/rest/maps/changchun";
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
//设置Server
info.setServer(server);
//设置数据源连接的引擎类型为REST
地图服务引擎类型info.setEngineType(EngineType.Rest);
//获取数据源集合
Datasources datasources = m_workSpace.getDatasources();
//打开数据源
Datasource ds = datasources.open(info);
//添加到地图窗口中
m_mapControl.getMap().getLayers().add(ds.getDatasets().get(0),true);
//全幅显示
m_mapControl.getMap().viewEntire();
以影像插件的方式打开缓存数据
以影像插件的方式打开缓存文件,需要设置数据的路径以及数据类型(IMAGEPLUGINS)。关键代码如下:
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/changchun/changchun.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();