第一步:创建 Android Studio 项目

第一步:创建 Android Studio 项目
Android Studio 有两种创建项目的方法。
第一种是在 Android Studio起始页选择“Start a new Android Studio Project”。
第二种是在 Android Studio 主页选择“File”–>“New Project…”

第二步:使用SuperMap iMobile for Android

1、解压SuperMap iMobile for Android 产品包。

2、根据功能的需要,从产品包中libs文件夹中选择需要的库文件拷贝到工程顶级路径下,本例以使用910版本为例(其他版本选用对应的库文件即可), 仅使用到二维功能,所以将产品包中libs文件夹中的核心模块库文件com.supermap.data_v910.jar、地图显示模块库文件com.supermap.mapping_v910.jar拷贝到 Module 的libs文件夹
3、然后在Module的build.gradle里加上jni的sourceSets配置:jniLibs.srcDirs = [‘libs’],完整代码请参见下面的代码段。

apply plugin: 'com.android.application'
android {compileSdkVersion 26defaultConfig {applicationId "com.supermap.supermapimobiledemo3d"minSdkVersion 15targetSdkVersion 26versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}sourceSets {main {jniLibs.srcDirs = ['libs']}}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.android.support.constraint:constraint-layout:1.1.2'
}

第三步:添加SuperMap iMobile for Android 最低权限

1、在AndroidManifest.xml中添加

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

第四步:添加 Activity 配置

在“AndroidManifest.xml”中,承载 MapControl 的那个 Activity 项目中添加 Activity 配置,让地图界面在横竖屏切换时不再重复调用 onCreate。

具体配置如下:

 在Activity 项目中添加如下配置android:configChanges="keyboardHidden|orientation"注意:当Android 版本在4.0以上时,配置configChanges要添加screenSize,具体配置如下:android:configChanges="keyboardHidden|orientation|screenSize"

第五步:支持多格式屏幕配置

在 AndroidManifest.xml的manifest节点下添加以下配置:

<supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:smallScreens="true"tools:ignore="ManifestOrder"/>

第六步:编写代码

在布局文件 activity_main.xml 中添加如下代码:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/main"><RelativeLayoutandroid:gravity="left"android:layout_width="match_parent"android:layout_height="match_parent"><com.supermap.mapping.MapViewandroid:id = "@+id/Map_view"android:layout_width="match_parent"android:layout_height = "match_parent"></com.supermap.mapping.MapView><ZoomControlsandroid:id="@+id/zoomControls1"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:layout_centerHorizontal="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"></ZoomControls></RelativeLayout>
</RelativeLayout>

在MainActivity中编写应用程序代码如下:


public class MainActivity extends Activity {private MapControl m_mapcontrol = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();//设置一些系统需要用到的路径Environment.setLicensePath(rootPath + "/SuperMap/license/");Environment.setTemporaryPath(rootPath + "/SuperMap/temp/");Environment.setWebCacheDirectory(rootPath + "/SuperMap/WebCatch");//组件功能必须在Environment初始化之后才能调用Environment.initialization(this);//如果机器中默认不包括需要显示的字体,可以把相关字体文件放在参数所代表的路径中。//例如,如果需要显示阿拉伯文字(若机器中原先不包括相关字体文件),可以把需要的字体文件放在参数所代表的路径中。Environment.setFontsPath(rootPath + "/SuperMap/fonts/");setContentView(R.layout.activity_main);//打开工作空间Workspace m_workspace = new Workspace();WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();info.setServer(rootPath + "/SampleData/GeometryInfo/World.smwu");info.setType(WorkspaceType.SMWU);m_workspace.open(info);//将地图显示控件和工作空间关联MapView m_mapView = findViewById(R.id.Map_view);m_mapcontrol = m_mapView.getMapControl();m_mapcontrol.getMap().setWorkspace(m_workspace);//打开工作空间中的第二幅地图String mapName = m_workspace.getMaps().get(1);m_mapcontrol.getMap().open(mapName);ZoomControls m_zoom = findViewById(R.id.zoomControls1);m_zoom.setIsZoomInEnabled(true);m_zoom.setIsZoomOutEnabled(true);//放大按钮m_zoom.setOnZoomInClickListener(new OnClickListener() {public void onClick(View v) {m_mapcontrol.getMap().zoom(2);m_mapcontrol.getMap().refresh();}});//缩小按钮m_zoom.setOnZoomOutClickListener(new OnClickListener(){public void onClick(View v) {m_mapcontrol.getMap().zoom(0.5);m_mapcontrol.getMap().refresh();}});m_mapcontrol.getMap().refresh();}
}

第七步:运行工程就可以了

SuperMap iMobile for Android 地图开发(一)相关推荐

  1. SuperMap iMobile for Android 地图开发在线地图服务接入(二)

    一.对接百度地图服务 DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //设置数据源别名 info.setAlias(& ...

  2. SuperMap iMobile for Android 地图添加POI兴趣点

    作者:程溯 简介 Demo按类型往地图里添加POI兴趣点,并添加兴趣点的名称(name)与详细信息(detail).地图上不同类型的POI兴趣点采用不同符号来表示. 示例数据 Data: mypoi. ...

  3. SuperMap iMobile for Android常见问题解答集锦(十四)

    问:SuperMap iMobile for Android中导出shp数据时能否设置其字符集,怎么设置? 答:导出时可以设置shp的字符集,通过类DataConversion下的setConvert ...

  4. SuperMap iMobile for Android常见问题解答集锦(十三)

    作者:皇皇 问:SuperMap iMobile for Android中是否支持实时GPS定位,怎么实现? 答:可以支持:通过LocationManagePlugin管理插件类,开启GPS设备,并设 ...

  5. SuperMap iMobile for Android之行业导航

    作者 :dongyx 在我们工作生活中,经常会遇到怎么去哪.如何去最节约成本的问题,这就需要使用地图导航的功能了,那么如何使用SuperMap iMobile for Android制作导航APP呢? ...

  6. SuperMap iMobile for Android中三维AR的使用

    前言 ARCore是一种增强现实体验构建平台,它可以利用不同的API让手机能够感知其环境.理解现实世界与信息进行交互.ARCore使用三个主要功能将虚拟内容与通过手机摄像头看到的现实世界整合: 1) ...

  7. SuperMap iMobile 8Cfor Android/iOS ——专业级移动GIS开发平台

    SuperMap iMobile 8C是一款全新的移动GIS开发平台,具备专业.全面的移动GIS功能.支持基于Android和iOS操作系统的智能移动终端,可以快速开发在线和离线的移动GIS应用. 谁 ...

  8. SuperMap iMobile for Android开发入门(iMobile 10i + AS 3.6)

    SuperMap iMobile开发入门(iMobile 10i + AS3.6) 超图防坑指南 文章概要 AS3.6安装.SuperMap iMobile 10i下载 HelloMap工程创建 He ...

  9. SuperMap iMobile for Android许可介绍

    作者:dongyx 使用SuperMap iMobile产品需要SuperMap的授权,即获得许可.目前,针对不同的用户和不同的使用场景,SuperMap iMobile提供三种许可方式,分别为试用许 ...

最新文章

  1. 线性判别分析(LDA)和她的家人们
  2. anr trace文件分析
  3. 程序员的自我修养学习笔记——第五章
  4. Misc-wireshark-1(秒懂!!)
  5. php+mysql+pdo连接数据库
  6. boost::planar_face_traversal用法的测试程序
  7. POJ 2299 - Ultra-QuickSort BIT
  8. 算法入门篇八 贪心算法
  9. linux 路由表_Linux 容器网络笔记:underlay
  10. 场景化支付的关键技术
  11. 一篇相当不错的function入门文章
  12. python实现图像分割_Python实现投影法分割图像示例(一)
  13. java代码建立删除vpn_Java类集综合练习——信息管理(增、删、改、查)
  14. 网站接入QQ登录功能的实现
  15. wxpython之StaticText最全介绍(持续更新)
  16. RFID不同频率下的应用场景及优缺点
  17. 英语发音规则---I字母常见发音组合有哪些
  18. 邀请函首页制作过程介绍
  19. 记录Linux下安装elasticSearch时遇到的一些错误
  20. Scrapy 西瓜皮框架

热门文章

  1. Not enough memory to start Docker的解决方法
  2. 如何查看db2默认SAMPLE数据库是否默认创建成功
  3. ZOJ3378:Attack the NEET Princess (边双连通分量)
  4. 元器件界的“京东”,站在中国智造的风口飞起来
  5. 协方差的计算公式及R语言验证
  6. Java程序员需要学什么高级技能
  7. 人脸检测中几种框框大小的选择~
  8. php中rowcount 意思,SQL中@@ROWCOUNT函数
  9. 视频压缩H264编码原理介绍
  10. 【视频编解码-02】视频编码的目的、条件和目标