Cara Membetulkan Rendering GeoJSON yang Salah dalam D3.js
Apabila cuba untuk menggambarkan data geoJSON dalam D3.js, ia adalah perkara biasa untuk dihadapi percanggahan antara pemaparan yang dijangka dan sebenar. Satu isu tertentu timbul apabila output memaparkan segi empat tepat hitam yang besar dan bukannya ciri geografi yang dimaksudkan.
Analisis Isu
Setelah memeriksa kod yang disediakan dalam soalan, ia menjadi jelas bahawa ralat terletak pada susunan penggulungan koordinat. D3.js menggunakan matematik ellipsoidal, yang memerlukan susunan penggulungan khusus untuk koordinat. Malangnya, fail geoJSON mengandungi gabungan kedua-dua tertib penggulungan "ikut arah jam" dan "lawan arah jam", yang membawa kepada pemaparan yang salah.
Penyelesaian
Untuk membetulkan perkara ini isu, adalah perlu untuk memastikan bahawa semua koordinat dalam fail geoJSON mempunyai susunan penggulungan yang betul. Ini boleh dicapai secara manual dengan menyusun semula koordinat atau dengan menggunakan perpustakaan seperti turf.js, yang menyediakan kaedah yang mudah untuk ciri gulung semula.
Contoh Kod
Menggunakan kaedah turf.rewind() untuk membetulkan susunan penggulungan:
<code class="javascript">var fixed = features.map(function(feature) { return turf.rewind(feature,{reverse:true}); });</code>
Pertimbangan Tambahan
Semasa membetulkan tertib penggulungan menyelesaikan isu segi empat tepat hitam, perlu diperhatikan satu lagi quirk dalam D3.js. Tidak seperti spesifikasi geoJSON, D3.js menggunakan tertib penggulungan yang bertentangan (lawan arah jam untuk mengikut arah jam dan sebaliknya). Akibatnya, tertib penggulungan mungkin perlu diterbalikkan sebelum digulung semula untuk memastikan pemaparan yang betul.
Penglihatan yang Diperbaiki
Selain membetulkan susunan penggulungan, melaraskan tetapan unjuran boleh meningkatkan visualisasi dengan memasang ciri dalam ruang yang ditetapkan. Ini boleh dicapai menggunakan kaedah fitSize untuk menskala dan menterjemah ciri:
<code class="javascript">// Fit the features to the screen var projection = d3.geoMercator().fitSize([width, height], features);</code>
Dengan mengikuti langkah ini, anda boleh membetulkan pemaparan data geoJSON yang salah dalam D3.js dan mencapai visualisasi yang tepat bagi yang diingini ciri geografi.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Black Rectangle dalam D3.js GeoJSON Rendering?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!