首页 / 浏览问题 / WebGIS / 问题详情
iserver加载的地图怎么实现点击某一个乡镇下钻到到由村和社区组成的乡镇边界
8EXP 2023年06月26日
地图的点击事件里面也获取不到图层的name信息和id

1个回答

您好!可以使用数据服务做查询,通过map的点击事件获得鼠标点击位置的坐标,然后做空间查询,得到选中的乡镇面与乡镇面的属性信息,再根据这个属性信息中某个唯一标识其村和社区的字段对村和社区图层做SQL查询。

空间查询代码可以参考:

      map.on('click', evt => {
        let x = evt.latlng.lng
        let y = evt.latlng.lat
        if (x < -180.0 || x > 180.0 || y < -90 || y > 90) {
          return
        }
        point = new L.circleMarker([y, x])
        let geometryParam = new L.supermap.GetFeaturesByGeometryParameters({
          datasetNames: ['World:Countries'],
          geometry: point,
          spatialQueryMode: 'INTERSECT'
        })
        new L.supermap.FeatureService(url).getFeaturesByGeometry(geometryParam, serviceResult => {
          if (resultLayer != undefined) {
            resultLayer.remove()
          }
          resultLayer = L.geoJSON(serviceResult.result.features).addTo(map)
          resultLayer.bindPopup('国家:' + serviceResult.result.features.features[0].properties.COUNTRY).openPopup(point.getLatLng())
        })
      })

SQL查询可以参考示例 SQL 查询 (supermap.io)

希望可以帮助到您!

1,452EXP 2023年06月27日
我参考的就是这个示例代码,但是这个datasetNames数据源名称:数据集名称是怎么获取的
发布服务后在iserver里面看或者桌面打开工作空间看,数据源就是你的数据放在哪里的,数据集就是具体的某个点线面数据集,也就是你地图的图层
这个服务不是我发布的应该怎么去查找

打开数据服务,点这里进去就是数据源

点击这里进去就是数据集

home里面只有一个map地图资源angry

用数据服务哈,就是data资源

对接人提供给我了,谢谢哥的回答
我的这个iserver地图没有数据查询,只有地图查询
就是只有后缀为queryResults.json的查询
需要在发布服务之前勾选数据服务就会有数据服务了
...