Problèmes de rendu GeoJSON avec D3.js
Lorsqu'ils tentent de visualiser les régions russes à l'aide de D3.js, les utilisateurs peuvent rencontrer un problème où, au lieu de Aux limites attendues de la région, un seul grand rectangle noir apparaît sur la carte.
Comprendre le problème
Le problème vient de l'ordre d'enroulement des coordonnées dans les données GeoJSON . GeoJSON utilise des coordonnées cartésiennes, que D3.js interprète différemment en raison de son utilisation de mathématiques ellipsoïdales. Cela conduit à un scénario dans lequel un ordre d'enroulement incorrect produit une caractéristique qui englobe la planète entière à l'exception de la région cible.
Inspectez les chemins SVG pour observer l'ordre d'enroulement incorrect. Certains chemins peuvent apparaître correctement tracés, tandis que d'autres peuvent couvrir la totalité du globe, ne laissant exposée que la région prévue.
Trouver une solution
Pour résoudre ce problème, réorganisez les coordonnées en utilisant une bibliothèque comme Turf.js. Ceci est nécessaire car le GeoJSON contient des fonctionnalités avec des ordres d'enroulement corrects et incorrects.
var fixed = features.map(function(feature) { return turf.rewind(feature,{reverse:true}); });
Notez l'ordre d'enroulement inversé. Cela est dû à une particularité de D3.js où il utilise l'ordre d'enroulement opposé spécifié dans la norme GeoJSON.
Amélioration de la visualisation
Après avoir résolu le problème de l'ordre d'enroulement , la carte affichera les régions, bien que potentiellement petites. Pour améliorer la visualisation, ajoutez une méthode fitSize pour mettre à l'échelle et traduire la carte.
Cela se traduira par une carte plus attrayante et plus utilisable, comme le montre l'image fournie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!