// 返回上级
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添加的图层,可以返回最顶层,但是当我在点击下钻的时候发现他的范围选中的会大一圈,有个跳动的效果,这个需要如何避免那?