兄弟们好,公司有GIS地图开发的需求,看网上关于超图的文章不算多,就随便写写,第一次写博客,尽可能写的让你们能看明白。好了,go。java
步骤1:首先进入官网下载资源,support.supermap.com.cn/product/iMo… 而后配置jar包跟so,通通加进去。android
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
具体打开代码为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>
复制代码