2014-04-01 46 views

回答

3

如果您在提問時發佈代碼,這將有助於社區更好地理解問題。在您提到的示例中,zoom001行爲的zoom事件的回調縮放並翻譯了要素的容器組。如果要旋轉地球儀,則應改爲改變投影的旋轉角度,並更新要素的路徑。

我最近做了a gist顯示如何創建一個天體與投影的正投影,並繪製星星爲小圓圈。在這個要點中,拖動行爲被用來旋轉地球儀。

// Rotate the sphere with drag behavior 
var dragBehavior = d3.behavior.drag() 
    .origin(Object) 
    .on('drag', function(d) { 
     projection.rotate([(d.x = d3.event.x)/2, -(d.y = d3.event.y)/2]); 
     svg.selectAll('path').attr('d', function(u) { 
      // The circles are not properly generated when the 
      // projection has the clipAngle option set. 
      return path(u) ? path(u) : 'M 10 10'; 
     }); 
    }); 

請注意,有更好的方法來旋轉球體,更好的策略,請參閱Jason Davis' article on rotating maps。問候,