打开地图

打开工作空间

打开工作空间中的地图

打开工作空间中的地图,分为三个步骤:

(1)打开工作空间;

(2)工作空间与地图显示控件关联;

(3)打开工作空间中的地图。

/** ————打开工作空间———— **/ 
m_workspace = new Workspace();
WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
info.setServer(sdCard + "/SampleData/OpenMap/Changchun.smwu");
info.setType(WorkspaceType.SMWU);
m_workspace.open(info);
/** ————工作空间与地图显示控件关联———— **/ 
m_mapView = (MapView) findViewById(R.id.mapView);
m_mapControl = m_mapView.getMapControl();
m_mapControl.getMap().setWorkspace(m_workspace);
/** ————打开工作空间中的地图———— **/ 
String mapName = m_workspace.getMaps().get(0);
m_mapControl.getMap().open(mapName);
m_mapControl.getMap().refresh();

打开工作空间中的数据源

打开工作空间中的数据源,分为三个步骤:

(1)打开工作空间;

(2)工作空间与地图显示控件关联;

(3)打开工作空间中的数据源并加载数据源中的数据集到地图。

/** ————打开工作空间———— **/
m_workspace = new Workspace();
WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
info.setServer(sdCard + "/SampleData/OpenMap/Changchun.smwu");
info.setType(WorkspaceType.SMWU);
m_workspace.open(info);
/** ————将地图显示控件和工作空间关联———— **/
m_mapView = (MapView) findViewById(R.id.mapView);
m_mapControl = m_mapView.getMapControl();
m_mapControl.getMap().setWorkspace(m_workspace);
/** ————打开数据源中的数据集———— **/
m_dataSource = m_workspace.getDatasources().get("changchun");
Dataset dataset = m_dataSource.getDatasets().get("AreaPoly");
m_mapControl.getMap().getLayers().add(dataset,true);
m_mapControl.getMap().viewEntire();
m_mapControl.getMap().refresh();

打开数据源

打开数据源包括三个步骤:

(1)关联工作空间;

(2)打开数据源;

(1)打开数据集。

/** ————关联工作空间———— **/
Workspace workspace = new Workspace();
mMapView = (MapView) findViewById(R.id.mapView);
mMapControl = mMapView.getMapControl();
mMap = mMapControl.getMap();
mMap.setWorkspace(workspace);
/** ————打开数据源———— **/
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.setEngineType(EngineType.UDB);
info.setServer(path);
Datasource datasource = workspace.getDatasources().open(info);
/** ————打开数据集———— **/
if(datasource != null){
   mMap.getLayers().add(datasource.getDatasets().get(0), true);
   mMap.refresh();
}

打开地图服务

/** ————关联工作空间———— **/
Workspace workspace = new Workspace();
mMapView = (MapView) findViewById(R.id.mapView);
mMapControl = mMapView.getMapControl();
mMap = mMapControl.getMap();
mMap.setWorkspace(workspace);
/** ————打开数据源———— **/
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.setAlias("OpenStreetMap2");
info.setEngineType(EngineType.GaoDeMaps);
Datasource datasource = workspace.getDatasources().open(info);
/** ————打开数据集———— **/
if(datasource != null){
	mMap.getLayers().add(datasource.getDatasets().get(0), true);
}
mMap.refresh();

若地图服务含有token,使用时,将token直接加到地址后方即可,参考如下代码:

http://localhost:8090/iserver/services/map-china400/rest.rjson?token=NZklLM9Tl2FEGK_Uh9KHOtOOdS83IDOARAS5_rMVEUTyKOTVGCYV-5m3wUYE-MS NPGwKnewy8jek..

常见GIS数据导入地图

iMobile支持导入常见格式的数据,包括shp、mif、dxf、dwg、tif、img、kml、kmz、gpx、csv等,必须的jar包、so库以及关键类、方法参照下表。

jar包
com.supermap.data.jar、com.supermap.mapping.jar
so库
libimb2d.so、libimbAutoCAD.so(导入dxf、dwg时需要)、libgnustl_shared.so、libQt5Core.so、libQt5Gui.so、libQt5Svg.so、libQt5Widgets.so(注:11.1版本开始,需添加后五个so库。)
关键类
DataConversion、ImportSetting
关键方法
importTIF()、importCSV()、importDWG()、importDXF()、importGPX()、importIMG()、importKML()、importKMZ()、importMIF()、importSHP()

导入shp

导入shp格式的数据,分为三个步骤:

(1)构建SHP导入参数(ImportSettingSHP)(可选步骤);

(2)导入SHP数据(importSHP);

(3)打开导入的SHP数据。

try {
    /** ————导入SHP数据———— **/
    boolean shp = DataConversion.importSHP(strShpPath,udbDatasource);
    /** ————打开导入的SHP数据———— **/
    if (shp == true) {
        dataset = udbDatasource.getDatasets().get("shpImport");
        mLayer = mMapControl.getMap().getLayers().add(dataset, true);
        mLayer.setVisible(true);
        mMapControl.getMap().viewEntire();
        mMapControl.getMap().refresh();
    }		      
} catch (Exception e) {
    e.printStackTrace();
}

导入mif

导入mif格式的数据,分为两个步骤:

(1)导入MIF数据(importMIF);

(2)打开导入的MIF数据。

try {
    /** ————导入MIF数据———— **/
    boolean mif = DataConversion.importMIF(strMifPath,udbDatasource);
    /** ————打开导入的MIF数据———— **/
    if (mif == true) {
         dataset =  udbDatasource.getDatasets().get("mifImportR");
         mLayer = mMapControl.getMap().getLayers().add(dataset, true);
         mLayer.setVisible(true);
         mMapControl.getMap().viewEntire();
         mMapControl.getMap().refresh();
    }		
} catch (Exception e) {
    e.printStackTrace();
}

导入tif

导入tif格式的数据,分为三个步骤:

(1)构建TIF导入参数(ImportSettingTIF)(可选步骤);

(2)导入TIF数据(importTIF);

(3)打开导入的TIF数据。

try {		
    /** ————构建TIF导入参数———— **/
    ImportSettingTIF importSettingTIF = new ImportSettingTIF();
    importSettingTIF.setSourceFilePath(strTifPath);////设置导入数据的路径信息
    importSettingTIF.setTargetDatasetName("tifImport");//设置目标数据集名称
    importSettingTIF.setTargetDatasource(udbDatasource);//设置目标数据源
    importSettingTIF.setSourceFileCharset(Charset.UTF8);/设置导入文件的字符集类型
    importSettingTIF.setMultiBandImportMode(MultiBandImportMode.COMPOSITE);
    importSettingTIF.setTargetEncodeType(EncodeType.DCT);//设置生成数据集的编码类型
    importSettingTIF.setImportingAsGrid(false);
    importSettingTIF.setImportMode(ImportMode.OVERWRITE);
    importSettingTIF.setBuildPyramid(true);
    /** ————导入TIF数据———— **/
    boolean tif = DataConversion.importTIF(importSettingTIF);
    /** ————打开导入的TIF数据———— **/
    if (tif == true) {
        dataset = udbDatasource.getDatasets().get("tifImport");
	 mLayer = mMapControl.getMap().getLayers().add(dataset, true);
         mLayer.setVisible(true);
         mMapControl.getMap().viewEntire();
         mMapControl.getMap().refresh();
} catch (Exception e) {
    e.printStackTrace();
}

导入img

导入img格式的数据,分为三个步骤:

(1)构建IMG导入参数(ImportSettingIMG)(可选步骤);

(2)导入IMG数据(importIMG);

(3)打开导入的IMG数据。

try {
     /** ————构建IMG导入参数———— **/		
    ImportSettingIMG importSettingIMG = new ImportSettingIMG();
    importSettingIMG.setSourceFilePath(strImgPath);
    importSettingIMG.setTargetDatasetName("imgImport");
    importSettingIMG.setTargetDatasource(udbDatasource);
    importSettingIMG.setSourceFileCharset(Charset.UTF8);
    importSettingIMG.setMultiBandImportMode(MultiBandImportMode.COMPOSITE);
    importSettingIMG.setTargetEncodeType(EncodeType.DCT);
    importSettingIMG.setImportMode(ImportMode.OVERWRITE);
    importSettingIMG.setBuildPyramid(true);
    /** ————导入IMG数据———— **/
    boolean img = DataConversion.importIMG(importSettingIMG);
     /** ————打开导入的IMG数据———— **/
    if (img == true) {
        dataset = udbDatasource.getDatasets().get("imgImport");
        mLayer = mMapControl.getMap().getLayers().add(dataset, true);
         mLayer.setVisible(true);
         mMapControl.getMap().viewEntire();
         mMapControl.getMap().refresh();
} catch (Exception e) {
    e.printStackTrace();
}

导入dxf

导入img格式的数据,分为三个步骤:

(1)构建DXF导入参数(ImportSettingDXF)(可选步骤);

(2)导入DXF数据(importIDXF);

(3)打开导入的DXF数据。

try {
    /** ————导入DXF数据———— **/
    boolean dxf = DataConversion.importDXF(strDxfPath,udbDatasource, true);
    /** ————打开导入的DXF数据———— **/
    if (dxf == true) {
        dataset = udbDatasource.getDatasets().get("dxfImport");
        mLayer = mMapControl.getMap().getLayers().add(dataset, true);
        mLayer.setVisible(true);
        mMapControl.getMap().viewEntire();
        mMapControl.getMap().refresh();
   }
} catch (Exception e) {
    e.printStackTrace();
}

导入dwg

导入dwg格式的数据,分为三个步骤:

(1)构建DWG导入参数(ImportSettingDWG)(可选步骤);

(2)导入DWG数据(importDWG);

(3)打开导入的DWG数据。

try {
    /** ————导入DWG数据———— **/
    boolean dwg = DataConversion.importDWG(strDwgPath,udbDatasource, true);
    /** ————打开导入的DWG数据———— **/
    if (dwg == true) {
        dataset =  udbDatasource.getDatasets().get("dwgImport");
        mLayer = mMapControl.getMap().getLayers().add(dataset, true);
        mLayer.setVisible(true);
        mMapControl.getMap().viewEntire();
        mMapControl.getMap().refresh();
    }
} catch (Exception e) {
    e.printStackTrace();
}

导入csv

导入csv格式的数据,分为三个步骤:

(1)构建CSV导入参数(ImportSettingCSV)(可选步骤);

(2)导入CSV数据(importCSV);

(3)打开导入的CSV数据。

try {
    /** ————构建CSV导入参数———— **/
    ImportSettingCSV importSettingCSV = new ImportSettingCSV();
    importSettingCSV.setSourceFilePath(csvPath);//设置导入数据的路径信息
    importSettingCSV.setTargetDatasetName("csvImport");//设置目标数据集名称
    importSettingCSV.setTargetDatasource(udbDatasource);//设置目标数据源
    importSettingCSV.setImportEmptyDataset(true);//设置导入空的数据集
    /** ————导入CSV数据———— **/
    boolean csv = DataConversion.importCSV(importSettingCSV);
    /** ————打开导入的CSV数据———— **/
    if (csv) {
        dataset = udbDatasource.getDatasets().get("csvImport");
        mLayer = mMapControl.getMap().getLayers().add(dataset, true);
        mLayer.setVisible(true);
        mMapControl.getMap().viewEntire();
        mMapControl.getMap().refresh();
   }
} catch (Exception e) {
    e.printStackTrace();
}