首页 / 浏览问题 / WebGIS / 问题详情
我的项目使用了原生openlayer的情况下如何使用超图的TileSuperMapRest接口?
1EXP 2024年01月15日
我的项目使用了原生openlayer的情况下要加载iserver发布的rest地图服务,如何在原生ol的情况下使用超图的TileSuperMapRest接口?

1个回答

您好,需要引入SuperMap iClient for OpenLayers才能使用该接口,具体引入方式可参考:

https://iclient.supermap.io/web/introduction/openlayersDevelop.html#Ready

希望能够帮助到您!

570EXP 2024年01月15日
const queryMap = (servicesUrl) => {

  var param = new SuperMap.QueryBySQLParameters({

    queryParams: {

      name: "swdz_2020_dlbq@KCPT#1",

      attributeFilter: "SMID > 0"

    }

  });

  const queryService = new ol.SuperMap.QueryService(servicesUrl);

  console.log('param', param,servicesUrl);

  console.log('queryService', queryService);

  // queryService.queryBySQL(param).then(function (res) {

  //   console.log(res);

  // }).catch(function (error) {

  //   console.error("Error in queryBySQL:", error);

  // });

}  这是我用vue3写的,目前成功引入了超图的openlayer包,一切都很正常,但是打印到queryService时却没有期望的效果,接受的servicesUrl是符合规范且可访问的超图rest服务。queryService打印后的对象内并没有_queryService这一项,请问这个问题如何解决

您接口调用方式不正确,正确调用方式:

   var param = new ol.supermap.QueryBySQLParameters({
            queryParams: {
                name: "Capitals@World.1",
                attributeFilter: "SMID < 10"
            }
        });

        new ol.supermap.QueryService(url).queryBySQL(param).then(function (serviceResult) {
          var vectorSource = new ol.source.Vector({
                features: (new ol.format.GeoJSON()).readFeatures(serviceResult.result.recordsets[0].features),
                wrapX: false
            });
            resultLayer = new ol.layer.Vector({
                source: vectorSource
            });
            map.addLayer(resultLayer);
        });

可以参考:https://iclient.supermap.io/examples/openlayers/editor.html#01_mapQueryBySQL

是因为ol离线包的问题,已解决。我想问一下 queryParams: {
                name: "Capitals@World.1",
                attributeFilter: "SMID < 10"
            }查询图层可以实现查询所有图层吗?而不是指定查询这一个?
只能指定一个数据集或图层进行查询。
okok,谢谢
...