首页 / 浏览问题 / WebGIS / 问题详情
对VectorTilesMap进行点击查询时,获取不到点击的线段
6EXP 2024年03月25日

使用产品:iClient3D for Cesium

问题描述:使用pick及queryRenderedFeatures进行点击查询时,获取不到点击的线段

vtmLayer = viewer.scene.addVectorTilesMap({
  url: 'http://localhost:8092/iserver/services/map-line/restjsr/v1/vectortile/maps/line',
  name: 'line',
  canvasWidth: 512,
  viewer,
});
vtmLayer.readyPromise.then(function() {
  viewer.camera.flyTo({
    destination: vtmLayer.rectangle,
  });
});


viewer.screenSpaceEventHandler.setInputAction((e) => {
  let pickedObject = this.viewer.scene.pick(e.position);
  let data = pickedObject?.primitive?._mvtProperties;
  console.log(data); // data的值为undefined

  let position = viewer.scene.pickPosition(e.position);
  let cartographic = new Cesium.Cartographic.fromCartesian(position);
  let result = window.vtmLayer.queryRenderedFeatures([cartographic]);
  console.log(result); // result的值为[]
})

1个回答

您好,

首先viewer.scene.pick通常只是用来拾取点击到的点坐标,

获取当前拾取选中的对象,可以考虑使用viewer.selectedEntity,如:

其次,您使用 queryRenderedFeatures 方法对图层进行空间查询,

最少参数也要传查询几何对象和被查询图层id两组参数,

看您代码并没有指定被查询图层。

可以参考:http://support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/editor.html#MVT

希望可以帮到您。

于丁
1
9,638EXP 2024年03月26日
...