首页 / 浏览问题 / WebGIS / 问题详情
attributeFilter该怎样写两个条件
l
6EXP 2024年08月22日
const LngLat = e.latlng;

  const lng=LngLat.lng;

  const lat=LngLat.lat;

  const datasetNames = ["水库数据:水库数据_1_1"];

  const attributeFilter =`经度 = ${LngLat.lng} AND 纬度 = ${LngLat.lat}`;

  const queryParams = new QueryBySQLParameters({

    datasetNames: datasetNames,

    queryParameter:

     {

      name:["水库数据:水库数据_1_1"],

      attributeFilter:attributeFilter}

   ,

    returnContent: true,

    resultFormat: DataFormat.GeoJSON// 设置返回结果的格式

  });

  try {

    const featureService = new FeatureService(this.iServerDataLayerUrl);

    // 调用 getFeaturesBySQL 方法并处理 Promise

    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);

  }

},

请问为什么attributeFilter识别不对,该怎样写?

1个回答

您好,您可以输出attributeFilter,看看它的经纬度和数据集中点要素的经纬度是否完全一致。看您的代码,您想要做的是点选查询吗?,一般查询点用的是面,将点击的坐标按一定长宽,构造成一个矩形,用这个矩形对点数据集进行几何查询。面查点可以设置一定的容限,点查点则要求两个点必须完全重合
961EXP 2024年08月23日

我希望实现的是:点击地图中的水库点,可以通过查询显示该水库对应的所有字段信息,现在问题好像是通过反向单引号传参之后,attributeFilter好像没有被正确识别,

传参过程中会将“=”变成“:”,只要值正确,不会影响查询效果,比如这样:

...