如果我只做這個:
let projection = d3.geoAzimuthalEqualArea()
console.log(projection([-3.0026, 16.7666])) // passing long/lat
我得到[473.67353385539417, 213.6120079887163],這是像素坐標。
但是像素坐標相對于什么?我什至沒有定義 svg 容器的大小、地圖的中心等。如果我什至沒有指定地圖在頁面上的大小,它怎么知道螢屏上的確切像素位置?如果是更大的地圖,則該點將更靠右和靠下,這意味著不同的像素值。
另外,如果螢屏像素只能是整數,為什么這些回傳值會浮動很多小數位?
這些像素坐標有最大值嗎?(即這是投影在某種默認大小的地圖上嗎?)
這是在 API 檔案中的什么地方?
uj5u.com熱心網友回復:
該檔案對投影輸出的默認尺寸不是很清楚。有點隱藏,您會在以下部分找到該值projection.translate():
# 投影。翻譯([翻譯])
[…]
默認平移偏移將 ?0°,0°? 放置在 960×500 區域的中心。
那些960×500是地理資料投影到的 2D 平面的維度。
投影的輸出是對輸入值(即地理資料)進行一系列數學運算的結果。浮點數學用于盡可能接近精確值。沒有對該結果的實際使用做出任何假設。盡管這些坐標可以通過簡單地將值四舍五入來解釋為像素坐標,但它們的使用不限于這種解釋。特別是,當涉及到像 SVG 這樣的矢量格式時,用戶客戶端(例如瀏覽器)使用浮點坐標值進行計算以進一步將這些矢量投影到螢屏上是很正常的,同時考慮到可能的平移、旋轉、傾斜,查看框等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/379131.html
