如何用ECharts动态在地图上标识点

如何用ECharts动态在地图上标识点,第1张

ECharts可以很方便的在网页上绘制地图,图表,并且可以提供下载图像,放大,缩小,拖动等功能,今天主要说一下它的地图类型(type:'map')是如何实现的.

首先在ECharts地图的坐标需要我们存储在一个geoCoord属性里,它是一个JS的字典对象,由键/值对组成,键表示点的名称,值则表达它的坐标,由经纬度组成,它是一个数组,如[136.00,32.00]它就表示了一个坐标.

地图类型的图表需要关注的元素

title:标题,显示这个地图所表示的名称

  title: {

text: '清大云点亮中国',

subtext: 'Tsingda.Cloud',

sublink: 'http://www.eee114.com',

x: 'center',

y: 'top',

textStyle: {

color: '#fff'

}

}

toolbox:工具栏,显示一些显示的工具,放大,缩小,查看数据集,下载图像等

toolbox: {

show: true,

feature: {

mark: { show: true },

dataView: { show: true, readOnly: false },

restore: { show: true },

saveAsImage: { show: true }

}

}

legend:图标显示,当series有多个地图时,这个值用到显示多个地图的图标,可以是横向显示和纵向显示

legend: {

x: 'left',

y: 'top',

data: ['在线', '离线'],//在线和离线对应的是series的名字

selectedMode: false,//选中悬浮

textStyle: {

color: '#fff'

}

}

series:地图显示,用来叠放显示地图,你可以定义多个,它们之间的关系是第一个在最上面,以此类推.

series: [

//默认

{

name: '底层模版',

type: 'map',

mapType: 'china',

data: provinceMap,

geoCoord: source,

itemStyle: {

normal: {

color: bgColor,

borderColor: "#eee",

label: {

show: true,

textStyle: {

color: "#fff"

}

}

}, emphasis: { color: "rgba(128, 128, 128, 0.5)" }

},

}]

markPoint:点标识,用来标识地图上的后,这些点通常是被存储在一个geoCoord对象上,这个对象是一个字典,这在文章开头已经介绍过.

markPoint: {//动态标记

large: true,//这个选项,悬浮自动失效

symbolSize: 2,

itemStyle: {

normal: {

shadowBlur: 2,

shadowColor: 'rgba(37, 140, 249, 0.8)',

color: onColor

}

},

data: []

}

markPoint里的data对象是这个地图上需要显示的点,它是一个字符型数组,用来存储geoCoord里的键!

setOption:将地图对象添加到指定的地图对象上

var myChart = echarts.init(document.getElementById('main'))

var option={}

myChart.setOption(option)

动态构建地图上的点标识markPoint

大概的思路是将要标记的点动态付给geoCoord和markPoint的data对象上,这样就可以动态在地图上标示点了

$.get("/map/GetOffMap", function (data) {

for (var i in data) {

option.series[0].geoCoord[data[i].longitude + "_" + data[i].latitude] = [parseFloat(data[i].longitude), parseFloat(data[i].latitude)]

option.series[1].markPoint.data.push({ name: data[i].longitude + "_" + data[i].latitude })

}

myChart.setOption(option)

// 指定图表的配置项和数据varoption = {

    backgroundColor: 'rgba(204,204,204,0.7 )',

    // 背景色,默认无背景    rgba(51,255,255,0.7)    title: {

        text: '各教育阶段男女人数统计',

        link: 'https://www.xxx.com',

        target: 'blank',

        top: '5%',

        left: '3%',

        textStyle: {

            color: '#fff',

            fontSize: 20,

        }

    },

    legend: { // 图例组件show:true,

        icon: 'rect',

        // 图例项的 icon。ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'也可以通过 'image://url' 设置为图片,其中 url 为图片的链接,或者 dataURI。可以通过 'path://' 将图标设置为任意的矢量路径。 top: '40%',

        // 图例距离顶部边距left: '15%',

        // 图例距离左侧边距itemWidth: 10,

        // 图例标记的图形宽度。[ default: 25 ]itemHeight: 10,

        // 图例标记的图形高度。[ default: 14 ]itemGap: 30,

        // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。orient: 'vertical',

        // 图例列表的布局朝向,'horizontal'为横向,''为纵向.textStyle: {// 图例的公用文本样式。fontSize: 15,

            color: '#fff'        },

        data: [{ // 图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 name(如果是饼图,也可以是饼图单个数据的 name)。图例组件会自动根据对应系列的图形标记(symbol)来绘制自己的颜色和标记,特殊字符串 ''(空字符串)或者 '\n'(换行字符串)用于图例的换行。name: '男',

            // 图例项的名称,应等于某系列的name值(如果是饼图,也可以是饼图单个数据的 name)。 icon: 'rect',

            // 图例项的 icon。textStyle: {// 图例项的文本样式。color: 'rgba(51,0,255,1)',

                fontWeight: 'bold'// 文字字体的粗细,可选'normal','bold','bolder','lighter'            }

        },

        {

            icon: 'rect',

            textStyle: {

                color: 'rgba(255,0,0,1)',

                fontWeight: 'bold'// 文字字体的粗细,可选'normal','bold','bolder','lighter'            }

        }],

    },

    radar: [{ // 雷达图坐标系组件,只适用于雷达图。center: ['50%', '50%'],

        // 圆中心坐标,数组的第一项是横坐标,第二项是纵坐标。[ default: ['50%', '50%'] ]radius: 160,

        // 圆的半径,数组的第一项是内半径,第二项是外半径。startAngle: 90,

        // 坐标系起始角度,也就是第一个指示器轴的角度。[ default: 90 ]name: {// (圆外的标签)雷达图每个指示器名称的配置项。formatter: '{value}',

            textStyle: {

                fontSize: 15,

                color: '#000'            }

        },

        nameGap: 15,

        // 指示器名称和指示器轴的距离。[ default: 15 ]splitNumber: 4,

        // (这里是圆的环数)指示器轴的分割段数。[ default: 5 ]shape: 'circle',

        // 雷达图绘制类型,支持 'polygon'(多边形) 和 'circle'(圆)。[ default: 'polygon' ]axisLine: {// (圆内的几条直线)坐标轴轴线相关设置            lineStyle: {

                color: '#fff',

                // 坐标轴线线的颜色。width: 1,

                // 坐标轴线线宽。type: 'solid',

                // 坐标轴线线的类型。            }

        },

        splitLine: { // (这里是指所有圆环)坐标轴在 grid 区域中的分隔线。            lineStyle: {

                color: '#fff',

                // 分隔线颜色width: 2,

                // 分隔线线宽            }

        },

        splitArea: { // 坐标轴在 grid 区域中的分隔区域,默认不显示。show:true,

            areaStyle: { // 分隔区域的样式设置。color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)'],

                // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。            }

        },

        indicator: [{ // 雷达图的指示器,用来指定雷达图中的多个变量(维度),跟data中 value 对应name: '高中',

            // 指示器名称 max: 15000,

            // 指示器的最大值,可选,建议设置 //color: '#fff' // 标签特定的颜色。        },series: [{

        name: '雷达图',

        // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。type: 'radar',

        // 系列类型: 雷达图itemStyle: {// 折线拐点标志的样式。normal: {// 普通状态时的样式                lineStyle: {

                    width: 1                },

                opacity: 0.2            },

            emphasis: { // 高亮时的样式                lineStyle: {

                    width: 5                },

                opacity: 1            }

        },

        data: [{ // 雷达图的数据是多变量(维度)的name: '女',

            // 数据项名称value: [11035, 6013, 5067, 1520, 184],

            // 其中的value项数组是具体的数据,每个值跟 radar.indicator 一一对应。symbol: 'circle',

            // 单个数据标记的图形。symbolSize: 5,

            // 单个数据标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10。label: {// 单个拐点文本的样式设置                normal: {

                    show: true,

                    // 单个拐点文本的样式设置。[ default: false ]position: 'top',

                    // 标签的位置。[ default: top ]distance: 5,

                    // 距离图形元素的距离。当 position 为字符描述值(如 'top'、'insideRight')时候有效。[ default: 5 ]color: 'rgba(255,0,0,1)',

                    // 文字的颜色。如果设置为 'auto',则为视觉映射得到的颜色,如系列色。[ default: "#fff" ]fontSize: 14,

                    // 文字的字体大小formatter:function(params) {

                        return params.value

                    }

                }

            },

            itemStyle: { // 单个拐点标志的样式设置。                normal: {

                    borderColor: 'rgba(255,0,0,1)',

                    // 拐点的描边颜色。[ default: '#000' ]borderWidth: 3,

                    // 拐点的描边宽度,默认不描边。[ default: 0 ]                }

            },

            lineStyle: { // 单项线条样式。                normal: {

                    opacity: 0.5// 图形透明度                }

            },

            areaStyle: { // 单项区域填充样式                normal: {

                    color: 'rgba(255,0,0,0.6)'// 填充的颜色。[ default: "#000" ]                }

            }

        },


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11441924.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存