三维可视化场景数据信息检索 该功能提供查询三维场景上所有元素的信息检索功能

三维场景数据信息检索方法 (以下代码都要在 map.on('loadComplete') 中调用)

/**
    * 检索方法
    * @param map 三维场景对象
    * @param queryFloors 楼层搜索范围
    * @param queryParams 其他检索信息
    * @param callback 查询结果的回调函数
*/

esmap.ESMapUtil.search(map, queryFloors, queryParams, function (data) {
    // 回调函数输出的data为查询结果
    console.log(data)   
})
参数queryFloors
// 三种查询情况
var queryFloors = 'all'     // 对所有楼层检索
var queryFloors = 1         // 查询某层楼
var queryFloors = [1,2,3]   // 查询多个楼层
参数queryParams
var queryParams = {
    nodeType: esmap.ESNodeType.MODEL, // nodeType指定为房间模型
    keyword: '车位'                   // 关键词查询,根据关键字模糊查询结果
};

参数说明:

参数 说明 类型 可选值 默认值 是否必填
nodeType 模型类型 String MODEL(房间)
FACILITY(图片poi)LABEL(文字poi)
IMAGE_MARKER(自定义图片标注)
TEXT_MARKER(自定义文字标注)
MODEL3D(三维模型标注)
esmap.ESNodeType.MODEL
name 三维场景元素name,精确查询,结果可能是多个 String —— ——
keyword 关键词查询,模糊查询结果 String —— ——
ID 三维场景元素ID,精确查询(同时支持三维场景元素ID列表数组) Number || Array —— ——
FloorNum 元素所属楼层,与第一步骤中queryFloors作用一样,但此处只能指定单个楼层 Number —— ——
typeID 元素所属分类ID,(三维场景编辑器里配置) Number —— ——
dataID 用户在编辑器中配置的自定义ID,(三维场景编辑器里配置) Number —— ——
types 检索的图层类型 Array(多选)。如不指定,默认检索三维场景所有类型的图层。 esmap.ESLayerType.MODEL(房间)
esmap.ESLayerType.MODEL_LABEL(文字label)
esmap.ESLayerType.MODEL_POI (图片poi)
esmap.ESLayerType.IMAGE_MARKER(自定义图片标注)
esmap.ESLayerType.TEXT_MARKER (自定义文字标注)
esmap.ESLayerType.MODEL3D(三维模型标注)
esmap.ESLayerType.LOCATION_MARKER (定位标注)
esmap.ESLayerType
coord 根据范围查询的中心点,必须与radius一起使用才可以生效。 Object —— { x: map.center.x, y: map.center.y }
radius 范围查询的半径,单位为米。(如果根据范围查询时必填) Number —— ——

各种情况下的参数示例:

// 根据关键字模糊查询,如查询关键字为'车位'的房间模型
var queryParams = {
    nodeType: esmap.ESNodeType.MODEL, // nodeType指定为房间模型
    keyword: '车位'
};

// 查询自定义ID(dataID,三维场景编辑器编辑的用户自定义ID)为 '38747' 的房间模型 (2021.11新增参数)
var queryParams = {
    nodeType: esmap.ESNodeType.MODEL, // nodeType指定为房间模型
    dataID: '38747',  // dataID支持字符串类型
    // name: '出口'   或者根据name查询
};

// 按分类搜索,查询所有分类为休息区(typeID = 30003)的房间模型,会查出所有以2开头的二级分类的房间
var queryParams = {
    nodeType: esmap.ESNodeType.MODEL, // nodeType指定为房间模型
    typeID: 30003     // 分类30003为休息区
};

// 检索多种元素,如查询所有name为'电梯'的label,3D模型和房间模型
var queryParams = {
    types: [ esmap.ESLayerType.MODEL_LABEL, esmap.ESLayerType.MODEL3D, esmap.ESLayerType.MODEL ],
    name: '电梯'
}

信息检索示例:

var queryParams = {
    nodeType: esmap.ESNodeType.MODEL3D, // nodeType指定为3D模型
    keyword: '灯'                       // 关键词查询,根据关键字模糊查询结果
};
// 示例: 根据关键字模糊查询,在所有楼层查询关键字为'灯'的3D模型
esmap.ESMapUtil.search(map, 'all', queryParams, function (data) {
    // 输出结果为所有楼层中有关键字'灯'的3D模型
    console.log(data)
})

// 示例: 查询一楼所有房间模型
esmap.ESMapUtil.search(map, 1, { nodeType: esmap.ESNodeType.MODEL }, function(data){
    // 输出结果为1层的所有的房间模型
    console.log(data)
})

// 示例: 查询三,四,五楼所有3D模型:
esmap.ESMapUtil.search(map, [3,4,5], {nodeType: esmap.ESNodeType.MODEL3D}, function(data){
    // 输出结果为3,4,5层的所有的3D模型
    console.log(data)
})

周边信息检索示例: 该功能提供根据距离寻找当前位置附近的信息

// 第一步,确定中心点
var coord = { 
    x: 12694512.917888649,
    y: 2569003.7859249497
}

// 第二步,确定搜索半径radius(单位: 米/m)
var radius = 30;

// 第三步,开始查询
var queryParams = {
    // 查询的中心点
    mapCoord: coord,
    // 查询的范围半径
    radius: radius,
    // 要查询的类型
    nodeType: esmap.ESNodeType.MODEL
}

esmap.ESMapUtil.search(map, 'all', queryParams, function (data) {
    // 输出查询结果
    console.log(data);
});
三维场景分类分为一级12种分类,100多种二级分类,需要详细的三维场景分类,请加QQ群进行咨询