首页 / 浏览问题 / 云GIS / 问题详情
点击地图范围内的坐标 获取到当前点的 建筑失恋元素 获取不到
33EXP 2021年08月24日

在进入地图时,会获取到一个地区范围标记起来,然后通过queryByGeometry 查询出来当前范围内的所有建筑元素也标注出来。

如下图:

然后我现在点击这个范围内的建筑,通过点击的坐标想要获取到点击建筑的feature的 SmID,

但是经常获取不到,有时又个别的能获取到,

下面是我获取的方法:

			// 地图点击
  map.on('singleclick', function(e) {
	let coordinate = e.coordinate;
	map.removeLayer(clickBuildhLayer);

	var point = new ol.geom.Point(coordinate)
	var param = new SuperMap.QueryByGeometryParameters({
		queryParams: {
			name: "build@build"
		},
		geometry: point,
	});
	new ol.supermap.QueryService(url).queryByGeometry(param, function(serviceResult) {
		console.log(serviceResult)
		if (serviceResult.result.recordsets.length > 0) {
			if (serviceResult.result.recordsets[0].features.features[0] != undefined) {
		    var vectorSource = new ol.source.Vector({features: (new 
          ol.format.GeoJSON()).readFeatures(serviceResult.result.recordsets[0].features),
				wrapX: false
			});
			var clickBuildhLayer = new ol.layer.Vector({
					source: vectorSource,
					zIndex: 6,
					style: new ol.style.Style({
					stroke: new ol.style.Stroke({
						color: 'orange',
						width: 5,
						}),
					})
			});
		map.addLayer(clickBuildhLayer)
		var smid = serviceResult.result.recordsets[0].features.features[0].properties.SmID;
			console.log(smid)
		  }
		} else {
			alert('数据集里没有查到')
		  }
		})
	})

点击大部分查询都是查询不到,返回一个空数组:

只有很少点击才能返回,点击同一个建筑,都是有时能返回有时返不回来

想问下大佬们  这个获取的方法对吗? 还有什么方法可以获取到

2 个回答

您看下您上面通过 queryByGeometry 方法获取到的所有要素能否正常返回属性信息,

建议您使用getFeatureByGeometry方法重新查询操作,可以参考范例https://iclient.supermap.io/examples/openlayers/editor.html#02_getFeatureByGeometry

2,243EXP 2021年08月25日

上面那个queryByGeometry 查询也是一会能查到,一会查不到,这两个方法都试过了,都是一样

最后其实发现了问题所在,但是不知道咋解决,

我打开iserver中找到数据服务 找到 查询的那个数据源 build, 这个数据源下有两个数据集,上面的查询就是查询的这个里面的build数据集,但是现在这两个数据集就是一会能显示,一会不显示的,导致的上面的查询出现问题。

这个是能看到两个数据集,这时候执行上面的查询就能查到

我刷新了页面,或者关掉重新打开数据源的datasets ,又看不到这两数据集了,这会执行上面查询操作就查询不到了,

 就是这个问题,但是这个问题更难到了,不知道啥原因,而且发现查不到的机率更大,大部分都是查不到的,

  知道这个是啥问题吗?  跪求指教,救救孩子

33EXP 2021年08月25日
请问您的iServer具体是哪个版本的?
您这个数据源是什么类型的,文件型的还是数据库型的?
如果是文件型的能共享下,我这边测试验证下吗,可以的话直接发我邮箱zhangdingxiang@supermap.com
...