当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript ArcGIS MapView.hitTest用法及代码示例


基本信息

以下是所在类或对象的基本信息。

AMD: require(["esri/views/MapView"], (MapView) => { /* code goes here */ });

ESM: import MapView from "@arcgis/core/views/MapView";

类: esri/views/MapView

继承: MapView > View > Accessor

自从:用于 JavaScript 4.0 的 ArcGIS API

用法说明

MapView.hitTest函数(或属性)的定义如下:

hitTest (screenPoint, options) {Promise<HitTestResult>}


返回与指定屏幕坐标相交的每个图层的要素。结果被组织为包含带有 Graphic 的对象的数组。如果命中相交要素,以下图层类型将返回所有要素: FeatureLayer , CSVLayer , GeoJSONLayer , GeoRSSLayer , GraphicsLayer , KMLLayer , MapNotesLayer , OGCFeatureLayer , StreamLayerWFSLayer

VectorTileLayer 命中测试结果包含一个图形,其属性指示与屏幕点相交的vector tile style 内的图层的 ID 和名称。不返回有关图层中表示的实际要素的详细属性和空间信息。

发布特定更改:

  • 在 4.23 版中,来自要素图层的所有命中测试要素都会在结果中返回。在以前的版本中,仅返回最重要的函数。
  • 在 4.6 版中,添加了对 VectorTileLayer 的支持。

参数:

规格:
类型说明
screenPoint ScreenPoint|MouseEvent

单击视图的屏幕坐标(或本机鼠标事件)。

options Object
可选的

用于指定 hitTest 中包含或排除的内容的选项。自 4.16 起支持。

规格:
可选的

要包含在 hitTest 中的图层和图形列表。如果未指定 include,则将包括所有图层和图形。

可选的

要从 hitTest 中排除的图层和图形列表。如果未指定排除,则不会排除任何图层或图形。

返回:

类型 说明
Promise<HitTestResult> 解析后,返回一个包含与给定屏幕坐标相交的图形(如果存在)的对象。

例子:

// Get the screen point from the view's click event
view.on("click", function (event) {
  // Search for graphics at the clicked location. View events can be used
  // as screen locations as they expose an x,y coordinate that conforms
  // to the ScreenPoint definition.
  view.hitTest(event).then(function (response) {
    if (response.results.length) {
      let graphic = response.results.filter(function (result) {
        // check if the graphic belongs to the layer of interest
        return result.graphic.layer === myLayer;
      })[0].graphic;

      // do something with the result graphic
      console.log(graphic.attributes);
    }
  });
});
// get screenpoint from view's pointer-move event
view.on("pointer-move", function(event){
  // Search for graphics on layers at the hovered location
  // exclude view.graphics from the hitTest
  view.hitTest(event, {exclude: view.graphics}).then(function(response){
    // if graphics are returned, do something with results
    if (response.results.length){
       // do something
    }
  });
});
// get screenpoint from view's click event
view.on("click", function(event){
  // Search for all features only on included layers at the hovered location
  view.hitTest(event, {include: featureLayer}).then(function(response){
    // if features are returned from the featureLayer, do something with results
    if (response.results.length){
       // do something
       console.log(response.results.length, "features returned");
    }
  })
});

相关用法


注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 MapView.hitTest。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。