This example shows how to overlay a sphere rendered by Three.js onto a geo projection rendered by D3.js. The drag event is handled by D3.js, and Three.js is synchronized with it. The black cross is from D3 layer. Blue, red and green small balls are from Three layer.
The main focus is on this synchronization. In this version, only two axes rotation is applied. The black cross and blue ball are binded together. There is a failure example which use three axes rotation by using quaternion.
https://d3js.org/d3.v4.min.js
https://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.min.js