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

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读