首页 / 浏览问题 / 云GIS / 问题详情
如何指定用于几何查询用的geometry
匿名
2017年05月20日
		var service = new SuperMap.REST.GetFeaturesByGeometryService(dataServiceUrl});
		var parameters = new SuperMap.REST.GetFeaturesByGeometryParameters({
			geometry: new SuperMap.Geometry.Point(86.378921, 33.210805),
			spatialQueryMode: SuperMap.REST.WITHIN,
			datasetNames: ["world:World"]
		});
		service.processAsync(parameters);

service response:

SuperMap.Util.RequestJSONP.supermap_callbacks[1495256051903628]({"succeed":false,"error":{"errorMsg":"The query object is not up to requirement, and it should be Point2D, Rectangle2D, Geometry, DatasetVector or Recordset.","code":400}},400)

GetFeaturesByGeometryParameters.geometry要求是SuperMap.Geometry, 而Point2D, Rectangle2D, Geometry, DatasetVector, Recordset是Java Classes,两者如何匹配?

谢谢!

问题关闭原因: resolved

1个回答

iClient for JavaScript的方法当然是传iClient for JavaScript的Geometry对象了,具体的是
http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Geometry-js.html
它的子类,比如你前面用的 SuperMap.Geometry.Point,其他还有:LineStringPolygon等。至于发送给服务端,iClient for js会转成服务端接受的json的。

1,780EXP 2017年05月22日
如上,调用失败的错误信息可是:

The query object is not up to requirement, and it should be Point2D, Rectangle2D, Geometry, DatasetVector or Recordset.
进入失败回调,errormsg提示的这个?
看下你js代码的数据服务url、使用的iClient js的geometry

对,

{
"succeed":false,
"error":{
"errorMsg":"The query object is not up to requirement, and it should be Point2D, Rectangle2D, Geometry, DatasetVector or Recordset.",
"code":400
}
}

数据服务url: http://localhost:8090/iserver/services/data-World/rest/data

geometry: new SuperMap.Geometry.Point(86.378921, 33.210805)

1. spatialQueryMode直接写字符串或者:SuperMap.REST.SpatialQueryMode.***
2. datasetNames 是:数据集名:数据源名
3. 在service.processAsync(parameters);前加一句:service.isInTheSameDomain=true;然后查看请求体。
4. 检查你的iClient for JavaScript的版本、有没有自己修改过等。
Thanks, 1# works
...