我可以围绕其中心点顺时针转动D3地图投影吗?

24m*_*3wg 16 d3.js

我怎样才能将地图 - 如果可以的话 - 顺时针旋转约15-20度,这看起来就像我在地图集中看到的中东地图?

直观地说,.rotate看起来它应该这样做,但我尝试插入不同的值,它只是'uncentres'地图.

我相信,D3代码的重要部分是:

var projection = d3.geo.albers()
      .center([49.7, 27.4])
      .rotate([0, 0, 0])
      .parallels([12.6, 40])
      .scale(800)
      .translate([width / 2, height / 2]);
Run Code Online (Sandbox Code Playgroud)

(1)

在此输入图像描述

谢谢.


(2)

在此输入图像描述

我正在尝试复制地图,看起来像这样(2) - 只是因为它是人们熟悉在常规地图集中看到的.

alt*_*lus 9

不知道你到目前为止尝试了什么,projection.rotate()我仍然认为这种方法会产生预期的结果.例如,在您的示例中指定的LAT = 49.7N,LON = 27.4E的顺时针旋转20度可以通过以下方式完成:

projection.rotate([-49.7,-27.4,-20])
Run Code Online (Sandbox Code Playgroud)

我设立了一个Plunk来展示结果.


更新

如果您不必使用Albers投影,可能还有其他选项可以提供更符合您需求的结果

人们熟悉在常规地图册中看到的东西.

我在三个地图集中查看了阿拉伯半岛,使用了一个看起来像你想要的输出的equirectangular投影:

var projection = d3.geo.equirectangular()
    .rotate([-49.7,-27.4])
Run Code Online (Sandbox Code Playgroud)

你只需要在LAT = 49.7N,LON = 27.4E的中心,.rotate([-49.7,-27.4])无需进一步滚动投影,即你不会在数组中提供第三个元素rotate().请参阅我更新的Plunk.对我来说,这看起来就像我在地图集中看到的那样.