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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
import * as mars3d from "mars3d"
 
export let map // mars3d.Map三维地图对象
 
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
export const mapOptions = function (option) {
  option.control = {
    baseLayerPicker: true // 是否显示图层选择控件
  }
  return option
}
 
/**
 * 初始化地图业务,生命周期钩子函数(必须)
 * 框架在地图初始化完成后自动调用该函数
 * @param {mars3d.Map} mapInstance 地图对象
 * @returns {void} 无
 */
export function onMounted(mapInstance) {
  map = mapInstance // 记录map
}
 
/**
 * 释放当前地图业务的生命周期函数
 * @returns {void} 无
 */
export function onUnmounted() {
  map = null
}
 
// 获取自定义底图切换
function getImageryProviderArr() {
  const providerViewModels = []
  let imgModel
 
  imgModel = new Cesium.ProviderViewModel({
    name: "本地图片",
    tooltip: "本地单张图片",
    iconUrl: "img/basemaps/esriNationalGeographic.png",
    category: "标准坐标系",
    creationFunction: function () {
      return mars3d.LayerUtil.createImageryProvider({
        type: "image",
        url: "//data.mars3d.cn/file/img/world/world.jpg"
      })
    }
  })
  providerViewModels.push(imgModel)
 
  imgModel = new Cesium.ProviderViewModel({
    name: "天地图影像",
    tooltip: "天地图全球影像地图服务(国家测绘局)",
    iconUrl: "img/basemaps/tdt_img.png",
    category: "标准坐标系",
    creationFunction: function () {
      return [
        mars3d.LayerUtil.createImageryProvider({
          type: "tdt",
          layer: "img_d",
          key: mars3d.Token.tiandituArr
        }),
        mars3d.LayerUtil.createImageryProvider({
          type: "tdt",
          layer: "img_z",
          key: mars3d.Token.tiandituArr
        })
      ]
    }
  })
  providerViewModels.push(imgModel)
 
  imgModel = new Cesium.ProviderViewModel({
    name: "Bing影像",
    iconUrl: "img/basemaps/bingAerial.png",
    tooltip: "微软提供的高清影像地图",
    category: "标准坐标系",
    creationFunction: function () {
      return mars3d.LayerUtil.createImageryProvider({
        type: "bing",
        layer: "Aerial"
      })
    }
  })
  providerViewModels.push(imgModel)
 
  imgModel = new Cesium.ProviderViewModel({
    name: "ESRI影像",
    iconUrl: "img/basemaps/esriWorldImagery.png",
    tooltip: "ESRI提供的高清影像地图",
    category: "标准坐标系",
    creationFunction: function () {
      return mars3d.LayerUtil.createImageryProvider({
        type: "arcgis",
        url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
      })
    }
  })
  providerViewModels.push(imgModel)
 
  imgModel = new Cesium.ProviderViewModel({
    name: "谷歌影像",
    tooltip: "谷歌影像地图服务",
    iconUrl: "img/basemaps/google_img.png",
    category: "国测局偏移坐标系",
    creationFunction: function () {
      return [
        mars3d.LayerUtil.createImageryProvider({ type: "google", layer: "img_d" }),
        mars3d.LayerUtil.createImageryProvider({ type: "google", layer: "img_z" })
      ]
    }
  })
  providerViewModels.push(imgModel)
 
  imgModel = new Cesium.ProviderViewModel({
    name: "高德影像",
    tooltip: "高德影像地图服务",
    iconUrl: "img/basemaps/gaode_img.png",
    category: "国测局偏移坐标系",
    creationFunction: function () {
      return [
        mars3d.LayerUtil.createImageryProvider({ type: "gaode", layer: "img_d" }),
        mars3d.LayerUtil.createImageryProvider({ type: "gaode", layer: "img_z" })
      ]
    }
  })
  providerViewModels.push(imgModel)
 
  return providerViewModels
}
 
function getTerrainProviderViewModelsArr() {
  return [
    new Cesium.ProviderViewModel({
      name: "无地形",
      tooltip: "WGS84标准球体",
      iconUrl: "img/basemaps/TerrainEllipsoid.png",
      creationFunction: function () {
        return new Cesium.EllipsoidTerrainProvider({
          ellipsoid: Cesium.Ellipsoid.WGS84
        })
      }
    }),
    new Cesium.ProviderViewModel({
      name: "全球地形",
      tooltip: "由 Cesium官方 提供的高分辨率全球地形",
      iconUrl: "img/basemaps/TerrainSTK.png",
      creationFunction: function () {
        return Cesium.createWorldTerrain({
          requestWaterMask: true,
          requestVertexNormals: true
        })
      }
    }),
    new Cesium.ProviderViewModel({
      name: "中国地形",
      tooltip: "由 Mars3D 提供的中国国内地形",
      iconUrl: "img/basemaps/TerrainSTK.png",
      creationFunction: function () {
        return new Cesium.CesiumTerrainProvider({
          url: "http://data.mars3d.cn/terrain",
          requestWaterMask: true,
          requestVertexNormals: true
        })
      }
    })
  ]
}