BIGEMPA Js API示例中心
<!DOCTYPE html> <html> <head> <meta charset='UTF-8' /> <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' /> <!-- 以下CSS地址请在安装软件了替换成本地的地址 CSS地址请使用: http://localhost:9000/bigemap.js/v2.1.0/bigemap.css 软件下载地址 http://www.bigemap.com/reader/download/detail201802017.html --> <link href='http://www.bigemap.com:9000/bigemap.js/v2.1.0/bigemap.css' rel='stylesheet' /> <!-- JS地址请使用: http://localhost:9000/bigemap.js/v2.1.0/bigemap.js --> <script src='http://www.bigemap.com:9000/bigemap.js/v2.1.0/bigemap.js'></script> <script src="http://www.bigemap.com/Public/common/js/jquery.min.js"></script> <script src="http://www.bigemap.com/Public/js/d3.min.js"></script> <style> body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; width: 100%; } #left { position: absolute; z-index: 10; height: 100%; width: 300px; background-color: black; opacity: .5; } .d31 { position: absolute; z-index: 10; height: 100%; width: 0px; background-color: white; } .d32 { position: absolute; z-index: 10; height: 100%; width: 0px; background-color: white; } .toptitle { position: absolute; z-index: 10; height: 72px; left: 67px; color: white; } .bottomtitle { position: absolute; z-index: 10; height: 72px; top: 313px; left: 67px; color: white; } .svg1 { border-radius: 50%; background-color: white; opacity: .8; } </style> <title>Google Map Streets</title> </head> <body> <div id="left"> <div class="toptitle"> </div> <div class="bottomtitle"> </div> </div> <div class="d31"></div> <div class="d32"></div> <div id='map'></div> <script> //软件配置信息地址,软件安装完成之后使用本地地址,如:http://localhost:9000 BM.Config.HTTP_URL = 'http://www.bigemap.com:9000'; // 在ID为map的元素中实例化一个地图,并设置地图的ID号为 bigemap.zhongkexingtu,ID号程序自动生成,无需手动配置,并设置地图的投影为百度地图 ,中心点,默认的级别和显示级别控件 var map = BM.map('map', 'bigemap.zhongkexingtu', { center: [30, 104], zoom: 4, zoomControl: true }); //标记数据 places = [{ "name": "甘肃", "position": [36.03, 103.73] }, { "name": "青海", "position": [36.56, 101.74] }, { "name": "四川", "position": [30.67, 104.06] }, { "name": "河北", "position": [38.03, 114.48] }, { "name": "云南", "position": [25.04, 102.73] }, { "name": "贵州", "position": [26.57, 106.71] }, { "name": "湖北", "position": [30.52, 114.31] }, { "name": "河南", "position": [34.76, 113.65] }, { "name": "山东", "position": [36.65, 117] }, { "name": "江苏", "position": [32.04, 118.78] }, { "name": "安徽", "position": [31.86, 117.27] }, { "name": "浙江", "position": [30.26, 120.19] }, { "name": "江西", "position": [28.68, 115.89] }, { "name": "福建", "position": [26.08, 119.3] }, { "name": "广东", "position": [23.16, 113.23] }, { "name": "湖南", "position": [28.21, 113] }, { "name": "海南", "position": [20.02, 110.35] }, { "name": "辽宁", "position": [41.8, 123.38] }, { "name": "吉林", "position": [43.88, 125.35] }, { "name": "黑龙江", "position": [45.75, 126.63] }, { "name": "山西", "position": [37.87, 112.53] }, { "name": "陕西", "position": [34.27, 108.95] }, { "name": "台湾", "position": [25.03, 121.3] }, { "name": "北京", "position": [39.92, 116.46] }, { "name": "上海", "position": [31.22, 121.48] }, { "name": "重庆", "position": [29.59, 106.54] }, { "name": "天津", "position": [39.13, 117.2] }, { "name": "内蒙古", "position": [40.82, 111.65] }, { "name": "广西", "position": [22.84, 108.33] }, { "name": "西藏", "position": [29.97, 91.11] }, { "name": "宁夏", "position": [38.47, 106.27] }, { "name": "新疆", "position": [43.77, 87.68] }, { "name": "香港", "position": [22.28, 114.17] }, { "name": "澳门", "position": [22.19, 113.54] }]; var data = [] var data2 = [] places.map((v, i) => { var marker = BM.marker(v.position).addTo(map) if (i == 1) { draw(v); } //标记点击事件 marker.on('click', function () { $('.toptitle').html("<h3>" + v.name + "水果数量饼状图</h3>") $('.bottomtitle').html("<h3>" + v.name + "过去7天降水量</h3>") data.length = 0 data2.length = 0 d3.selectAll('svg').remove() var wid = $("#left").css('width') if (wid == '0px') { $('#left').animate({ width: 300 }, 500) } setTimeout(function () { var height = 240 var width = 240 var svg = d3.select('.d31').append('svg').attr('height', height).attr('width', width).attr('transform', "translate(25,50)").attr('class', 'svg1') var pieg = svg.append('g') var fruit = ['苹果', '香蕉', '梨子', '葡萄', '火龙果'] //创建假数据 for (let index = 0; index < 5; index++) { num = Math.random() * 100 if (num < 20) { num = num + 20 } data.push(num.toFixed(2)) } //画饼状图 //定义颜色比例尺 var colorScale = d3.scaleOrdinal() .domain(d3.range(data.length)) .range(d3.schemeCategory10); //处理数据 var pie = d3.pie(); //新建一个弧形生成器 var innerRadius = 0;//内半径 var outerRadius = 120;//外半径 var arc_generator = d3.arc() .innerRadius(innerRadius) .outerRadius(outerRadius); //将原始数据变成可以绘制饼状图的数据, var pieData = pie(data); //打印出来查看转换后的数据 console.log(pieData); // 每一个扇形及其对应的文字建立一个分组<g> gs = pieg.selectAll(".g") .data(pieData) .enter() .append("g") .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")//位置信息 // 绘制扇形 gs.append("path") .attr("d", function (d) { return arc_generator(d);//往弧形生成器中出入数据 }) .attr("fill", function (d, i) { return colorScale(i);//设置颜色 }); //绘制饼状图上面的文字信息 gs.append("text") .attr("transform", function (d) {//位置设在中心处 return "translate(" + arc_generator.centroid(d) + ")"; }) .attr("text-anchor", "middle") .text(function (d, i) { return d.data; }) gs.append("text") .attr("transform", function (d) {//位置设在中心处 return "translate(" + arc_generator.centroid(d) + ")"; }) .attr("text-anchor", "middle") .attr('y', 20) .text(function (d, i) { return fruit[i] }) //————+—————————————————————————————————————————————————————————————————————————————————————— // 画柱状图 //创建假数据 for (let index = 0; index < 7; index++) { num = Math.random() * 100 if (num < 20) { num = num + 20 } data2.push(num.toFixed(0)) } var svg2 = d3.select('.d32').append('svg').attr('height', height).attr('width', width).attr('transform', "translate(25,370)") //x轴数据 Xdatas = ['一', '二', '三', '四', '五', '六', '日'] //创建x轴比例尺 var x = d3.scaleBand().domain(Xdatas).rangeRound([0, width - 50]).padding(0.1); xAsix = d3.axisBottom(x) var g = svg2.append('g') g.append('g').attr('transform', 'translate(25,' + 210 + ')').attr('color', 'snow') .call(xAsix); console.log(data2); //y轴比例尺 var y = d3.scaleLinear().domain([0, d3.max(data2)]).rangeRound([(height - 50), 0]) yAsix = d3.axisLeft(y) g.append('g').attr('transform', 'translate(25,18)').call(yAsix).attr('color', 'snow'); chart = g.selectAll('.bar').data(data2).enter().append('g'); //添加矩形 chart.append('rect') .attr('x', function (d, i) { return x(Xdatas[i]); }) .attr('cursor', 'pointer') .attr('y', function (d) { return y(y.domain()[0]) - 5; }) .attr('fill', function (d, i) { // 生成随机颜色 return colorScale(i) }) .attr('stroke', '#FFF').attr('stroke-width', '3px') .transition() .delay(function (d, i) { return (i + 1) * 50 }) .duration(2000).ease(d3.easeBounceIn) .attr('y', function (d) { return y(d) - 5; }) .attr('width', x.bandwidth()) .attr('height', function (d) { return (height - 50) - y(d); }).attr('transform', 'translate(25,25)'); //添加文字 chart.append('text').attr('fill', '#FFF') .attr('x', function (d, i) { return x(Xdatas[i]); }) .attr('y', function (d) { return y(y.domain()[0]); }) .transition() .delay(function (d, i) { return (i + 1) * 100 }) .duration(2000).ease(d3.easeBounceIn) .attr('y', function (d) { return y(d); }) .attr('dx', function (d) { return (x.bandwidth()) / 2; }) .attr('dy', 20) .text(function (d) { return d }).attr('transform', 'translate(16,-8)'); }, 100) }) }) //map点击事件 map.on('click', function (e) { $('.toptitle').html("") $('.bottomtitle').html("") d3.selectAll('svg').remove() $('#left').animate({ width: 0 }, 1000) }) function draw(v) { $('.toptitle').html("<h3>" + v.name + "水果数量饼状图</h3>") $('.bottomtitle').html("<h3>" + v.name + "过去7天降水量</h3>") var height = 240 var width = 240 var svg = d3.select('.d31').append('svg').attr('height', height).attr('width', width).attr('transform', "translate(25,50)").attr('class', 'svg1') var pieg = svg.append('g') var fruit = ['苹果', '香蕉', '梨子', '葡萄', '火龙果'] //创建假数据 for (let index = 0; index < 5; index++) { num = Math.random() * 100 if (num < 20) { num = num + 20 } data.push(num.toFixed(2)) } //画饼状图 //定义颜色比例尺 var colorScale = d3.scaleOrdinal() .domain(d3.range(data.length)) .range(d3.schemeCategory10); //处理数据 var pie = d3.pie(); //新建一个弧形生成器 var innerRadius = 0;//内半径 var outerRadius = 120;//外半径 var arc_generator = d3.arc() .innerRadius(innerRadius) .outerRadius(outerRadius); //将原始数据变成可以绘制饼状图的数据, var pieData = pie(data); //打印出来查看转换后的数据 console.log(pieData); // 每一个扇形及其对应的文字建立一个分组<g> gs = pieg.selectAll(".g") .data(pieData) .enter() .append("g") .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")//位置信息 // 绘制扇形 gs.append("path") .attr("d", function (d) { return arc_generator(d);//往弧形生成器中出入数据 }) .attr("fill", function (d, i) { return colorScale(i);//设置颜色 }); //绘制饼状图上面的文字信息 gs.append("text") .attr("transform", function (d) {//位置设在中心处 return "translate(" + arc_generator.centroid(d) + ")"; }) .attr("text-anchor", "middle") .text(function (d, i) { return d.data; }) gs.append("text") .attr("transform", function (d) {//位置设在中心处 return "translate(" + arc_generator.centroid(d) + ")"; }) .attr("text-anchor", "middle") .attr('y', 20) .text(function (d, i) { return fruit[i] }) //————+—————————————————————————————————————————————————————————————————————————————————————— // 画柱状图 //创建假数据 for (let index = 0; index < 7; index++) { num = Math.random() * 100 if (num < 20) { num = num + 20 } data2.push(num.toFixed(0)) } var svg2 = d3.select('.d32').append('svg').attr('height', height).attr('width', width).attr('transform', "translate(25,370)") //x轴数据 Xdatas = ['一', '二', '三', '四', '五', '六', '日'] //创建x轴比例尺 var x = d3.scaleBand().domain(Xdatas).rangeRound([0, width - 50]).padding(0.1); xAsix = d3.axisBottom(x) var g = svg2.append('g') g.append('g').attr('transform', 'translate(25,' + 210 + ')').attr('color', 'snow') .call(xAsix); console.log(data2); //y轴比例尺 var y = d3.scaleLinear().domain([0, d3.max(data2)]).rangeRound([(height - 50), 0]) yAsix = d3.axisLeft(y) g.append('g').attr('transform', 'translate(25,18)').call(yAsix).attr('color', 'snow'); chart = g.selectAll('.bar').data(data2).enter().append('g'); //添加矩形 chart.append('rect') .attr('x', function (d, i) { return x(Xdatas[i]); }) .attr('cursor', 'pointer') .attr('y', function (d) { return y(y.domain()[0]) - 5; }) .attr('fill', function (d, i) { // 生成随机颜色 return colorScale(i) }) .attr('stroke', '#FFF').attr('stroke-width', '3px') .transition() .delay(function (d, i) { return (i + 1) * 50 }) .duration(2000).ease(d3.easeBounceIn) .attr('y', function (d) { return y(d) - 5; }) .attr('width', x.bandwidth()) .attr('height', function (d) { return (height - 50) - y(d); }).attr('transform', 'translate(25,25)'); //添加文字 chart.append('text').attr('fill', '#FFF') .attr('x', function (d, i) { return x(Xdatas[i]); }) .attr('y', function (d) { return y(y.domain()[0]); }) .transition() .delay(function (d, i) { return (i + 1) * 100 }) .duration(2000).ease(d3.easeBounceIn) .attr('y', function (d) { return y(d); }) .attr('dx', function (d) { return (x.bandwidth()) / 2; }) .attr('dy', 20) .text(function (d) { return d }).attr('transform', 'translate(16,-8)'); } </script> </body> </html>