当前位置: 首页 > backend >正文

echarts如何在json地图上设置多种颜色的点位和自定义背景弹出框

效果图
在这里插入图片描述

1.引入echarts.js和jquery.min.js文件

 <script type="text/javascript" src="/js/jquery.min.js"></script> 
<script type="text/javascript" src="/js/echarts.js">< /script > 

2.html内容

<div id="main" style="height: 92%;width: 88%;padding: 0;"></div>

3.获取不同颜色点位的数组

var myChart = echarts.init(document.getElementById('main'));var result= new Array();
var checked= new Array();
var noChecked= new Array();function  loadData(){if(result.length!=0){result.length=0;noChecked.length=0;checked.length=0;}var _url=path()+"/getArr.do";$.ajax({async: false,type:'POST',data:{},url:_url,dataType:'json',success:function(data){if(data!=null && data!=''){$.each(data,function(i,c) {var a = new Object();var b = [];a.id= c.ida.name = c.name;var gg_pos = bd09togcj02(c.lon, c.lat)//将点位转化为地图坐标系b[0] = gg_pos[0];b[1] = gg_pos[1];a.value = b;if (i < 11) {checked[i] = a//一种颜色的数组} else {noChecked[i - 1] = a//另外一种颜色的数组}})}result.push(checked)result.push(noChecked)loadJsonMap("zhejiang","浙江省")},error:function(){ } });
} 

4.加载json地图并自定义背景图片

function loadJsonMap(mapCode, mapName) {var width=$('#main').width();var width1=width*0.8;var height=$('#main').height()*0.8;var data2 = result;var max = 0;console.log(result)$.getJSON('/js/china-main-city/' + mapCode + '.json', function (data) {//获取地图json数据//转为腾讯坐标系console.log(data.features[0].geometry.coordinates[0][0][0][0])var ps=data.features[0].geometry.coordinates[0][0][0];for(var j=0;j<ps.length;j++){var gg_pos = bd09togcj02(ps[j][0], ps[j][1])ps[j][0]=gg_pos[0]ps[j][1]=gg_pos[1]}if (data) {echarts.registerMap(mapName, data);option = {tooltip: {show:true,trigger: 'item',// formatter: '{b}',extraCssText: "width:282px;height:250px;background: url(imagesSwyt/maptck.png) no-repeat;z-index:99",//设置弹窗的背景图片position: function (pos, params, dom, rect, size) {var datas=params.data;var _html="";_html+="<div style='position: relative;width:260px;height:230px;'>"_html+="<h1 style='width:230px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;color: #fff;font-size: 18px;margin: 0px 0px 0px 22px;position: relative;height: 30px;top:20px;'>"+datas.name+"</h1>"_html+="</div></div></div>"$(dom).html(_html);//设置弹窗的内容var objs={left:pos[0]-(size.contentSize[0]/2),top:pos[1]-(size.contentSize[1])}return objs;//固定浮框的位置 显示在点位的正上方},triggerOn: 'click'//设置触发点位的方式为点击},geo: {map: mapName,left:"5%",top:0,width:width1,height:height,hoverAnimation:false,avoidLabelOverlap: false,silent:true,//设置地图鼠标浮动上去不显示高亮选中label: {normal: {show: true,textStyle: {fontSize: 15,color: 'white'}},emphasis: {show: true,textStyle: {fontSize: 15,color: 'white'}},},itemStyle:{normal: {areaColor: '#096dd9'},emphasis: {areaColor: '#red'}},},series : [{name: 'noChecked',type: 'effectScatter',coordinateSystem: 'geo',hoverAnimation:false,avoidLabelOverlap: false,emphasis: {itemStyle: {areaColor: '#096dd9'}},data: data2[1],symbolSize: 8,label: {normal: {formatter: '{b}',position: 'right',show: false}},itemStyle: {normal: {color: '#83C686',shadowBlur: 5,shadowColor: '#fff'}},},{name: 'checked',type: 'effectScatter',coordinateSystem: 'geo',hoverAnimation:false,avoidLabelOverlap: false,emphasis: {itemStyle: {areaColor: '#096dd9'}},data:data2[0],symbolSize: 10,label: {normal: {formatter: '{b}',position: 'right',show: false}},itemStyle: {normal: {color: 'red',shadowBlur: 10,shadowColor: '#fff'}},zlevel: 1}]};myChart.setOption(option); } else { alert('无法加载该地图'); } }); 
}

坐标转换函数

/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* @param bd_lon* @param bd_lat* @returns {*[]}*/
function bd09togcj02(bd_lon, bd_lat) {var x_pi = 3.14159265358979324 * 3000.0 / 180.0;var x = bd_lon - 0.0065;var y = bd_lat - 0.006;var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);var gg_lng = z * Math.cos(theta);var gg_lat = z * Math.sin(theta);return [gg_lng, gg_lat]
}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换* 即谷歌、高德 转 百度* @param lng* @param lat* @returns {*[]}*/
function gcj02tobd09(lng, lat) {var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);var bd_lng = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return [bd_lng, bd_lat]
}/*** WGS84转GCj02* @param lng* @param lat* @returns {*[]}*/
function wgs84togcj02(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var mglat = lat + dlat;var mglng = lng + dlng;return [mglng, mglat]}
}/*** GCJ02 转换为 WGS84* @param lng* @param lat* @returns {*[]}*/
function gcj02towgs84(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);mglat = lat + dlat;mglng = lng + dlng;return [lng * 2 - mglng, lat * 2 - mglat]}
}
http://www.xdnf.cn/news/11719.html

相关文章:

  • 聊天记录2.0.db
  • 125款七夕情人节程序员专属表白网站【全网最全】HTML+CSS+JS
  • 推荐一款强大的视频播放器:恒星播放器
  • 财智V6.0(完美破解序列号特别版)
  • 中秋祝福代码,中秋快乐代码,采用H5制作的中秋动画祝福
  • 卡巴斯基病毒库离线更新教程(转)
  • 龙之崛起修改器V1.0版
  • 国产硬件防火墙横向对比
  • SQL Server 2005 dev 开发板 版本说明
  • 自己动手做博客之日志管理-5.3 管理日志列表
  • 【Vue】 第十六部分 插槽(默认插槽、具名插槽、作用域插槽)
  • GBA.js 在浏览器中的Game Boy Advance模拟器搭建指南
  • Data,computed,watch的作用?
  • 封面设计软件有什么?不容错过的五款封面设计软件
  • Android笔记之 TTS中文发音
  • 二本学渣考研失败,docker制作镜像教程
  • 仪表放大器放大倍数分析-运算放大器
  • vector的常见用法
  • 电脑黑屏问题的4种解决方法,两分钟轻松掌握
  • 计算机宽带拨号配置,宽带拨号上网怎么设置路由器
  • 关于OleDbCommand中操作数据库的几种方法的区别
  • 解决Warning: Cannot modify header information - headers already sent by问题
  • 【STM32】 DMA原理,步骤超细详解,一文看懂DMA
  • 鸿蒙生死印是谁的,逆天邪神:鸿蒙印的器灵还存在,或许云澈将知道些关于远古的秘密...
  • 蛙灵桌面
  • 完整版:iOS 6.1完美越狱全攻略(已实验成功)
  • 有哪些比较好用的黄页网站?
  • vc 网络编程(socket)
  • 备注,推荐一个别人的blog,关于界面的。
  • 中文搜索引擎提交入口