首页 / 浏览问题 / 云GIS / 问题详情
几何查询,geometry传参报错
110EXP 2026年01月14日

iServer12,基于data服务进行几何查询,geometry传参为几何点,目前仅有使用new ol.supermap.Geometry.Point(e.coordinate[0], e.coordinate[1])不会报错,传入{"id":0,"style":null,"parts":[1],"points":[{"x":119.91805294456832,"y":29.957552570403177}],"type":"POINT"}或者geoJson对象,都会报错,Uncaught TypeError: e.getVertices is not a function。但是在iserver上通过featureResults资源查询,传入{"id":0,"style":null,"parts":[1],"points":[{"x":119.91805294456832,"y":29.957552570403177}],"type":"POINT"}就不会报错,可以请求成功,不知道为什么是什么问题?开发包使用的是最新版本的supermap-iclient-javascript-2025u1,ol包。

2 个回答

您好,

空间查询接口不支持传入简单对象作为geometry参数,需要使用geometry对象,因为{"id":0,"style":null,"parts":[1],"points":[{"x":119.91805294456832,"y":29.957552570403177}],"type":"POINT"}是经过iClient接口构建后的参数格式,原始格式仍然是geometry。

iserver查询界面为简化用户查询操作,支持输入简单对象,内部经过处理后再传入的接口,所以没有报错。

希望能够帮助到您。
夏鑫
1
670EXP 2026年01月15日

需要在传入GeoJSON对象前对其进行处理,例如:

var geo = {
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [27.82659319022372, 15.517491959609384]
    }
}
var geoformat = (new ol.format.GeoJSON()).readGeometry(geo.geometry);

var geometryParam = new ol.supermap.GetFeaturesByGeometryParameters({
    datasetNames: ["World:Countries"],
    geometry: geoformat,
    spatialQueryMode: "INTERSECT"
});
1,496EXP 2026年01月15日
好的,感谢
...