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删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数