首页 / 浏览问题 / 三维GIS / 问题详情
怎么通过点击获取到数据集和数据源名称
54EXP 2020年07月14日

比如我点击地图中的某个对象,获取到它的数据源和数据集名称,目前是知道数据服务url的。

我尝试了:

layer.setQueryParameter({
                    url:"http://www.supermapol.com/realspace/services/data-BIMbuilding/rest/data",
                    dataSourceName : layer._name,
                    isMerge : true
                });

但我的模型不是缓存生成的,是导入成数据集的,以上方法用起来会很臃肿,所以我用:

$.ajax({
    type: "POST",
    url: dataServiceUrl_ly,
    data: queryObjJSON,
    success: function (result) {
        
    },
    error: function (msg) {
        console.log(msg);
    }
});

但是,我要动态程序查询到数据,这个方法要涉及到数据源、数据集名称,我要怎么才能在点击到某个对象时获得它的数据源、数据集名称

示例的Bin是这样的

而我的却是这样的,在iserver上看没什么不同,却不合并

1个回答

您好,您这边最终要达到的目的是什么?是点击获取到数据源和数据集名称还是使图层列表合并。有的地方我不够理解,麻烦您详细说一下并不合并是什么意思。
6,077EXP 2020年07月15日
我希望知道怎么通过点击获取到数据源和数据集名称
像图1所有数据集都集合在bim这个数据源中。图2理论上也应该都集合在MD这个数据源中,但是现在却是所有数据集的数据源虽然是MD但是都是@这种方式,导致了我没法通过MD这个数据源去查询到对应的点击对象的数据
您解决不了的话,希望请教下你们超图的工程师,挺急的

您好,官网示例里面获取到的是数据集名称,而您那边获取到的是图层名如果想要通过点击获取数据源和数据集名称,建议您那边在数据集属性表里面新建两个字段,存入该数据集名称和所属数据源,批量生成模型数据集,再发布数据服务,参考官网范例http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles_BIM

使用datainfo()来加载子图层。

不添加的情况下有没有其他解决方案呢,我这边数据写好了,不希望轻易修改
这个的话目前是没有的,您要是实在是不想修改那么就只能把数据源数据集名称定义出来,然后给他关联上。
我要怎么才能像例子中那样获取到数据集而不是图层,我看了例子的模型属性表,没有添加数据源和数据集的字段

这个是我在示例里面点击图层的时候返回的其中一个数据,您可以参考一下console.log(feature)其中CATEGORYNAME就是数据集名称

是通过类别这个字段获取数据集吗
这个要看您的数据服务具体是怎样的,您那边的数据集标识字段如果是类别的话就是通过这个字段获取,这边看一下您的查询所返回的数据吗?
我在例子中替换为我的地图地址和数据服务地址,数据源名称也改为我的数据源名称,但是无法获取到数据集和图层显示在列表,并且点击也没有数据弹出,是怎么回事
跟踪一下代码,看报什么错

但是我数据源名称,路径都没错呀..

我给你私信数据,你看下

重新批量生成缓存,只生成一个.scp文件再发布rest服务,获取数据源数据集名称可以参考范例http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles_BIM

...