echarts显示自定义中国地图——笔记

引入方法和备注在最后面

var geoCoordMap = {    //地理坐标

"舟山":[122.207216,29.985295],    

"齐齐哈尔":[123.97,47.33],

"盐城":[120.13,33.38],

"拉萨":[91.11,29.97],

"南宁":[108.33,22.84],

"苏州":[120.62,31.32],

"南昌":[115.89,28.68],

"南京":[118.78,32.04],

"杭州":[120.19,30.26],

"哈尔滨":[126.63,45.75],

"合肥":[117.27,31.86],

"武汉":[114.31,30.52],

"大庆":[125.03,46.58]

};

var data = [    //根据value值大小决定是中心还是站点

{name: "舟山", value: 12},

{name: "齐齐哈尔", value: 14},

{name: "盐城", value: 15},

{name: "拉萨", value: 24},

{name: "南宁", value: 37},

{name: "苏州", value: 50},

{name: "南昌", value: 54},

{name: "南京", value: 67},

{name: "杭州", value: 144},

{name: "哈尔滨", value: 114},

{name: "合肥", value: 129},

{name: "武汉", value: 173},

{name: "大庆", value: 179}

];

var convertData = function (data) {

var res = [];

for (var i = 0; i < data.length; i++) {

var geoCoord = geoCoordMap[data[i].name];    //得到对应坐标

if (geoCoord) {  //判断data第i个的name对应的地理坐标是否存在

res.push({

name: data[i].name,

value: geoCoord.concat(data[i].value)  //两个value值连接

});

}

}

return res;

};

var convertedData = [

convertData(data),

convertData(data.sort(function (a, b) {

return b.value - a.value;

}).slice(0, 6))

];

option = {  //设置自定义地图

backgroundColor: 'rgba(64,74,89,0.1)',  //地图背景色

animation: true,

animationDuration: 1000,

animationEasing: 'cubicInOut',

animationDurationUpdate: 1000,

animationEasingUpdate: 'cubicInOut',

// title: [

//    {

//        text: '全国主要城市 PM 2.5',

//        subtext: 'data from PM25.in',

//        sublink: 'http://www.pm25.in',

//        left: 'center',

//        textStyle: {

//            color: '#fff'

//        }

//    },

//    {

//        id: 'statistic',

//        right: 120,

//        top: 40,

//        width: 100,

//        textStyle: {

//            color: '#fff',

//            fontSize: 16

//        }

//    }

// ],

// toolbox: {

//    iconStyle: {

//        normal: {

//            borderColor: '#fff'

//        },

//        emphasis: {

//            borderColor: '#b1e4ff'  //浅蓝

//        }

//    }

// },

// brush: {    //区域选择组件,选中的区域进行统计排序

//    outOfBrush: {

//        color: '#abc'

//    },

//    brushStyle: {

//        borderWidth: 2,

//        color: 'rgba(0,0,0,0.2)',

//        borderColor: 'rgba(0,0,0,0.5)',

//    },

//    seriesIndex: [0, 1],

//    throttleType: 'debounce',

//    throttleDelay: 300,

//    geoIndex: 0

// },

geo: {

map: 'china',

left: '10',

right: '35%',

center: [117.98561551896913, 31.205000490896193],

zoom: 2.5,

label: {

emphasis: {

show: false

}

},

roam: true,

itemStyle: {

normal: {

areaColor: '#017054',  //两种深黑灰

borderColor: '#48dcad'

},

emphasis: {

areaColor: '#1b654f'  //深黑灰

}

}

},

tooltip : {    //悬浮提示信息

trigger: 'item'

},

// grid: {    //统计表

//    right: 40,

//    top: 100,

//    bottom: 40,

//    width: '30%'

// },

// xAxis: {

//    type: 'value',

//    scale: true,

//    position: 'top',

//    boundaryGap: false,

//    splitLine: {show: false},

//    axisLine: {show: false},

//    axisTick: {show: false},

//    axisLabel: {margin: 2, textStyle: {color: '#aaa'}},  //背景灰

// },

// yAxis: {

//    type: 'category',

//    name: 'TOP 20',

//    nameGap: 16,

//    axisLine: {show: false, lineStyle: {color: '#ddd'}},

//    axisTick: {show: false, lineStyle: {color: '#ddd'}},

//    axisLabel: {interval: 0, textStyle: {color: '#ddd'}},

//    data: []

// },

series : [

{

name: '站点',

type: 'scatter',    //散点图

coordinateSystem: 'geo',  //地理坐标系

data: convertedData[0],

symbolSize: function (val) {    //标记的大小,大小不一样会用如下公式计算

return Math.max(val[2] / 10, 8);

},

label: {  //图形上的文本标签

normal: {

formatter: '{b}',

position: 'right',

show: false  //站点地名的直接显示

},

emphasis: {

show: true  //悬浮显示

}

},

itemStyle: {

normal: {

color: '#ddb926'  //屎黄

}

},

},

{

name: '中心',

type: 'effectScatter',    //带有涟漪的散点图

coordinateSystem: 'geo',

data: convertedData[1],

symbolSize: function (val) {

return Math.max(val[2] / 10, 8);

},

showEffectOn: 'emphasis',  //配置何时显示特效:高亮(hover)的时候显示特效。

rippleEffect: {

brushType: 'stroke'    //波纹的绘制方式:空心或者实心fill

},

hoverAnimation: true,

label: {

normal: {

formatter: '{b}',  //模板变量有 {a}、{b}、{c},分别表示系列名,数据名,数据值。

position: 'right',

show: true

}

},

itemStyle: {

normal: {

color: '#f4e925',  //亮黄

shadowBlur: 10,

shadowColor: '#333'    //悬浮灰

}

},

zlevel: 1

}

]

};

myChart.on('brushselected', renderBrushed);

// myChart.setOption(option); 这里本来就是注释的

// setTimeout(function () {

//    myChart.dispatchAction({    //属于API里面action.brush,选择区域进行统计

//        type: 'brush',

//        areas: [

//            {

//                geoIndex: 0,    //index 为 0 的 geo 坐标系

//                brushType: 'polygon',  //指定选框的类型,下面的是选框范围

//                coordRange: [[119.72,34.85],[119.68,34.85],[119.5,34.84],[119.19,34.77],[118.76,34.63],[118.6,34.6],[118.46,34.6],[118.33,34.57],[118.05,34.56],[117.6,34.56],[117.41,34.56],[117.25,34.56],[117.11,34.56],[117.02,34.56],[117,34.56],[116.94,34.56],[116.94,34.55],[116.9,34.5],[121.64,34.08]]

//            }

//        ]

//    });

// }, 0);

function renderBrushed(params) {

var mainSeries = params.batch[0].selected[0];

var selectedItems = [];

var categoryData = [];

var barData = [];

var maxBar = 30;

var sum = 0;

var count = 0;

for (var i = 0; i < mainSeries.dataIndex.length; i++) {

var rawIndex = mainSeries.dataIndex[i];

var dataItem = convertedData[0][rawIndex];

var pmValue = dataItem.value[2];

sum += pmValue;

count++;

selectedItems.push(dataItem);

}

selectedItems.sort(function (a, b) {

return a.value[2] - b.value[2];

});

for (var i = 0; i < Math.min(selectedItems.length, maxBar); i++) {

categoryData.push(selectedItems[i].name);

barData.push(selectedItems[i].value[2]);

}

this.setOption({

yAxis: {

data: categoryData

},

xAxis: {

axisLabel: {show: !!count}

},

title: {

id: 'statistic',

text: count ? '平均: ' + (sum / count).toFixed(4) : ''

},

series: {

id: 'bar',

data: barData

}

});}

引入注意事项:

显示地图首先要引入china.js,然后调用

var mapChart =echarts.init(document.getElementById('map_chart'));

mapChart.setOption({

series:[{

  type:'map',

  map:'china'

}]

});

前面var了一个option需要渲染,所以还要:

mapChart.setOption(option)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,127评论 0 7
  • 这一天,你说,就此别过 我挥挥手,再见。 我忍痛放你飞翔 我的爱人 哦,不 我的挚爱 不要回头 不要看见我这狼狈的...
    苏荷小姐阅读 350评论 0 2
  • 北京的天气已经流露丝丝寒意,接连几天的晴空万里使心情格外畅爽。昨日研一篮球队的学弟们也迎来了他们第一场训练,但更重...
    神闲游阅读 184评论 0 0
  • 很多人应该有这样的经历,下班出了地铁,操起电话和朋友一通狂侃,内容包罗万象:难缠的甲方,反复无常的上司,新买的衣服...
    宝艾妈妈阅读 865评论 0 1