d3js-v4-map-1最简单的canvas地图
来源:互联网 发布:鼎尖软件安卓版 编辑:程序博客网 时间:2024/06/08 05:27
实现一个简单的geoMap。
依赖库:d3js v4 canvas渲染
1. 最简单的实现:
var width = 1300, height = 800; //定义一个地图映射 var projection = d3.geoMercator() .center([100, 37]) .scale(850) .translate([width/2, height/2]); //在页面中插入一个canvas元素,并设置宽高 var canvas = d3.select("body").append("canvas") .attr("width", width) .attr("height", height); //获得canvas绘图上下文 var context = canvas.node().getContext("2d"); //定义一个路径生成器 var mapPath = d3.geoPath() .projection(projection) .context(context); //加在数据开始渲染地图 d3.json("data/china.topojson", function(error, us) { if (error) throw error; //一次性绘制整个地图轮廓 mapPath(topojson.feature(us, us.objects.collection)); context.stroke(); });这时候在浏览器中可以看到渲染的中国地图(可惜没有包含中国领海,尤其是钓鱼岛)github
2.更实用的功能是,每个省份填充不同颜色,这样要对每个省份的多边形分别绘制:github
d3.json("data/china.topojson", function(error, us) { if (error) throw error; var countries = topojson.feature(us, us.objects.collection); countries.features.forEach(drawMapPath); }); function drawMapPath(d) { context.beginPath(); var color = mapColor(parseInt(d.properties.id) ); context.fillStyle= color; context.strokeStyle=color; context.globalAlpha=0.3; mapPath(d); context.stroke(); context.fill(); }
得到每个省份的地理路路径,然后对每个路径独立绘制,效果如下:
3.现在绘制的是静态的地图,加入移动缩放功能:github
//给地图添加缩放范围和监听事件 canvas .call(d3.zoom().scaleExtent([1, 36]).on("zoom", zoomed)); //当地图缩放后,获得缩放变换,重新渲染地图 function zoomed() { transform = d3.event.transform; render(); } //在渲染程序中,对绘图上下文整体应用变换 function render() { context.save(); context.clearRect(0, 0, width, height); context.beginPath(); context.translate(transform.x, transform.y); context.scale(transform.k, transform.k); context.lineWidth=0.1; context.globalAlpha=0.3; countries.features.forEach(drawMapPath); context.stroke(); context.fill(); context.restore(); }
4.然后添加省份标注 github
在绘制的时候,怎加绘制省份名称
//绘制地图省份 function drawMapText(d) { context.beginPath(); context.fillStyle='black'; context.fillText( d.properties.name, projection(d.properties.cp)[0],projection(d.properties.cp)[1] ); }效果如下:
阅读全文
0 0
- d3js-v4-map-1最简单的canvas地图
- d3js:Brush v3 VS v4
- D3js-值域渐变地图
- Google map (1) 显示一个简单的地图
- D3js-SVG简单初步
- D3js-地图中标注地点
- d3js制作可拖动地图
- 一份最简单的Mapbar地图源代码
- 数据可视化 d3js学习之简单的柱状图(bar)
- 数据可视化 d3js学习之简单的饼图
- hadoop中最简单最简单的map-reduce
- 百度地图__载入最简单的地图
- java 遍历map最简单的方法
- 一个最简单的google map页面
- d3js的初接触
- IOS- Map简单地图应用
- D3js-绘制地图时出现过小, 设置scale还是无效 的解决方法
- google map api javascript xml 生成一个简单的地图
- swfit的tableview下拉刷新,点击cell异常,弹窗UIAlertController
- error和exception有什么区别?
- [33]Ajax
- Python练习07-09
- 实训第十一天
- d3js-v4-map-1最简单的canvas地图
- [LeetCode] 300.Longest Increasing Subsequence
- final、finally和finalize的区别是什么?
- Python学习笔记(六)——函数
- hadoop 伪分布式搭建
- 2017算法课.作业(8.19)
- [高频] 四.基础算法和数据结构II
- C语言运算符优先级列表
- Python学习笔记(七)——模块