方式一: queryTask方式: 该方式用于单个图层的条件查询(不能跨图层查询)
1. 创建query对象
1 query = new esri.tasks.Query();
2. 给query对象设置参数
1 query.returnGrometry = true; 2 query.outFields = ['id, name, ......'] // 查询结果集返回的字段 3 query.where = 'id=' + id; // 查询条件
3. 创建queryTask对象
1 queryTask = new esri.tasks.QueryTask('http://......'); // 创建queryTask对象,参数为要查询的图层连接
4. 查询以及结果集处理
1 queryTask.execute(query, (results) => { // 将query对象作为参数传递给execute方法, results为查询结果集 2 if (results.features.length > 0) { // 回调函数 3 ...... // 处理结果集 4 } else { 5 ...... // 结果集为空 6 } 7 });
方式二: FindTask方式: 该方式用于同一图层下多个层级的模糊查询(可进行跨图层, 且只能模糊查询)
1. 创建FindTask对象:
1 find = new esri.tasks.FindTask(layerUrl); // layerUrl为要进行查询的图层连接
2. 创建params参数对象
1 params = new esri.tasks.FindParameters(); 2 params.layerIds = [0, 1, 2, ......]; // 设置查询图层列表 3 params.searchFields = ['swchNAME']; // 设置查询图层的字段,根据swchNAME字段来模糊查询 4 params.searchText = swchName; // 设置模糊查询的关键词 5 params.returnGeometry = true; // 返回空间查询的geometry,方便把返回值结果以图标形式叠加在地图上
3. 查询以及结果集处理
1 find.execute(params, (results) => { // 回调函数 2 if (results.length > 0) { 3 ...... // 处理结果集 4 } else { 5 ...... // 结果集为空 6 } 7 });