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 Maps SDK 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
optional

有关可能传递给构造函数的所有属性的列表,请参见属性

属性概述

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

由视图模式创建或修改的视线分析对象。

更多详情
LineOfSightViewModel
String

类的名称。

更多详情
Accessor
Point

观察者的视点,从该视点可将视线绘制到目标。

更多详情
LineOfSightViewModel
String

视图模型的状态。

更多详情
LineOfSightViewModel
Collection<LineOfSightTarget>

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

更多详情
LineOfSightViewModel
SceneView

微件将从中操作的视图。

更多详情
LineOfSightViewModel

属性详细信息

起始版本:GeoScene Maps SDK 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 的集合,包含目标位置和分析结果。

微件将从中操作的视图。

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor

清除当前分析结果。

更多详情
LineOfSightViewModel

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

更多详情
LineOfSightViewModel
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor

移除对象拥有的句柄组。

更多详情
Accessor

开始新的视线分析。

更多详情
LineOfSightViewModel

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

更多详情
LineOfSightViewModel

方法详细说明

addHandles(handleOrHandles, groupKey)inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。

// Manually manage handles
const handle = reactiveUtils.when(
  () => !view.updating,
  () => {
    wkidSelect.disabled = false;
  },
  { once: true }
);

// Handle gets removed when the object is destroyed.
this.addHandles(handle);
参数
handleOrHandles WatchHandle|WatchHandle[]

对象销毁后,标记为要移除的句柄。

groupKey *
optional

标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。

clear()

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

continue()

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

hasHandles(groupKey){Boolean}inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

如果存在指定的句柄组,则返回 true。

参数
groupKey *
optional

组键。

返回
类型 描述
Boolean 如果存在指定的句柄组,则返回 true
示例
// Remove a named group of handles if they exist.
if (obj.hasHandles("watch-view-updates")) {
  obj.removeHandles("watch-view-updates");
}
removeHandles(groupKey)inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

移除对象拥有的句柄组。

参数
groupKey *
optional

要移除的组键或组键的数组或集合。

示例
obj.removeHandles(); // removes handles from default group

obj.removeHandles("handle-group");
obj.removeHandles("other-handle-group");
start()

开始新的视线分析。

stop()

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

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息