基于Arcgis Runtime SDK 100.x 的Android GIS开发之三维场景加载(在线地址、mspk、slpk)

之前的博客介绍了基于Runtime SDK的二维地图相关的开发,接下来将会是三维相关的开发,这篇博客将介绍三维场景的加载,包括发布的在线场景、slpk(SceneLayer Package)以及mspk(Mobile Scene Package)。

一、slpk加载

slpk数据可以通过将3D Max等软件做出的三维模型导入到Arcgis Pro中生成,
Android下加载SLPK场景的代码如下,解释见注释,环境配置见:基于Arcgis Runtime SDK 100.x 的Android GIS开发(一)——基础配置
代码如下:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.esri.arcgisruntime.layers.ArcGISSceneLayer;
import com.esri.arcgisruntime.loadable.LoadStatus;
import com.esri.arcgisruntime.mapping.ArcGISScene;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.MobileScenePackage;
import com.esri.arcgisruntime.mapping.view.Camera;
import com.esri.arcgisruntime.mapping.view.SceneView;
import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import com.orhanobut.logger.Logger;
import com.xiaok.winterolympic.R;
import com.xiaok.winterolympic.utils.FileUtils;

public class SceneComplaceActivity extends AppCompatActivity {

    private SceneView mSceneView;
    private ArcGISScene scene;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scene_complace);
       
        scene = new ArcGISScene(Basemap.createImagery()); //用遥感影像作为三维场景底图
        mSceneView = findViewById(R.id.scene_sceneview);
        mSceneView.setScene(scene);
        mSceneView.setAttributionTextVisible(false);  //去掉Esri logo

        String filepath = FileUtils.SCENE_PATH;  //三维场景文件路径
        if (!filepath.isEmpty()) {
            ArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(filepath); // 实例化图层对象
            scene.getOperationalLayers().add(sceneLayer);  //添加三维场景图层

            // 设置场景视角镜头(camera),参数依次为纬度、经度、X轴偏转角度、Y轴偏转角度、Z轴偏转角度、相机高度
            Camera camera = new Camera(39.991616, 116.3842271,200, 345, 65, 0);
            mSceneView.setViewpointCamera(camera);
        }

    }



    @Override
    protected void onPause() {
        mSceneView.pause();
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mSceneView.resume();
    }

    @Override
    protected void onDestroy() {
        mSceneView.dispose();
        super.onDestroy();
    }

}

效果图如下

在这里插入图片描述

二、mspk加载

项目Github地址:传送门

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值