import * as mars3d from "mars3d"
|
|
export let map // mars3d.Map三维地图对象
|
|
// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)
|
export const mapOptions = {
|
scene: {
|
center: { lat: 3.74685, lng: 103.588387, alt: 14532035, heading: 0, pitch: -86 }
|
}
|
}
|
|
/**
|
* 初始化地图业务,生命周期钩子函数(必须)
|
* 框架在地图初始化完成后自动调用该函数
|
* @param {mars3d.Map} mapInstance 地图对象
|
* @returns {void} 无
|
*/
|
export function onMounted(mapInstance) {
|
map = mapInstance // 记录map
|
|
map.basemap = 2017
|
|
queryPopulationApiData()
|
.then(function (data) {
|
showData(data)
|
})
|
.catch(function (data) {
|
console.log("ajax请求出错", data)
|
})
|
}
|
|
/**
|
* 释放当前地图业务的生命周期函数
|
* @returns {void} 无
|
*/
|
export function onUnmounted() {
|
map = null
|
}
|
|
// 访问后端接口,取数据
|
function queryPopulationApiData() {
|
return mars3d.Util.fetchJson({ url: "//data.mars3d.cn/file/apidemo/population.json" })
|
}
|
|
function showData(data) {
|
const heightScale = 2000000
|
|
// 创建Graphic图层
|
const graphicLayer = new mars3d.layer.GraphicLayer()
|
map.addLayer(graphicLayer)
|
|
// 在layer上绑定监听事件
|
graphicLayer.on(mars3d.EventType.click, function (event) {
|
console.log("监听layer,单击了矢量对象", event)
|
})
|
|
// 在layer上绑定Popup弹窗
|
graphicLayer.bindPopup(function (event) {
|
const attr = event.graphic.attr || {}
|
attr["类型"] = event.graphic.type
|
attr["来源"] = "我是layer上绑定的Popup"
|
attr["备注"] = "我支持鼠标交互"
|
|
return mars3d.Util.getTemplateHtml({ title: "矢量图层", template: "all", attr: attr })
|
})
|
|
for (let x = 0; x < 1; x++) {
|
const series = data[x]
|
const coordinates = series[1]
|
|
// Now loop over each coordinate in the series and create
|
for (let i = 0; i < coordinates.length; i += 3) {
|
const latitude = coordinates[i]
|
const longitude = coordinates[i + 1]
|
const height = coordinates[i + 2]
|
|
// Ignore lines of zero height.
|
if (height === 0) {
|
continue
|
}
|
|
const color = Cesium.Color.fromHsl(0.6 - height * 0.5, 1.0, 0.5)
|
const surfacePosition = Cesium.Cartesian3.fromDegrees(longitude, latitude, 0)
|
const heightPosition = Cesium.Cartesian3.fromDegrees(longitude, latitude, height * heightScale)
|
|
const primitive = new mars3d.graphic.PolylineEntity({
|
positions: [surfacePosition, heightPosition],
|
style: {
|
width: 4,
|
color: color
|
},
|
attr: { gdp: height }
|
})
|
graphicLayer.addGraphic(primitive)
|
}
|
}
|
}
|