Android关于超图Gis地图的配置流程与许可文件获取方法

兄弟们好,公司有GIS地图开发的需求,看网上关于超图的文章不算多,就随便写写,第一次写博客,尽可能写的让你们能看明白。好了,go。java

步骤1:首先进入官网下载资源,support.supermap.com.cn/product/iMo… 而后配置jar包跟so,通通加进去。android

步骤2:AndroidManifest 文件中添加代码

步骤3:获取许可文件

3.1许可文件(正式版本)服务器

这里只说正式的许可,若是想要测试能够去官网下载一个测试的许可,www.supermap.com/cn/ 网络

获取正式版的许文文件能够经过访问网络请求的方式自动下载都目录下。 具体代码:

//搭建地图环境
    String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
    Environment.setLicensePath(rootPath + "/SuperMap/license/");
    Environment.initialization(this);
    //是否存在许可
    LicenseStatus licenseStatus = LicenseManager.getInstance().getLicenseStatus();
    boolean licenseExsit = licenseStatus.isLicenseExsit();
    if (licenseExsit) {
        //若是有许可 直接载入地图
        initMap();
    } else {
        //若是没有许可,在线申请许可
        //设置申请许可的模块
        ArrayList modules = new ArrayList();
        modules.add(LicenseManager.Module.Core_Runtime);
        //去问领导要激活码 激活码为20个字母数字组成的字符串
        LicenseManager.getInstance().activateDevice("xxxxx-xxxxx-xxxxx-xxxxx-xxxxx", modules);
        //设置许可激活
        LicenseManager.getInstance().setActivateCallback(new LicenseManager.LicenseActivationCallback() {

            @Override
            public void activateSuccess(LicenseStatus licenseStatus) {

                Log.e("123", "----->许可激活成功");
                //激活成功 直接载入地图
                initMap();

            }

            @Override
            public void activateFailed(String s) {

                Log.e("123", "----->许可激活失败" + s);
            }
        });
    }


}
复制代码

好了,我们如今有许可文件了,能够打开地图了app

打开地图前首先要知道,我们的项目地图是要作本地地图,仍是发布在iserver服务器的地图。若是是本地地图,将地图放到指定目录下打开就好了,我放这里了,

具体打开代码为ide

private void initMap() {
    setContentView(R.layout.activity_main);
 //打开工做空间
    Workspace m_workspace = new Workspace();
    WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
    info.setServer(android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/SampleData/GeometryInfo/World.smwu");
    info.setType(WorkspaceType.SMWU);
    m_workspace.open(info);
   //将地图显示控件和工做空间关联
    MapView m_mapView = (MapView) findViewById(R.id.Map_view);
    m_mapcontrol = m_mapView.getMapControl();
    m_mapcontrol.getMap().setWorkspace(m_workspace);
}
复制代码

要是想打开iserver服务器里面的地图呢,你要先有打开地图的路径,问gis服务器开发人员要,咱们服务器里面有三个路径,一个是存数据的,一个是关联数据与图层的,一个是影像地图的,这里咱们要打开地图用第三个 测试

具体代码为:

private void openMapUImage() {
    //打开工做空间
    Workspace m_workspace = new Workspace();
    //将地图显示控件和工做空间关联
    m_mapView = (MapView) findViewById(R.id.Map_view);
    DatasourceConnectionInfo info = new DatasourceConnectionInfo();
    //设置数据源别名
    info.setAlias("Rest1");
    //设置引擎类型
    info.setEngineType(EngineType.Rest);
    //地图服务地址(此处为本地搭建的范例服务为例:)
    //注意:本身地图服务器的地址
    String url = "本身地图服务器的地址";
    //设置地图服务地址(必设)
    info.setServer(url);
    //打开数据源
    datasource = m_workspace.getDatasources().open(info);
    //添加数据集到地图窗口
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    m_mapControl = m_mapView.getMapControl();
    m_Map = m_mapControl.getMap();
    m_Map.setWorkspace(m_workspace);
    Datasets datasets = datasource.getDatasets();
    m_Map.getLayers().add(datasets.get(0), true);
    
}
复制代码

总体的代码Activity:this

package com.example.l.gistestdemo;

     import android.content.Context;
     import android.hardware.SensorManager;
     import android.support.v7.app.AppCompatActivity;
     import android.os.Bundle;
     import android.util.Log;
     import android.view.WindowManager;
     import android.widget.Toast;

     import com.supermap.data.Dataset;
     import com.supermap.data.Datasets;
     import com.supermap.data.Datasource;
     import com.supermap.data.DatasourceConnectionInfo;
     import com.supermap.data.EngineType;
     import com.supermap.data.Environment;
     import com.supermap.data.LicenseStatus;
     import com.supermap.data.Workspace;
     import com.supermap.data.WorkspaceConnectionInfo;
     import com.supermap.data.WorkspaceType;
     import com.supermap.mapping.Map;
     import com.supermap.mapping.MapControl;
     import com.supermap.mapping.MapView;
     import java.util.ArrayList;


  public class MainActivity extends AppCompatActivity {
      private MapControl m_mapcontrol = null;
      private MapView m_mapView;
      private MapControl m_mapControl;
      private SensorManager mSensorManager;
      private Map m_Map;
      private boolean isQuerying = true;
      private long firstTime;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

  
    //搭建地图环境
    String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
    Environment.setLicensePath(rootPath + "/SuperMap/license/");
    Environment.initialization(this);
    //是否存在许可
    LicenseStatus licenseStatus = LicenseManager.getInstance().getLicenseStatus();
    boolean licenseExsit = licenseStatus.isLicenseExsit();
    if (licenseExsit) {
        //若是有许可 直接载入地图
        initMap();
    } else {
        //若是没有许可,在线申请许可
        //设置申请许可的模块
        ArrayList modules = new ArrayList();
        modules.add(LicenseManager.Module.Core_Runtime);
        LicenseManager.getInstance().activateDevice("1DA4E-4ECF2-FD41F-DA024-DEA3A", modules);
        //设置许可激活
        LicenseManager.getInstance().setActivateCallback(new LicenseManager.LicenseActivationCallback() {

            @Override
            public void activateSuccess(LicenseStatus licenseStatus) {

                Log.e("123", "----->许可激活成功");
                //激活成功 直接载入本地地图
                initMap();
                //激活成功 直接载入服务器中地图
                //openMap();
            }

            @Override
            public void activateFailed(String s) {

                Log.e("123", "----->许可激活失败" + s);
            }
        });
    }
}

private void initMap() {
          setContentView(R.layout.activity_main);
  //        //打开工做空间
          Workspace m_workspace = new Workspace();
          WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
          info.setServer(android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/SampleData/GeometryInfo/World.smwu");
    info.setType(WorkspaceType.SMWU);
    m_workspace.open(info);
  //        //将地图显示控件和工做空间关联
    MapView m_mapView = (MapView) findViewById(R.id.Map_view);
    m_mapcontrol = m_mapView.getMapControl();
    m_mapcontrol.getMap().setWorkspace(m_workspace);
}



private void openMap() {
    Workspace wokspace = new Workspace();
    m_mapView = (MapView) findViewById(R.id.Map_view);
    m_mapControl = m_mapView.getMapControl();
    m_mapControl.getMap().setWorkspace(wokspace);

    DatasourceConnectionInfo dsInfo = new DatasourceConnectionInfo();
    dsInfo.setServer("http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps/China");
    dsInfo.setEngineType(EngineType.Rest);
    Datasource datasource = wokspace.getDatasources().open(dsInfo);
    if (datasource != null) {
        Dataset dataset = datasource.getDatasets().get(0);
        m_mapControl.getMap().getLayers().add(dataset, true);
        m_mapControl.getMap().refresh();
        Datasets datasets = datasource.getDatasets();
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        m_Map = m_mapControl.getMap();
        m_Map.setWorkspace(wokspace);

        m_Map.getLayers().add(datasets.get(0), true);

    } else {
        Toast.makeText(getApplicationContext(), "为空", Toast.LENGTH_LONG).show();
    }
}
 }
复制代码

xml-layout文件代码: url

<com.supermap.mapping.MapView
        android:id = "@+id/Map_view"
        android:layout_width="match_parent"
        android:layout_height = "match_parent">
    </com.supermap.mapping.MapView>
复制代码
相关文章
相关标签/搜索