网格层和部件层如何实现空间选择?

0 投票

问题描述:一个地图,顶层是网格,底层是部件层,我如何通过点击顶层的某个网格,能查询出这个网格下面部件层的部件元素呢?我看了多边形选择。多边形查询请求的参数主要有 geometry 和 geometry下的 bounds这两个对象,但是我点击网格 返回的对象 里有 geometry  对象,但是他的属性和多边形传过去的不一样,而且还没有geometry下的 bounds对象,请问这种情况如何实现空间选择 底层的部件 ,或者说是其他方式选择底层呢?谢谢。
返回数据截图:

多边形请求参数 对象截图:

网格返回对象截图:

12月 21, 2016 分类:  910次浏览 | 用户: pengxingjiang (9 分)

1个回答

1 投票
 
已采纳
看你几何查询传入的是点对象,并不是面对象。

你的网格图层是什么类型,vectorLayer或者rest图层
12月 21, 2016 用户: 刘美玲 名扬四海 (1,314 分)
采纳于 12月 22, 2016 用户:pengxingjiang

您好:我们用的是 rest 类型的加载方式,请问是要用vectorLayer 方式吗?谢谢
附上代码:

parts_layers_Map = new SuperMap.Layer.TiledDynamicRESTLayer("单元网格", urlwg, 
        {transparent:true,cacheEnabled:true});
        parts_layers_Map.setOpacity(0.8);    
        map.addLayers([parts_layers_Map]);
        map.setCenter(new SuperMap.LonLat(106.6308823724,26.6240738509), 1);
        console.log('部件');
        parts_layers_Map = new SuperMap.Layer.TiledDynamicRESTLayer("部件", url2, 
        {transparent:true,cacheEnabled:true});
        parts_layers_Map.setOpacity(0.8);    
        map.addLayers([parts_layers_Map]);
        map.setCenter(new SuperMap.LonLat(106.6308823724,26.6240738509), 1);

这个你就需要先查询出网格图层上的面对象,同样可以用鼠标点击去查询,可参考几何查询的点查询,最后将这个面对象传入去查找部件层的对象。

如果你的网格的面对象不是很多,面对象节点也不是很多,你可以考虑先将网格图层通过SQL查询,将需要的面对象查询出来,加载到vectorLayer上,再使用selectFeature控件去获取面对象进行组件层的查询

非常感谢您的回答,现在已经实现了smiley

...