iMobile与Online在线场景数据的交互

2024-02-25 10:32

本文主要是介绍iMobile与Online在线场景数据的交互,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:xinxin

在SuperMap iMobile for Android中可以打开和加载数据,不仅支持离线三维数据,也支持在线的三维数据。下面将介绍三维数据的发布和与iMobile for Android的对接,在9D版本前SuperMap iMobile for Android支持在iServer中发布的三维数据,在9D版本后开始支持在SuperMap Online上发布的三维数据。

一、 iMobile与iServer上三维数据对接

1、 iServer上发布三维数据

(1) 准备数据
在iDesktop中将场景切成场景缓存,建议一般模型图层选osgb类型切,地形图层选tin类型切,在【基本信息】的缓存用途中选“Android系列设备”,如果这个数据打算在IOS设备上加载就选“IOS系列设备”,然后点生成即可。如果是用9D以前的iDesktop切的,生成场景缓存后进行纹理压缩,可以优化缓存数据在移动端的显示性能。
(2) 发布数据
启动iServer服务,登入iServer,进入【服务管理】,点击快速发布一个或一组服务,然后发布场景缓存的工作空间,按照发布的提示快速发布。发布成功后在【服务列表】中的【三维数据】中显示发布成功的三维数据。

2、 iMobile中加载三维数据

在iMobile中打开在线三维数据前需要知道打开三维数据对应的URL和场景名称,我这的测试关键代码如下:

String url = “http://192.168.15.71:8090/iserver/services/3D-MaSai/rest/realspace”;  //其中url的ip是发布三维场景服务器的ip
String sceneName = "MaSai";
sceneControl.getScene().open(url,sceneName);
sceneControl.getScene().refresh();

二、 iMobile与Online上三维数据对接

1、 Online上发布三维数据

(1) 数据准备
切场景缓存和上面的步骤类似,切完场景缓存后需要打成.zip包,才能在SuperMap Online中上传;由于移动端底层做了一个场景缓存过滤,所以.zip包要以xxx_android.zip(xxx最好是小写字母)命名,由于后面获取数据服务名是包名,所以场景缓存中的场景名要和zip包名一致(即xxx_android),否则加载的时候要单独写场景名。
(2) 数据上传
数据准备好后,在浏览器中输入https://www.supermapol.com/,进入SuperMap Online网页,然后用邮箱或手机注册用户,注册成功后再登入,如下图:
这里写图片描述
登入后,点击【数据】-【上传数据】进入【我的资源】,在【我的数据】中点【上传数据】即可,然后根据提示选要上传的zip包数据,最后点上传,如下图:
这里写图片描述
上传成功后在状态栏显示“上传成功”,如下图:
这里写图片描述
(3) 数据发布
数据上传成功后发布服务,点击操作中的第一个图标,如下图:
这里写图片描述
发布成功后,状态显示“发布完成”,如下图:
这里写图片描述

2、 iMobile中加载三维数据

SuperMap Online中的数据分公有数据和私有数据,和SuperMap iMobile for Android的对接方式不一样,具体实现如下:
(1) iMobile打开公有数据
SuperMap Online上的公有数据只有Online的管理员才能发布,用iMobile for Android对接的时候不需要登入自己的Online用户,直接获取公有的服务数据,然后加载到场景中,实现的关键代码如下:

olAccountManager = OLAccountManager.getInstance(MainActivity.this);
olAccountManager.publicServiceWithCompletion(new LoginCallBackListenner() {					@Overridepublic void onSuccess(String arg0) {// TODO Auto-generated method stub Log.e("MainActivity", "公有数据打开成功!");ArrayList<String> urls = olAccountManager.getpublicServiceList();ArrayList<String> names = olAccountManager.getpublicServiceNameList();if (urls.size()>0&&names.size()>0) {String url = urls.get(1);String name = names.get(1);Scene scene = sceneControl.getScene();scene.open(url,name);scene.setCreateSkirt(true);scene.refresh();}}@Overridepublic void onFailure(String arg0) {// TODO Auto-generated method stubLog.e("MainActivity", "公有数据打开失败!");}});

加载到场景后的效果图如下:
这里写图片描述
(2) iMobile打开私有数据
在SuperMap Online发布了私有的三维数据后,在iMobile for Android先要登入Online,然后在获取私有的服务数据,最后加载到场景中,关键代码如下:

olAccountManager = OLAccountManager.getInstance(MainActivity.this);try {olAccountManager.loginWithUsernameComplete("用户名", "密码", new LoginCallBackListenner() {@Overridepublic void onSuccess(String arg0) {// TODO Auto-generated method stubLog.e("MainActivity", "私有数据打开成功!");ArrayList<String> urls = olAccountManager.getPrivateServiceList();ArrayList<String> names = olAccountManager.getPrivateServiceNameList();if (urls.size()>0&&names.size()>0) {String url = urls.get(0);String name = names.get(0);Scene scene = sceneControl.getScene();boolean  issuecs=scene.openPrivateSceneWithUrl(url, name);scene.refresh();}}@Overridepublic void onFailure(String arg0) {// TODO Auto-generated method stubLog.e("MainActivity", "私有数据打开失败!");}});} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}

加载到场景中的效果图如下:
这里写图片描述
注意:SuperMap Online每个用户只能免费上传500M的数据,且5000次/天 数据访问量,如果想扩大上传数据量和数据访问量,需要该买,具体标准如下图:
这里写图片描述

这篇关于iMobile与Online在线场景数据的交互的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745197

相关文章

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

使用C#导出Excel数据并保存多种格式的完整示例

《使用C#导出Excel数据并保存多种格式的完整示例》在现代企业信息化管理中,Excel已经成为最常用的数据存储和分析工具,从员工信息表、销售数据报表到财务分析表,几乎所有部门都离不开Excel,本文... 目录引言1. 安装 Spire.XLS2. 创建工作簿和填充数据3. 保存为不同格式4. 效果展示5