首页 / 浏览问题 / WebGIS / 问题详情
为什么不能识别查询到的数据
l
6EXP 2024年08月23日

请问以下代码哪里有错误,为什么已经有数据了,还是显示不出来

try {

    const featureService = new FeatureService(this.iServerDataLayerUrl);

    featureService.getFeaturesBySQL(queryParams).then((serviceResult) => {

      if (serviceResult && serviceResult.result && serviceResult.result.features && serviceResult.result.features.length > 0)

      {

        const features = serviceResult.result.features;

        const feature = features[0];

        const content = this.generatePopupContent(feature.properties, e.latlng);

        this.popup = L.popup({ maxWidth: 300 })

          .setLatLng(e.latlng)

          .setContent(content)

          .openOn(this.map);

      }

      else {

        console.error('未找到要素或查询结果无效');

      }

    }).catch((error) => {

      console.error('查询失败:', error);

    });

  } catch (error) {

    console.error('查询失败:', error);

  }

},

   generatePopupContent(attributes, latlng) {

      let content = '<div><b>水库信息:</b>';

      for (const key in attributes) {

        content += `<p>${key}: ${attributes[key]}</p>`;

      }

      content += `<p>经纬度: 经度 ${latlng.lng}, 纬度 ${latlng.lat}</p></div>`;

      return content;

    },

2 个回答

您这个应该不是查询有问题,是在获取查询结果进行显示时有问题,在“if (serviceResult && serviceResult.result && serviceResult.result.features && serviceResult.result.features.length > 0)”条件判断时,无法满足serviceResult.result.features.length > 0,所以并没有执行if内的语句
1,006EXP 2024年08月26日

不是“serviceResult.result.features.length”,应该是“serviceResult.result.features.features.length”,您可以通过输出如下的参数,观察它的key

console.log(serviceResult)
1,006EXP 2024年08月26日
...