今年7月份,ArcGIS Runtime100总算推出第一个它的第一个资料片,哦不,更新版,ArcGIS Runtime100.1,也被称为Update 1。这个版本更新了一些API,填补了Runtime10.2和100之间的差距,修复了一些BUG以及新增几个功能。而新增功能里最让我们关注的就是Android SDK里也支持3D地图了。具体内容可以参见官网:https://developers.arcgis.com/android/latest/guide/release-notes.htm


      接下来,我们来初步探索下这个三维地图吧。


      首先,我们知道比如10.2来,Runtime100是用了一个GeoView类作为地图的基类直接继承于ViewGroup,然后MapView和SceneView分别作为二维和三维地图的容器继承于GeoView。对于SceneView,其关系为:




      然后同二维地图一样,三维地图的加载里采用了MVC架构,用SceneView类作为model,ArcGISScene类作为View。在三维地图里可以通过设置一个Camera类来控制自己的视角:




      从这点来说,其实把SceneView当做MapView,把ArcGISScene当做ArcGISMap就行,于是我们简单尝试下。首先是在XML文件里添加SceneView:


    android:id="@+id/sceneview"    android:layout_width="match_parent"    android:layout_height="match_parent">

      然后是在对应View里:


sceneView = (SceneView) view.findViewById(R.id.sceneview);arcGISScene = new ArcGISScene();sceneView.setScene(arcGISScene);

      运行下,看看效果:




      可以看出其实SceneView的基本底图就是一个地球,然后我们给它设置个瓦片图层作为底图:


ArcGISTiledLayer arcGISTiledLayer = new ArcGISTiledLayer(        "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer");Basemap basemap=new Basemap(arcGISTiledLayer);arcGISScene.setBasemap(basemap);

      数据源于官网发布的服务,详情可以去http://www.arcgis.com/home/gallery.html#c=esri&t=maps&o=modified&f=scenes看看。

      效果图:




      可以看出这其实就是把一个切片图层展示在地球上,可以进行三维操作而已。


      而对于真正的三维数据的地图层,官方给的例子是:



      可以看出基本思想是用ArcGISSceneLayer作为三维地图的图层,然而我按照这个例子运行后并没看到三维地图,包括使用官方中的一些三维地图服务,比如https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer。最后都没成功,但是在PC端确实能看到很好的效果。


      不知道有小伙伴成功过么?



      

更多相关文章

  1. android的动画相关参数说明
  2. ReactNative之Android绝对布局position:'absolute'问题
  3. Android上webview界面切换动画效果
  4. Android动画之属性动画(Property Animation)(三)
  5. Android内存泄漏 ——检测、解决和避免
  6. Android(安卓)4.0 framework源码修改编译,模拟器运行不起来——解
  7. 实现android广告栏效果
  8. android仿美团底部导航栏的点击效果——揭露动画
  9. Android(安卓)ViewPager之实现轮播广告效果

随机推荐

  1. 【android动画】关于android:persistentD
  2. Android自定义dialog弹出布局
  3. Android(安卓)Audio代码分析19 - setPosi
  4. Android(安卓)实现Toast的快速切换刷新
  5. Android中TabHost部件使用
  6. android调用系统的分享接口
  7. Android设置Button保持Press的状态
  8. Android生命周期的学习
  9. Android(安卓)Inflate
  10. Android编译系统详解(三)