首页 / 浏览问题 / WebGIS / 问题详情
通过地图数据查询,隐藏选中区域外的内容,返回上级时总是显示其他区域
12EXP 2025年09月04日
// 返回上级
const loadPulse = () => {
  pageData.map.flyToBounds(pageData.resultLayer.getBounds())
}

// 隐藏其他区域
const drawCompleted = (e) => {
  const sqlParam = new L.supermap.GetFeaturesBySQLParameters({
    queryParameter: {
      name: 'provinces_R@chinaMapData',
      attributeFilter: `adcode = ${pageData.adcode}`
    },
    datasetNames: ['chinaMapData:provinces_R']
  })
  new L.supermap
    .FeatureService(pageData.dataUrl)
    .getFeaturesBySQL(sqlParam, function (serviceResult) {
      const coord = serviceResult.result.features.features[0].geometry.coordinates
      const latlng = L.GeoJSON.coordsToLatLngs(coord, 2)
      const a = L.polygon([[[-91, -181], [91, -181], [91, 181], [-90, 181]], latlng], { fillColor: '#000F19', fillOpacity: 1, stroke: true })
      a.addTo(pageData.map)
    })
}

我是通过drawCompleted这个函数中的方法,查询到选中身份,把选中外的省份地图都隐藏,当我下钻到具体点位的时候,使用pageData.map.flyTo(pageData.resultLayer.getBounds().getCenter(), 10)方法,但是当我执行loadPulse 时,返回上一级,他总是显示选中区域外的地图,然后当显示的省份都展示出来后,在隐藏其他省份,我也上市在pageData.map.flyToBounds(pageData.resultLayer.getBounds())之前在调用drawCompleted的方式 ,可是依然不行,我如何才能返回上一级省份的时候不显示其他省份内容,当我返回最顶层的时候显示其他省份还原到最初加载时候的状态,并有个上行的动画
 

const loadPulse = () => {
  pageData.queryName = 'provinces_R@chinaMapData.2'
  if (pageData.level === 'province') {
    pageData.markers = [] // 清空标记数组
    if (pageData.layerGroup !== null) pageData.layerGroup.clearLayers() // 移除所有标记
    pageData.adcode = null
    const flyLine = pageData.flyLine.dataSet._dataCache
    const flyDonghua = pageData.flyDonghua.dataSet._dataCache
    const flyDian = pageData.flyDian.dataSet._dataCache
    pageData.flyLine.addData(flyLine)
    pageData.flyDian.addData(flyDian)
    pageData.flyDonghua.addData(flyDonghua)
    pageData.resultLayer.remove()
    pageData.map.removeLayer(pageData.a)
    pageData.map.flyTo({ lat: 35, lng: 105 }, 4) // 地图飞到该点并放大到10级
  }
}

我刚才尝试在返回最顶层的时候,移除之前polygon添加的图层,可以返回最顶层,但是当我在点击下钻的时候发现他的范围选中的会大一圈,有个跳动的效果,这个需要如何避免那?

1个回答

您好,

从当前代码看,您在下钻到某个省份时,给当前省份设置的掩膜以实现隐藏其他省份的需求。

目前我理解的问题是:在下钻到当前省份的某个点位后,返回到当前省份视图的过程中,掩膜不生效。

这个问题应该是leaflet库渲染机制问题,目前无法解决,请问在鼠标缩放过程中掩膜是否生效呢?另外当下钻时发现掩膜边界会有跳动效果,同样是渲染机制问题,在飞行过程中并没有实时计算polygon的边框渲染宽度,当飞行结束后才计算,因此看起来会跳动。

希望能够帮助到您。
275EXP 2025年09月04日
...