fuchengshen
2022-07-09 3a25c05b5ab837714f30469cdcb1e2a77d8d7f6c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import * as mars3d from "mars3d"
 
export let map // mars3d.Map三维地图对象
let tileLayer
let wmsLayer
 
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
export const mapOptions = {
  scene: {
    center: { lat: 28.268322, lng: 117.426104, alt: 1052215, heading: 0, pitch: -69 }
  },
  control: {
    baseLayerPicker: false
  },
  basemaps: [],
  layers: [{ type: "tileinfo", name: "瓦片信息", zIndex: 3, show: true }]
}
 
/**
 * 初始化地图业务,生命周期钩子函数(必须)
 * 框架在地图初始化完成后自动调用该函数
 * @param {mars3d.Map} mapInstance 地图对象
 * @returns {void} 无
 */
export function onMounted(mapInstance) {
  map = mapInstance // 记录首次创建的map
  addLayer()
}
 
/**
 * 释放当前地图业务的生命周期函数
 * @returns {void} 无
 */
export function onUnmounted() {
  map = null
}
 
function addLayer() {
  // 添加图层
  tileLayer = new mars3d.layer.TdtLayer({
    name: "天地图影像",
    layer: "img_d",
    zIndex: 1
  })
  map.addLayer(tileLayer)
 
  // wms、arcgis等矢量发布类型图层支持click事件
  wmsLayer = new mars3d.layer.WmsLayer({
    url: "//server.mars3d.cn/geoserver/mars/wms",
    layers: "mars:hf",
    crs: "EPSG:4326",
    parameters: {
      transparent: "true",
      format: "image/png"
    },
    getFeatureInfoParameters: {
      feature_count: 10
    },
    popup: "all",
    zIndex: 2
  })
  map.addLayer(wmsLayer)
 
  addTileStatus()
}
 
function addTileStatus() {
  map.on(mars3d.EventType.tileLoadProgress, function (count) {
    // console.log(`地图所有瓦片加载,剩余:${count}`)
    if (count === 0) {
      console.log(`地图所有瓦片加载完成`)
    }
  })
 
  let count = 0
  // 添加单个瓦片,开始加载瓦片(请求前)
  tileLayer.on(mars3d.EventType.addTile, function (event) {
    count++
    console.log(`${count},开始请求加载瓦片: L:${event.level},X:${event.x},Y:${event.y}`)
  })
  // 添加单个瓦片 加载瓦片完成
  tileLayer.on(mars3d.EventType.addTileSuccess, function (event) {
    count--
    console.log(`${count},开始请求加载瓦片: L:${event.level},X:${event.x},Y:${event.y}`)
  })
  // 添加单个瓦片 加载瓦片出错
  tileLayer.on(mars3d.EventType.addTileError, function (event) {
    count--
    console.log(`${count},开始请求加载瓦片: L:${event.level},X:${event.x},Y:${event.y}`)
  })
 
  // 卸载移除了瓦片
  tileLayer.on(mars3d.EventType.removeTile, function (event) {
    console.log(`卸载移除了瓦片: L:${event.level},X:${event.x},Y:${event.y}`)
  })
 
  // 单击事件
  wmsLayer.on(mars3d.EventType.click, function (event) {
    console.log("单击了矢量数据,共" + event.features.length + "条", event)
  })
}