日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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在线场景数据的交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。