D3地圖上如何標註座標點
阿新 • • 發佈:2019-02-12
1. 標註是什麼
標註,是指地圖上只需要一個座標即可表示的元素。例如,在經緯度(116, 39)處畫一個圓,在(108, 30)處畫一個符號,這些都屬於標註,也可以將標註理解為“點元素”。
我們知道,只知道經緯度是不能直接在地圖上作圖的,需要先用投影函式將其轉換成畫素座標。例如,如果要在中國地圖上標出“北京”的位置,但是不知道北京的畫素座標。北京的經緯度可通過查詢得知是(116.3, 39.9),將此值作為投影函式的引數即可得到畫素座標。其實,GeoJSON檔案的地理資訊也是經緯度,也是經過投影函式轉換後得到了畫素座標。因此,如果使用同一個投影函式,那麼轉換後的北京座標即可直接在地圖上繪製。
2. 在D3的地圖上如何標註
首先,定義一個投影函式如下。
- var projection = d3.geo.mercator()
- .center([107, 31])
- .scale(600)
- .translate([width/2, height/2]);
其次,使用此投影定義地理路徑生成器 d3.geo.path,用於繪製地圖。
[javascript] view plaincopy- var path = d3.geo.path()
-
.projection(projection);
然後,以北京的經緯度作為投影的引數,得到北京的畫素座標。
[javascript] view plaincopy- var peking = [116.3, 39.9];
- var proPeking = projection(peking);
最後,用上面得到的畫素座標繪製一個圓,該圓就正好位於北京的位置。
[javascript] view plaincopy- svg.append("circle")
- .attr("class","point")
- .attr("cx",proPeking[0])
-
.attr("cy"
- .attr("r",8);