feat:大屏地图支持下钻

main
liu.tao3 2 years ago
parent 443cd017c4
commit f21661a3c6

@ -100,8 +100,7 @@ export default {
if(val.type==='move_in'){ if(val.type==='move_in'){
coord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}}) coord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
fromCoord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}}) fromCoord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
} }else{
if(val.type==='move_out'){
coord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}}) coord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
fromCoord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}}) fromCoord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
} }

@ -106,7 +106,7 @@
> >
<el-input-number <el-input-number
v-model="config.customize.fontSize" v-model="config.customize.fontSize"
placeholder="请输入轨迹大小" placeholder="请输入字体大小"
controls-position="right" controls-position="right"
:step="1" :step="1"
/> />
@ -376,6 +376,7 @@ export default {
} else if (this.config.customize.level === 'province') { } else if (this.config.customize.level === 'province') {
this.getMapList() this.getMapList()
this.config.customize.dataMap = '安徽省.json' this.config.customize.dataMap = '安徽省.json'
this.config.customize.down=false
}else{ }else{
this.config.customize.down=false this.config.customize.down=false
} }

@ -31,7 +31,8 @@ export default {
data () { data () {
return { return {
charts: null, charts: null,
hasData: false hasData: false,
level:''
} }
}, },
computed: { computed: {
@ -94,8 +95,16 @@ export default {
const option = { const option = {
// //
backgroundColor: config.customize.backgroundColor, backgroundColor: config.customize.backgroundColor,
graphic: [
],
geo: { geo: {
map: config.customize.scope, map: config.customize.scope,
zlevel: 10,
show:true,
layoutCenter: ['50%', '50%'],
roam: true,
layoutSize: "100%",
zoom: 1,
label: { label: {
// //
normal: { normal: {
@ -253,10 +262,73 @@ export default {
} }
} }
} }
if(config.customize.down){
// config?.customize?.graphic?.forEach((item,index)=>{
option.graphic.push({
type: "text",
left: `220px`,
top: "5%",
style: {
text: '中国',
font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
fill: config.customize.fontGraphicColor,
},
onclick:async()=>{
this.level='country'
const index = option.graphic.findIndex(i => i.style.text === '中国');
//
option.graphic.splice(index + 1);
const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/country/中华人民共和国.json`
const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
option.geo.map = '中华人民共和国'
this.changeData({...config,customize:{...config.customize,level:'country',scope:'中国'}})
echarts.registerMap('中华人民共和国', map);
this.charts.setOption(option, true);
}
},)
// })
}
const mapUrl = `${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}` const mapUrl = `${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}`
const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true) const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
echarts.registerMap(config.customize.scope, map) echarts.registerMap(config.customize.scope, map)
this.charts.setOption(option) this.charts.setOption(option)
this.charts.on('click', async(params)=> {
const index = option.graphic.findIndex(i => i.style.text === params.name);
if(params.name=='' || index !== -1) return
if(config.customize.down===false||this.level==='province') return
const idx = option.graphic.length + 1;
option.graphic.push({
type: "text",
left: `${idx * 220}px`,
top: "5%",
style: {
text: params.name,
font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
fill: config.customize.fontGraphicColor,
},
onclick: async() => {
const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${params.name=='中华人民共和国'?'country':'province'}/${params.name}.json`
const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
// name
const index = option.graphic.findIndex(i => i.style.text === params.name);
//
option.graphic.splice(index + 1);
//
option.geo.map = params.name;
this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
echarts.registerMap(params.name, map);
this.charts.setOption(option, true);
},
});
this.level='province'
const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/province/${params.name}.json`
const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
option.geo.map = params.name
echarts.registerMap(params.name, map);
this.charts.setOption(option, true);
});
} }
} }
} }

@ -74,6 +74,39 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item
v-if="config.customize.level == 'country'"
label="是否开启下钻"
label-width="100px"
>
<el-switch
v-model="config.customize.down"
class="bs-el-switch"
active-color="#007aff"
/>
</el-form-item>
<el-form-item
v-if="config.customize.down"
label="头部字体颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.fontGraphicColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
v-if="config.customize.down"
label="头部字体大小"
label-width="100px"
>
<el-input-number
v-model="config.customize.fontSize"
placeholder="请输入字体大小"
controls-position="right"
:step="1"
/>
</el-form-item>
<el-form-item <el-form-item
label="地图背景色" label="地图背景色"
label-width="100px" label-width="100px"
@ -280,6 +313,9 @@ export default {
this.config.customize.dataMap = '中华人民共和国.json' this.config.customize.dataMap = '中华人民共和国.json'
} else if (this.config.customize.level === 'province') { } else if (this.config.customize.level === 'province') {
this.config.customize.dataMap = '安徽省.json' this.config.customize.dataMap = '安徽省.json'
this.config.customize.down=false
}else{
this.config.customize.down=false
} }
}, },
delColor () { delColor () {

@ -44,7 +44,7 @@ const customConfig = {
// 是否显示文字 // 是否显示文字
mapName: true, mapName: true,
// 地图背景色 // 地图背景色
backgroundColor: '#404a59', backgroundColor: 'rgb(21, 26, 38)',
// 是否打点 // 是否打点
scatter: true, scatter: true,
// 悬浮框背景色 // 悬浮框背景色
@ -56,13 +56,17 @@ const customConfig = {
// 打点图文字颜色 // 打点图文字颜色
scatterColor: '#fff', scatterColor: '#fff',
// 分割线颜色 // 分割线颜色
mapLineColor: 'rgba(147, 235, 248, 1)', mapLineColor: 'rgba(53, 86, 165, 1)',
fontGraphicColor: '#fff',
fontSize:'30',
// 是否开启下钻
down: false,
// 地图级别 // 地图级别
level: 'country', level: 'country',
// 范围 // 范围
scope: '中国', scope: '中国',
// 地图区域颜色 // 地图区域颜色
areaColor: '#007aff', areaColor: 'rgba(31, 50, 121, 1)',
// 是否开启筛选 // 是否开启筛选
visual: false, visual: false,
// 筛选范围 // 筛选范围

Loading…
Cancel
Save