import * as mars3d from "mars3d"
export let map // mars3d.Map三维地图对象
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
export const mapOptions = {
scene: {
center: { lat: 31.798703, lng: 117.207366, alt: 2033, heading: 31, pitch: -29 }
},
terrain: {
show: false
},
layers: [
{
name: "合肥教育点",
type: "wfs",
url: "//server.mars3d.cn/geoserver/mars/wfs",
layer: "mars:hfjy",
parameters: {
// 支持所有wfs的参数
maxFeatures: 500
},
minimumLevel: 13,
debuggerTileInfo: false,
symbol: {
type: "billboardP",
styleOptions: {
image: "img/marker/mark1.png",
scale: 0.7,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
scaleByDistance: true,
scaleByDistance_far: 20000,
scaleByDistance_farValue: 0.5,
scaleByDistance_near: 1000,
scaleByDistance_nearValue: 1,
clampToGround: true,
label: {
text: "{项目名称}",
font_size: 15,
color: "#ffffff",
outline: true,
outlineColor: "#000000",
pixelOffsetY: -30,
distanceDisplayCondition: true,
distanceDisplayCondition_far: 2000,
distanceDisplayCondition_near: 0
}
}
},
popup: "all",
show: true
}
]
}
/**
* 初始化地图业务,生命周期钩子函数(必须)
* 框架在地图初始化完成后自动调用该函数
* @param {mars3d.Map} mapInstance 地图对象
* @returns {void} 无
*/
export function onMounted(mapInstance) {
map = mapInstance // 记录首次创建的map
map.basemap = 2017 // 蓝色底图
addWmsLayer()
}
/**
* 释放当前地图业务的生命周期函数
* @returns {void} 无
*/
export function onUnmounted() {
map = null
}
/**
* WFS图层
*
* @returns {void} 无
*/
function addWmsLayer() {
const changeLevel = 15
// 瓦片图,参考用
const tileLayer = new mars3d.layer.WmsLayer({
name: "建筑物面WMS",
type: "wms",
url: "//server.mars3d.cn/geoserver/mars/wms",
layers: "mars:hfjzw",
crs: "EPSG:4326",
parameters: {
transparent: "true",
format: "image/png"
},
maximumLevel: changeLevel - 1,
maximumTerrainLevel: changeLevel - 1,
popup: "名称:{NAME}
层数:{floor}",
show: true
})
map.addLayer(tileLayer)
const wfsLayer = new mars3d.layer.WfsLayer({
name: "建筑物面WFS",
url: "//server.mars3d.cn/geoserver/mars/wfs",
layer: "mars:hfjzw",
parameters: {
// 支持所有wfs的参数
maxFeatures: 210
},
minimumLevel: changeLevel,
symbol: {
type: "polygonP",
styleOptions: {
color: "#00469c",
outline: false,
opacity: 1
}
},
buildings: {
cloumn: "floor"
},
debuggerTileInfo: false,
popup: "名称:{NAME}
层数:{floor}",
show: true
})
map.addLayer(wfsLayer)
// 绑定事件
wfsLayer.on(mars3d.EventType.click, function (event) {
console.log("单击了图层", event)
})
let timeTik
wfsLayer.on(mars3d.EventType.update, function (event) {
console.log(`图层内数据更新了`, event)
clearTimeout(timeTik)
timeTik = setTimeout(() => {
if (!wfsLayer.isLoading) {
console.log(`本批次数据加载完成`)
}
}, 1000)
})
}
// 图层状态 在组件中进行管理的图层
export function getManagerLayer() {
return map.getLayer("建筑物面WFS", "name")
}