Ich versuche, WebGL Erde mit d3.geo.satellite Projektion zu kombinieren.Synchronisierung d3.js mit THREE.js Erde
Ich habe es geschafft, die 2 Projektionen übereinander zu legen und die Rotation zu synchronisieren, aber ich habe Probleme beim Zoomen. Wenn ich sie mit der passenden Größe synchronisiere, wird die WebGL-Projektion deformiert, aber der d3.geo.satellite bleibt gleich. Ich habe verschiedene Kombinationen von projection.scale, projection.distance ohne viel Erfolg ausprobiert.
Hier ist JS Geige (es dauert eine Weile, um die Ressourcen zu laden). Sie können es ziehen, um zu drehen (funktioniert gut). Aber wenn Sie hineinzoomen (mit dem Mausrad), können Sie das Problem sehen.
https://jsfiddle.net/nxtwrld/7x7dLj4n/2/
Der wichtige Code ist am unteren Rand des Skripts - die Skalierungsfunktion.
function scale(){
var scale = d3.event.scale;
var ratio = scale/scale0;
// scale projection
projection.scale(scale);
// scale Three.js earth
earth.scale.x = earth.scale.y = earth.scale.z = ratio;
}
Ich stoße dieses Problem auch, aber ich benutze WebGL Earth nicht, stattdessen verwende ich Three.js. Hast du irgendeine Lösung? –