1. 程式人生 > >使用D3.js繪製重慶地圖

使用D3.js繪製重慶地圖

重慶市地圖json資料下載連結https://pan.baidu.com/s/19eZfuGGRY6JOrH9WnZJ5iw 密碼h5f9D3.js下載連結:https://pan.baidu.com/s/13wKelQUjueTY-pP4zUEkww 密碼15te由於JSON檔案中的地圖資料,都是經度和緯度的資訊。他們都是三維的,而要在網頁上顯示的為二維,所以需要設定一個投影函式來轉換經緯度。1.center()設定地圖的中心位置[107,31]指的是經度和緯度。2.scale()設定放大的比例。3.translate()設定平移。使用d3.geo.path(),來深成svg中path元素的路徑值projection()是設定生成器的投影函式,把上面定義的投影傳入即可。實現程式碼
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript" src="js/d3.v3.js" ></script>
	</head>
	
	<body>
		<script>
			var width = 1000;
			var height = 600;
			var svg = d3.select("body").append("svg")
				.attr("width", width)
				.attr("height", height);
			var projection = d3.geo.mercator()
				.center([107, 31])
				.scale(40000)
				.translate([width / 4, height / 4]);
			var path = d3.geo.path()
				.projection(projection);
			var isclick=false;
			var clicknum=0;
			var path;
			d3.json("重慶市市轄區.json", function(d) {
				
				var china = svg.append("g")
					.attr("transform", "translate(0,0)");
				china.selectAll("path")
					.data(d.features)
					.enter()
					.append("path")
					.attr("stroke", "#000")
					.attr("stroke-width", 0)
					.attr("fill", "#575757")
					.attr("id", function(d) {
						return d.properties.id;
					})
					.attr("d", path)
					
			});
		</script>
	</body>
</html>
效果圖