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>
複製代碼
相關文章
相關標籤/搜索