JavaScript实现中国地图自动展示数据库 (js中国地图自动展示数据库)

JavaScript 实现中国地图自动展示数据库

JavaScript 作为一种广泛应用于 Web 开发的脚本语言,有着极高的可扩展性和强大的数据处理能力。在本文中,我们将利用 JavaScript 实现一个能够自动展示数据库中数据的中国地图。

1.数据准备

在实现中国地图自动展示数据库之前,我们需要准备好数据。具体来说,我们需要获取中国地图的矢量图数据,以及需要展示的数据库数据。在这里,我们可以利用开源地图库 GeoON 数据,这些数据通常包含一个区域的经纬度信息以及其他自定义属性。同时,我们可以使用类似 MySQL 等数据库,存储我们需要展示的数据。

2.创建地图

得到准备好的数据之后,我们就可以开始创建地图了。在这里,我们可以使用 D3.js,一款用于数据可视化的 JavaScript 库。D3.js 包含了许多用于绘制各种图表和地图的 API,可以自由定制化地图和数据的展示效果。

我们需要在 HTML 中创建一个容器用于承载地图。然后在 JavaScript 中,我们可以定义一个函数用于绘制中国地图:

“`javascript

function drawChinaMap() {

d3.json(“china.geojson”, function(data) {

var svg = d3.select(“#map-contner”).append(“svg”)

.attr(“width”, 800)

.attr(“height”, 600);

// 后续代码

});

}

“`

这里我们使用了 D3.js 的 `d3.json()` 函数读取 `china.geojson` 文件,并在 SVG 容器中创建一个 “ 元素,设置它的宽度为 800,高度为 600。

3.绘制地图

接下来,我们需要在地图上绘制中国地图的边界。D3.js 提供了 `d3.geoPath()` 函数可以将 GeoON 数据转换成 SVG 路径。我们可以使用这个函数来绘制每个省份和行政区的边界。

“`javascript

var projection = d3.geoMercator()

.center([104, 37.5])

.scale(750)

.translate([400, 300]);

var path = d3.geoPath()

.projection(projection);

svg.selectAll(“path”)

.data(data.features)

.enter()

.append(“path”)

.attr(“d”, path)

.style(“fill”, “#ccc”)

.style(“stroke”, “#fff”)

.style(“stroke-width”, 0.5);

“`

在这里,我们首先定义了一个投影对象 `projection`,它可以将经纬度坐标转换为 SVG 坐标。然后创建了一个 `path` 对象用于绘制 SVG 路径。

接下来,我们使用 `svg.selectAll(“path”)` 选择所有的路径元素,绑定数据并添加路径元素。其中 `data.features` 是我们准备好的 GeoON 数据,表示每个省份和行政区的边界。我们在 `.attr(“d”, path)` 中将路径数据传入 `path` 对象中进行转换,最终渲染出了地图的边界。其他几个 `.style()` 属性则是用于设置边界的样式。

4.展示数据

接下来,我们需要将我们在数据库中准备好的数据展示在地图上。这里我以某些省份的 GDP 数据为例。

我们需要读取数据库中的数据:

“`javascript

d3.json(“data.json”, function(data) {

// 后续代码

});

“`

然后,使用以下代码可以将中国地图上的某些省份染成不同的颜色:

“`javascript

svg.selectAll(“path”)

.data(data.features)

.attr(“fill”, function(d) {

if (d.properties.name == “北京市”) {

return “red”;

} else if (d.properties.name == “广东省”) {

return “blue”;

} else if (d.properties.name == “江苏省”) {

return “green”;

} else {

return “#ccc”;

}

});

“`

在这里,我们使用了 `if…else…` 语句判断每个省份是否应该染成不同的颜色。其中,`d.properties.name` 表示省份或行政区的名称,可以用来关联数据库中的数据。

5.自动展示

我们需要自动展示地图。根据数据库中的数据,我们可以自动展示某些省份的数据,或者进行轮播展示。这可以使用 JavaScript 的 `setTimeout` 函数来实现:

“`javascript

function autoShow() {

setTimeout(function() {

// 将需要展示的省份染成不同的颜色

autoShow();

}, 3000);

}

“`

在这里,我们使用了一个 `setTimeout()` 函数,将时间间隔设置为 3000 ms(即 3 秒),在每次 timeout 完成后,我们可以将需要展示的省份染成不同的颜色,并再次调用 `autoShow()` 函数以继续展示下一个省份。

6.

相关问题拓展阅读:

ECharts3怎么加载china.js地图?

echarts3加载map的方式和2不一样了,你必须得先注册地图才行,

“`js$.getON(‘./china.json’, function (data) { echarts.registerMap(‘china’

, data); var chart = echarts.init(document.getElementById(‘map’)); chart.setOp

tion({ series:  }); });“`

类似这样,你需要下载中国的地理矢量数据geojson

echarts3与echarts2区别:

1、js文件:

首先是js文件,echarts3做了很大的优化,在echarts2中,对各种控件的类库管理的较为详

细,有专门的目录结构来存放相关的js文件及相关资源,但是在引入文件的时候往往会很不

方便,可能会一不小心就漏掉一个文件,而echarts3可以根据需要在下载项下直接根据所需

的功能构架类库,使用时只要导入一个echarts.min.js文件就可以;

2、文件导入:

在echarts2中,require是作为模块化加载的入口,在使用过程中关于路径配置经常会出现

问题,特别是制作地图的时候,而在echarts3中只需要在开头加一句 view plain copy

  接下去只要调用接口就可以了;

3、离线地图:

echarts2中离线地图的精确度存在很大的问题,特别是下钻到区县一级,边界线存在

模糊、交叉、空白等问题,并且经常出现飞地,与实际地图出入较大,个人认为基本没

什么用,在echarts3中对此做了很大的改进,基本解决了以上问题,市与市之间、区县

与区县之间基本上不存在衔接问题;另外,在echarts3中可以根据需要自主构建地图,

这个服务给实际使用提供了很大的便利;

4、工具栏:

在echarts3的toolbox里面把辅助线功能取消掉了,图标变小了,总体上感觉echarts3

里面的toolbox更丑了;

5、地图漫游工具:

在echarts3里面把地图漫游工具取消掉了,说实话,echarts2里面的地图漫游工具看着

还是挺不错的,虽然并没有什么用;

6、坐标系:

echarts3中,数据结构进行了统一化抽象,最常用的数据结构有:线性表、树、图。例

如,线性表以及树、图的节点列表的结构可以归一化为这样的二维数组;echarts3中另

一个重要的数据结构抽象是独立出了“坐标系”概念;事实上在 ECharts2 中已经有

grid、polar配置项存在,但是并不是按一个“坐标系”的理解去实现的;echarts3中,

支持了直角坐标系(catesian,兼容 echarts2中的grid)、极坐标系(polar)、地理

坐标系(geo);

7、Option变动:

1)组件位置想x、y等变成了left、top,可以使用像素和百分比,适应性更强。

2)为了让结构更合理,echarts3中label被移出来和itemStyle平级。

根据官方说法,在echarts3中以前的用法也是兼容的,只是不推荐。

参考资料

echarts3与echarts2区别

.CSDN

看了echarts的demo以及网上大家使用echarts的经验。我使用的是大家都推荐的模块化单文件引入。

1、首先要去echarts和zrender官网上下载需要的文件;

2、然后将下载下来的文件放在你项目的目录下;

3、在项目中引用相关文件。

4、引用相关的文件后可能还会出现很多的小问题,主要去看看js文件目录是否正确。

5、扩展地图插件的时候或者有别的需求需要引入config文件时,要注意一定要将引用的代码放在function(ec){}中,这样就不会报”echarts/config” is not exists!错了

Raphael绘制中国地图实现点击哪儿在哪儿显示柱状图

1.首先导入各种js包:

2. 添加页面部分代码

3. 绘制地图部分代码:

$(function() {

Raphael.getColor.reset(); //色谱重置回数敬红色

//创建一个画布对象用来绘制。你必须之一步就这么做,该实例将来调用的所有绘图方法都被绑定到这个画布。

var R = Raphael(“china_map”, 600, 500);

//调用绘制地图方法

paintMap(R);

var current = null;

//用于对鼠标点击次数的计数;薯举慎

var result = 0;

//判断两次点击的区域名字的标志量;

var nameFlag = “”;

var x=0;

var y=0;

var textAttr = {

“fill”: “#000”,

“font-size”: “13px”,

“cursor”: “pointer” //光标的CSS类型,指针类型;

};

for (var state in china) {//state代表每个省,即就是用每个或区域来遍历整个地图区域;

//Raphael.getColor(0.9):每次调用返回色谱中的下一个颜色(返回颜色的十六进制表示)

china.color = Raphael.getColor(0.9);//分省区域着色

china.transform(“t30,0”);//地图的每个省的路径横向平移坐标(30px,0px)

(function (st, state) {

//获取每个区域的中心坐标(getBBox():返回指定元素的边界框,x:左上角X; y表示左上角y)

var xx = st.getBBox().x + (st.getBBox().width / 2);

var yy = st.getBBox().y + (st.getBBox().height / 2);

//***修改部分地图文字偏移坐标

switch (china) {

case “江苏”:

xx += 5;

yy -= 10;

break;

case “河北”:

xx -= 10;

yy += 20;

break;

case “天津”:

xx += 10;

yy += 10;

break;

case “上海”:

xx += 10;

break;

case “广东”:

yy -= 10;

break;

case “澳门”:

yy += 10;

break;

case “香港”:

xx += 20;

yy += 5;

break;

case “甘肃”:

xx -= 40;

yy -= 30;

break;

case “陕西”:

xx += 5;

yy += 10;

break;

case “内蒙古”:

xx -= 15;

yy += 65;

break;

default:

}

//***写入地名,并加点击事件,部分区域太小,增加对文字的点击事件

//R.text(xx, yy, china)给地图区域的中心位置添加省的名字

china = R.text(xx, yy, china).attr(textAttr).click(function () {

if(result=1 && (nameFlag == china)){//第N此点击,判断是不是同一个点击区域

clickMap();

}else{

clickMap();

controlChinaMap();

china = R.text(xx, yy, nameFlag).attr(textAttr).click(function (){

clickMap();

});

}

});

//图形的点击事件(st表示一个SVGPathElement对象)

$(st).click(function (e) {

if(result=1 && (nameFlag == china)){//第N此点击,判断是不是同一个点击区域

clickMap();

}else{

clickMap();

R.barchart(x,y-150,50,200,,{type:”round”});

controlChinaMap();

}

});

st.onmouseover = function () {

st.animate({fill: st.color, stroke: “#eee”}, 500);//为地图区域创建动画,鼠标滑过区域颜色加深,持续时间500毫秒

china.toFront();//元素上移

R.safari();//处理渲染错误

};

st.onmouseout = function () {

st.animate({fill: “#97d6f5”, stroke: “#eee”}, 500);

china.toFront();

R.safari();

};

function clickMap() {

if (current == state) //判断两次点击是否点击的是同一个区域

return;

//重置上次点击的图形

current && china.animate({ transform: “t30,0”, fill: china ? china.color : “#b0d0ec”, stroke: “#ddd” }, 2023, “elastic”);

current = state; //将当前值赋给变量

//对本次点击

china.animate({ transform: “t30,0 s1.03 1.03”, fill: china.color, stroke: “#000” }, 1200, “elastic”);

st.toFront(); //向上

R.safari();

china.toFront(); //***向上

if (china === undefined) return;

}

function controlChinaMap(){

//type默认是square,还有sharp、soft

R.barchart(xx,yy-150,50,200,,{type:”round”});

//在你的图上面加一个注释

//R.blob(xx,yy-130, “25%”, 50);

}

})(china, state);

}

求echarts里面的china.js求一个百度云盘地址

echart在好御液github上是开源的,china.js也同样能下载到;

github地址:

网拆肆页链接

china.js百度网盘eTDqYaQ

密码:9kf9

js中国地图自动展示数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于js中国地图自动展示数据库,JavaScript实现中国地图自动展示数据库,ECharts3怎么加载china.js地图?,Raphael绘制中国地图实现点击哪儿在哪儿显示柱状图,求echarts里面的china.js求一个百度云盘地址的信息别忘了在本站进行查找喔。


数据运维技术 » JavaScript实现中国地图自动展示数据库 (js中国地图自动展示数据库)