1

我试图为世界上每个国家/地区显示一个多边形,这个位置在国家/地区 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 获取这些数据。

4

2 回答 2

0

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

于 2020-09-07T12:42:03.240 回答
0

文档中:该data选项接受 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)
})
于 2020-09-07T23:55:47.813 回答