使用 deck.gl 和 nebula.gl 的特定 geojson URL 在我的 React 应用程序中不起作用

Specific geojson URL is not working within my react app using deck.gl and nebula.gl

我试图为世界上每个国家/地区显示一个多边形,这些位置在国家/地区内 URL 但这并没有让我得到我想要的多边形,而是将其用作字符串。虽然在示例中无法获取数据,但您可以访问站点本身。 https://codesandbox.io/s/deckgl-and-nebulagl-editablegeojsonlayer-no-react-forked-08hvs?file=/app.js

  const countries = 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_admin_0_scale_rank.geojson';

    console.log(countries)

    const layerGeo = new EditableGeoJsonLayer({
        id: 'geojson-layer',
        data: countries,
        mode: ViewMode,
        onClick: d => console.log(d)
    })


<DeckGL
  initialViewState={viewState}
  controller={true}
  layers={layerGeo}
  getTooltip={getTooltip}
  views={new MapView({repeat: true})}
>
 <StaticMap
  mapStyle='mapbox://styles/mapbox/streets-v11'
  mapboxApiAccessToken={MAPBOX_TOKEN}
 />
</DeckGL>

如何在不复制文件并自己存储的情况下从 URL 获取这些数据。

我没有尝试让 URL 工作,而是下载了文件并导入到应用程序本身,因此解决了这个问题。

来自 documentationdata 选项接受 javascript 对象。在您的示例代码中,您将 url 作为字符串传递。

首先尝试获取 url,然后将响应数据解析为对象。最后你可以输入 data 选项:

const url = 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_admin_0_scale_rank.geojson';

async function getCountries(url) 
{
  let response = await fetch(url);
  let data = await response.json()
  return data;
}

let countries = getCountries(url);

const layerGeo = new EditableGeoJsonLayer({
  id: 'geojson-layer',
  data: countries,
  mode: ViewMode,
  onClick: d => console.log(d)
})