LineOfSightViewModel

AMD: require(["geoscene/widgets/LineOfSight/LineOfSightViewModel"], (LineOfSightViewModel) => { /* code goes here */ });
ESM: import LineOfSightViewModel from "@geoscene/core/widgets/LineOfSight/LineOfSightViewModel";
类: geoscene/widgets/LineOfSight/LineOfSightViewModel
继承于:LineOfSightViewModel Accessor
起始版本:GeoScene API for JavaScript 4.14

提供 LineOfSight 微件的逻辑。使用它来创建您自己的微件或访问观察点,目标和交叉点。

使用 LineOfSightViewModel,您可以以编程方式设置视线分析的观察点和目标。

// instantiate a new view model
const losViewModel = new LineOfSightViewModel({
 view: view
});

// set an observer
losViewModel.observer = new Point({
  latitude: 42.3521,
  longitude: -71.0559,
  z: 147.139
});

// set a target by passing in a LineOfSightTarget to the targets collection
losViewModel.targets = [new LineOfSightTarget({
   location: new Point({
     latitude: 42.352,
     longitude: -71.051,
     z: 0
   })
})];

// when using JavaScript LineOfSightTarget can be autocast
losViewModel.targets = [{
   location: {
     latitude: 42.352,
     longitude: -71.051,
     z: 0
   }
}];

视图模型还可用于控制分析的不同状态:start() 进入用户可以添加观察点和目标的 creation 状态。stop() 进入用户无法添加新目标但仍可移动观察点和现有目标的 created 状态。

viewModel.start();

LineOfSightViewModel 还允许您监视更改(例如,当用户移动观察点或目标时),并允许您访问相交图形和相交发生的位置。观察点只是一个,因此您只需观察视图模型上的观察点属性,即可知道何时添加或移动观察点。

losViewModel.watch("observer", function(value) {
 // do something with the value
});

// watch when a target is added or removed
viewModel.targets.on("change", function(event) {
  // for each target watch when the intersected location changes
  event.added.forEach((target) => {
    target.watch("intersectedLocation", function() {
      // get access to intersected graphic and location
      if (target.intersectedGraphic) {
        // highlight the graphic
        lyrView.highlight(target.intersectedGraphic);
      }
      // get access to intersected location
      console.log(target.intersectedLocation);
    });
  });
});

目标包含有关目标位置的信息,无论目标是否可见、与哪个图形相交以及它与该图形相交的位置、集成格网或地面。LineOfSightTarget 类用于表示目标。

另请参阅:

构造函数

new LineOfSightViewModel(properties)
参数:
properties Object
可选

有关可能传递到构造函数中的所有属性的列表,请参阅属性

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性主题。
显示继承的属性 隐藏继承的属性
名称 类型 描述 类:
LineOfSightAnalysis更多详情

视图模型正在创建或修改的视线分析对象。

更多详情LineOfSightViewModel
String更多详情

类的名称。

更多详情Accessor
Point更多详情

观察者的视点,从该视点将视线吸引到目标。

更多详情LineOfSightViewModel
String更多详情

视图模型的状态。

更多详情LineOfSightViewModel
Collection<LineOfSightTarget>更多详情

包含目标位置和分析结果的 LineOfSightTarget 的集合。

更多详情LineOfSightViewModel
SceneView更多详情

微件将从中操作的视图。

更多详情LineOfSightViewModel

属性详细信息

起始版本:GeoScene API for JavaScript 4.23

视图模型正在创建或修改的视线分析对象。

可以在视图模型构造期间设置此属性,以便为视图模型提供现有分析以进行修改。将分析的属性分配给视图模型后,也可以对其进行更新。

如果在视图模型构造期间未提供分析,则视图模型会自动创建自己的分析并将其添加到视图中。在这种情况下,当视图模型被销毁时,分析也将自动从视图中移除。

示例:
// Construct a line of sight analysis object outside of the view model
const analysis = new LineOfSightAnalysis({
  observer: {
    type: "point", // autocasts as new Point()
    x: 7.67,
    y: 45.981,
    z: 3435.765
  },
  targets: [{
    location: {
      type: "point",
      x: 7.659,
      y: 45.976,
      z: 4437
    }
  }]
});

// Ensure that the analysis is added to the view
view.analyses.add(analysis);

// Frame the analysis in the view
view.goTo(analysis.extent);

// Pass the analysis object as a constructor parameter to modify it using the view model
const viewModel = new LineOfSightViewModel({
  analysis: analysis,
  view: view
});
declaredClass Stringreadonly inherited

类的名称。声明的类名格式为 geoscene.folder.className

observer Point

观察者的视点,从该视点将视线吸引到目标。

state Stringreadonly

视图模型的状态。

说明
disabled 尚未准备就绪
ready 准备进行分析
creating 正在放置观察点/目标点
created 完成分析

可能的值"disabled"|"ready"|"creating"|"created"

默认值:disabled

包含目标位置和分析结果的 LineOfSightTarget 的集合。

微件将从中操作的视图。

方法概述

名称 返回类型 描述 类:
更多详情

清除当前分析结果。

更多详情LineOfSightViewModel
更多详情

如果停止,此方法将继续进行视线分析,用户可以添加更多目标。

更多详情LineOfSightViewModel
更多详情

开始新的视线分析。

更多详情LineOfSightViewModel
更多详情

停止当前视线分析,将结果保留在视图中。

更多详情LineOfSightViewModel

方法详细信息

clear()

清除当前分析结果。调用此方法后,用户可以设置新的观察点和目标。

continue()

如果停止,此方法将继续进行视线分析,用户可以添加更多目标。

start()

开始新的视线分析。

stop()

停止当前视线分析,将结果保留在视图中。用户仍然可以与现有目标和观察点进行交互,但无法放置新的目标点。

您的浏览器不再受支持。请升级浏览器以获得最佳体验。有关更多详细信息,请参阅我们的 浏览器弃用帖子