187 lines
6.7 KiB
JavaScript
187 lines
6.7 KiB
JavaScript
/**
|
|
* 顶部header
|
|
*/
|
|
Vue.component("labour-china-map", {
|
|
template: `
|
|
<div :style="{'height': height+'px'}" ref="map"></div>
|
|
`,
|
|
props: {
|
|
data:{
|
|
type:Array
|
|
},
|
|
tooltip:{
|
|
type:Array
|
|
},
|
|
height:{
|
|
type:Number
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
option:{},
|
|
|
|
}
|
|
},
|
|
mounted(){
|
|
this.loadMap(this.data,this.tooltip)
|
|
window.chartClick = this.chartClick;
|
|
},
|
|
methods: {
|
|
chartClick(id){
|
|
|
|
this.$emit('projectid',id)
|
|
},
|
|
loadMap(outdata,tooltip) {
|
|
var iconGD = "image://http://fileimg.makalu.cc/WEB_0EE6DA50925A4C27A126669209F1A5E2.png";
|
|
var myChart = echarts.init(this.$refs.map);
|
|
var geoCoordMap = {};
|
|
/*获取地图数据*/
|
|
var mapFeatures = echarts.getMap('china').geoJson.features;
|
|
// console.log(mapFeatures)
|
|
mapFeatures.forEach(function(v) {
|
|
// 地区名称
|
|
var name = v.properties.name;
|
|
// 地区经纬度
|
|
geoCoordMap[name] = v.properties.cp;
|
|
});
|
|
this.option = {
|
|
tooltip: {
|
|
show: true,
|
|
trigger: "item",
|
|
enterable: true,
|
|
showContent: true,
|
|
padding:0,
|
|
triggerOn:'click',
|
|
formatter: function(params) {
|
|
var tipHtml = ''
|
|
console.log(params.dataIndex)
|
|
if(params.data){
|
|
tipHtml = tooltip[params.dataIndex]
|
|
return tipHtml
|
|
}
|
|
},
|
|
},
|
|
geo: {
|
|
map: 'china',
|
|
show: true,
|
|
roam: true,
|
|
zoom: 1.17,
|
|
label: {
|
|
emphasis: {
|
|
show: false,
|
|
}
|
|
},
|
|
layoutSize: "100%",
|
|
itemStyle: {
|
|
// normal: {
|
|
// areaColor: '#000', //背景颜色
|
|
// borderColor: '#8ac2fb', //省划分边线
|
|
// borderWidth: 10, //边线的粗细
|
|
// },
|
|
// emphasis: {
|
|
// areaColor: '#002d90' , //指上背景限色
|
|
// },
|
|
areaColor: "#86c2f8",
|
|
borderColor: "#86c2f8",
|
|
shadowColor: "#86c2f8",
|
|
shadowBlur: 25,
|
|
borderWidth: 5,
|
|
},
|
|
},
|
|
series: [{
|
|
type: 'map',
|
|
roam: true,
|
|
zoom: 1.15,
|
|
map: 'china', //使用
|
|
label: {
|
|
normal: {
|
|
show: true,
|
|
fontSize:20, //省会字体大小
|
|
textStyle: {
|
|
color: '#ffffff',
|
|
}
|
|
},
|
|
emphasis: {
|
|
show: false,
|
|
color: '#ffffff', //指上省会字体颜色
|
|
}
|
|
},
|
|
itemStyle: {
|
|
normal: {
|
|
areaColor: {
|
|
type: "radial",
|
|
x: 0.5,
|
|
y: 0.5,
|
|
r: 0.8,
|
|
colorStops: [
|
|
{
|
|
offset: 0,
|
|
color: "#1c2a4c", // 0% 处的颜色
|
|
},
|
|
{
|
|
offset: 1,
|
|
color: "#1f335e", // 100% 处的颜色
|
|
},
|
|
],
|
|
globalCoord: true, // 缺省为 false
|
|
},
|
|
shadowColor: "rgb(58,115,192)",
|
|
borderColor: '#8ac2fb'
|
|
},
|
|
// normal: {
|
|
// areaColor: '#141e37', //背景颜色
|
|
// borderColor: '#8ac2fb', //省划分边线
|
|
// borderWidth: 1, //边线的粗细
|
|
// },
|
|
emphasis: {
|
|
areaColor: '#22578b' , //指上背景限色
|
|
textStyle: {
|
|
color: '#ffffff',
|
|
|
|
}
|
|
}
|
|
},
|
|
},
|
|
{
|
|
type: 'scatter', //effectScatter 水波纹效果 scatter 无效果
|
|
coordinateSystem: 'geo',
|
|
rippleEffect: {
|
|
brushType: 'stroke'
|
|
},
|
|
showEffectOn: 'render',
|
|
itemStyle: {
|
|
normal: {
|
|
show: false,
|
|
|
|
}
|
|
},
|
|
symbolSize: 35,
|
|
symbol: iconGD,
|
|
data: outdata,
|
|
zlevel: 1,
|
|
|
|
}]
|
|
};
|
|
myChart.setOption(this.option);
|
|
|
|
myChart.on('georoam', function(params) {
|
|
var option = myChart.getOption(); //获得option对象
|
|
if (params.zoom != null && params.zoom != undefined) { //捕捉到缩放时
|
|
option.geo[0].zoom = option.series[0].zoom+0.02; //下层geo的缩放等级跟着上层的geo一起改变
|
|
option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
|
|
} else { //捕捉到拖曳时
|
|
option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
|
|
}
|
|
myChart.setOption(option); //设置option
|
|
});
|
|
},
|
|
|
|
},
|
|
watch: {
|
|
data: function (n,o) {
|
|
this.loadMap(this.data,this.tooltip)
|
|
window.chartClick = this.chartClick;
|
|
}
|
|
},
|
|
})
|