在 Openlayers 4 中设置 D3 投影

Set D3 projection in Openlayers 4

The Demo

我对使用 Openlayers 4 的 D3 集成感到困惑。

混淆代码如下:var d3Projection = d3.geo.mercator().scale(1).translate([0, 0]);

为什么设置'scale'的值为'1'而'translate' 是 '[0, 0]' 当初始化 Mercator projection

它们被设置在那里,以便可以计算特征的边界,然后,可以推导出正确的scalecenter .

尝试将额外的 console.log(scale, center) 放入 canvasFunction,然后移动地图、缩放地图,或尝试模拟 high-DPI 显示(例如 Chrome开发者工具)。您将看到这些值如何随着每次平移和缩放而变化。

设置值 1[0, 0] 是为了简化计算,因为设置了默认值以便默认绘制整个地球地图(根据 scale and translate 文档)。当您第一次编写函数代码并希望看到一些合理的结果时,这很实用,但当您需要计算投影边界时就没那么有用了。