Как использовать данные в deck.gl? - PullRequest
0 голосов
/ 09 марта 2020

Я новичок в deck.gl и у меня есть некоторые проблемы. Когда я пытаюсь использовать API в качестве данных, я пытаюсь использовать следующие API

data: 'https://envirocar.org/api/stable/measurements'

, но это не работает, или если я поместите данные API в файл json и укажите, что в моем текущем рабочем каталоге это не работает, например:

data:'../data_file.json'

, даже файлы .csv не работают, но когда я использую данные в массиве Форма вроде как это работает. Не знаю почему, если кто-нибудь знает, пожалуйста, помогите мне.

data: [
   {
      "type": "Feature",
      "geometry": {
         "type": "Point",
         "coordinates": [
            6.4847174678758375,
            51.22546715521443
         ]
      }
]

Я говорю о данных в _renderLayers ()

import React, {Component} from 'react';
import {render} from 'react-dom';
import {StaticMap} from 'react-map-gl';
import DeckGL from '@deck.gl/react';
import {ScatterplotLayer} from '@deck.gl/layers';

const MAPBOX_TOKEN = process.env.MapboxAccessToken; 
const INITIAL_VIEW_STATE = {
  longitude: 6.4847174678758375,
  latitude: 51.22546715521443,
  zoom: 11,
  maxZoom: 16,
  pitch: 0,
  bearing: 0
};

export default class App extends Component {
  _renderLayers() {
    return [
      new ScatterplotLayer({
        id: 'scatter-plot',
        data: 'https://envirocar.org/api/stable/measurements',
        radiusScale: 10,
        radiusMinPixels: 0.25,
        getPosition: d => (d.features.geometry.coordinates),
        getFillColor: [255,0,255],
      })
    ];
  }

  render() {
    const mapStyle = 'mapbox://styles/mapbox/light-v9';

    return (
      <DeckGL layers={this._renderLayers()} initialViewState={INITIAL_VIEW_STATE} controller={true}>
        <StaticMap
          reuseMaps
          mapStyle={mapStyle}
          preventStyleDiffing={true}
          mapboxApiAccessToken={MAPBOX_TOKEN}
        />
      </DeckGL>
    );
  }
}

export function renderToDOM(container) {
  render(<App />, container);
}

Ответы [ 3 ]

0 голосов
/ 16 апреля 2020

Я бы порекомендовал загрузить данные и сохранить их локально.

0 голосов
/ 08 мая 2020

Вам нужно добавить dataTransform так:

export default class App extends Component {
  _renderLayers() {
    return [
      new ScatterplotLayer({
        id: 'scatter-plot',
        data: 'https://envirocar.org/api/stable/measurements',
        dataTransform: d => d.features,
        radiusScale: 10,
        radiusMinPixels: 0.25,
        getPosition: d => d.geometry.coordinates,
        getFillColor: [255,0,255],
      })
    ];
  }

Также обратите внимание на изменение в getPosition.

0 голосов
/ 07 апреля 2020

Вы экспортировали в формате .geo json?

...