有人问我怎么这个系列没有写自己做的东西呢?

大哥大姐,这是“学习笔记”啊!当然主要以解读和笔记为主咯。

也有人找我要实例代码(不是示例),我表示AJS尚未成熟,现在数据编辑功能才简略地在AJS 4.3中出现,4.2是没有的,widget和分析功能也不是很完善,还是再等等吧,先学着基础,其他的以后再说。

本节我会紧随这个例子学习一下Query这个类,作为图层查询方法的重要参数,它起了传递查询用的信息的作用。


本例对应官方的例子是:Query a SceneLayer's linked FeatureLayer

这个例子操作起来很简单,等地图加载完成后,点击对应的3D白色模型,会出现一个popupTemplate弹窗,显示一个表格,为这个大楼的信息。如下图:

ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】

换个视角:

ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】

那我们就开始吧!


 

require([
  "esri/Map",
  "esri/views/SceneView",
  "esri/layers/SceneLayer",
  "esri/layers/FeatureLayer",
  "esri/tasks/support/Query",
  "dojo/domReady!"
  ],
   function(Map, SceneView, SceneLayer, FeatureLayer, Query){
    ...
    }
)

数据方面,用到了场景图层和要素图层;

查询方面,用到了Query模块。

函数参数

function(Map, SceneView, SceneLayer, FeatureLayer, Query){
    var map = new Map({...});
    var view = new SceneView({...});
    var sceneLayer = new SceneLayer({...});
    map.add(sceneLayer);
    var featureLayer = new FeatureLayer({...});
    featureLayer.load().then(attributesReady);
    function attributesReady(){
      ...  
    }
}

套路,先把大骨架弄出来,然后逐个击破。

多了一个场景图层,多了一个要素图层,在要素图层加载完成后进行一个异步操作attributesReady()。

还算简单,先把map和view的代码看看(太基础了对于看到这里的人来说,我就缩起来了)

var map = new Map({
  basemap: "dark-gray",
  ground: "world-elevation"
});
var view = new SceneView({
  container: "viewDiv",
  map: map,
  camera: {
    position: {
      x: -8241580,
      y: 4964925,
      z: 2311,
      spatialReference: 3857
    },
    heading: 32.5,
    tilt: 64.9
  }
});
map和view

相关文章:

  • 2022-02-23
  • 2022-01-28
  • 2021-08-14
  • 2021-08-03
  • 2021-07-05
  • 2021-07-18
  • 2021-07-07
猜你喜欢
  • 2021-08-31
  • 2021-11-01
  • 2022-01-24
  • 2021-11-07
  • 2021-07-26
  • 2021-07-30
  • 2022-02-18
相关资源
相似解决方案