0

我是新手,想学习 JavaScript。我制作了一张带有 API 数据传单的 covid 世界地图。我想将相同的数据应用于globe.gl。

您能否告诉我如何将用于传单地图的相同 statesData 应用于 3d 地球?

我使用这些统计数据并编辑一些国家名称以匹配 API 数据。https://datahub.io/core/geo-countries

例如,这是globe.gl 代码的数据提取部分。

const getVal = feat => feat.properties.GDP_MD_EST / Math.max(1e5, feat.properties.POP_EST);

fetch('https://raw.githubusercontent.com/vasturiano/globe.gl/master/example/datasets/ne_110m_admin_0_countries.geojson').then(res => res.json()).then(countries =>
{
  const maxVal = Math.max(...countries.features.map(getVal));
  colorScale.domain([0, maxVal]);

这是传单地图上的代码。我想将此数据用于上面的globe.gl。

var geojson = L.geoJson(statesData).addTo(map);

let covid;

//  GET THE COVID DATA
function setup(){
    loadJSON("https://disease.sh/v3/covid-19/countries",gotData);
}

// let geo = L.geoJson(statesData, {style: style}).addTo(map);
let geo = L.geoJson(statesData, {
        style: style,
        onEachFeature: onEachFeature
}).addTo(map);

function gotData(data) {
  var covid = data;
    // add covid cases to states data
    for (let j = 0; j < data.length; j++) {
        for (let i = 0; i < statesData.features.length; i++) {
            if (statesData.features[i].properties.ADMIN === covid[j].country || statesData.features[i].properties.ISO_A3 === covid[j].country) {
               statesData.features[i].properties.cases = covid[j].cases;
                    break;
            }
        }
    }

    geo.addData(statesData);
    // geojson.addData(statesData);
};

非常感谢你的帮助。

4

1 回答 1

0

我可以通过将 API 数据添加到下面的示例 JSON 来解决

window.onload = function() {
  var url = 'https://disease.sh/v3/covid-19/countries';
  fetch(url)
  .then(function (data) {
    return data.json();
  })
  .then(function (cData) {
    makeMap(cData);
  });
};

function makeMap(cData){
  const colorScale = d3.scaleSequentialSqrt(d3.interpolateYlOrRd);
  const getVal = feat => feat.properties.GDP_MD_EST / Math.max(1e5, feat.properties.POP_EST);
  
  fetch('https://raw.githubusercontent.com/vasturiano/globe.gl/master/example/datasets/ne_110m_admin_0_countries.geojson').then(res => res.json()).then(countries =>
  {
    const maxVal = Math.max(...countries.features.map(getVal));
    colorScale.domain([0, maxVal]);
于 2021-05-05T13:48:06.067 回答