首页 / 浏览问题 / 移动GIS / 问题详情
使用QueryMode.SqlQuery查询报错
1EXP 2022年11月04日
请问为什么QueryService,使用QueryMode.SqlQuery查询会报《geometry 参数的类型不正确》这个错误

        QueryService service = new QueryService(serviceUrl);
        ServiceQueryParameter parameter = new ServiceQueryParameter();
        parameter.setQueryMapName(mapName);
        parameter.setQueryServiceName(serviceName);
        parameter.setQueryLayerName(layerName);
        parameter.setExpectRecordCount(1000);
        parameter.setAttributeFilter(whereClause);
        parameter.setQueryOption(QueryOption.ATTRIBUTEANDGEOMETRY);
        
         if(outFields != null && outFields.length > 0){
            if (idField != null) {
                String[] temp = new String[outFields.length + 1];
                temp[0] = idField;
                for (int i = 1; i < temp.length; i++) {
                    temp[i] = outFields[i - 1];
                }
                this.outFields = temp;
            }
            parameter.setResultFields(outFields);
        }
        service.setResponseCallback(listener);
        service.query(parameter, QueryMode.SqlQuery);

1个回答

您好,麻烦您打印一下查询参数,再提供一下您的报错信息截图,我这边看一下原因呢
3,420EXP 2022年11月04日
QueryService service = new QueryService("http://192.168.2.243:8090");
        ServiceQueryParameter parameter = new ServiceQueryParameter();
        parameter.setQueryMapName("%E6%88%AA%E6%AD%A22022%E5%B9%B48%E6%9C%8810%E6%97%A5%E8%A5%BF%E5%8C%BA%E5%8D%97%E5%8C%BA%E5%8F%96%E5%BE%97%E5%BE%81%E5%9C%B0%E6%89%B9%E6%96%87%E8%8C%83%E5%9B%B4");
        parameter.setQueryServiceName("map-TDYL1101/rest");
        parameter.setQueryLayerName("截止2022年8月10日西区南区取得征地批文范围@tdly1101");
        parameter.setExpectRecordCount(1000);
        parameter.setAttributeFilter(" 1=1");
        parameter.setQueryOption(QueryOption.ATTRIBUTEANDGEOMETRY);
        
        parameter.setResultFields(new String[]{"PZWH","XMMC"});
        service.setResponseCallback(listener);
        service.query(parameter, QueryMode.SqlQuery);

这些都是内网里面的服务地址,报错信息 就是上面那个《geometry 参数的类型不正确》

您那边可以在QueryService.query里面进入断点,把请求的url与json放到iclent或者用postman测试一下,还是建议您在iclient查看示例来构造对应的查询参数iClient for Leaflet 示例代码 (supermap.io)在该例子中您可以看到https://iserver.supermap.io/iserver/services/map-world/rest/maps/World/queryResults.json?returnContent=true这样的请求,其中该查询方法与参数您可以参考一下

...