слой geojson не отображается при загрузке через d3.json - PullRequest
0 голосов
/ 21 декабря 2018

Слой geojson не отображается, когда я загружаю geojson через d3.json в качестве объекта данных.Однако, если я ссылаюсь на геоджон как URL, он отображается правильно.

Я использую deck.gl: 6.3.2, mapbox-gl: v0.52.0.Я использую ванильный JavaScript.Когда я запускаю этот код, он не отображается.Я проверил «геомданные».Это нормально.

d3.json("roads.json", function(geomdata) { 
    deckgl = new deck.DeckGL({
      container,
      map: mapboxgl,
      mapboxApiAccessToken:
        "<myMapBoxKey>,
      mapStyle: "mapbox://styles/mapbox/light-v9",
      longitude: -98.58,
      latitude: 39.82,
      zoom: 4,
      layers: [
        new deck.GeoJsonLayer({
          geomdata,
          stroked: true,
          filled: true,
          lineWidthMinPixels: 2,
          opacity: 0.4,
          getLineColor: [255, 100, 100],
          getFillColor: [200, 160, 0, 180]
        })
      ]
    });
  });

Однако, когда я запускаю это, где геоджон является URL-адресом, он отображается просто отлично.

d3.json("roads.json", function(geomdata) {      
var US_MAP_GEOJSON =
  "https://raw.githubusercontent.com/uber-common/deck.gl-data/master/examples/highway/roads.json";

    deckgl = new deck.DeckGL({
      container,
      map: mapboxgl,
      mapboxApiAccessToken:
        "<myMapBoxAccessKey>",
      mapStyle: "mapbox://styles/mapbox/light-v9",
      longitude: -98.58,
      latitude: 39.82,
      zoom: 4,
      layers: [
        new deck.GeoJsonLayer({
          data: US_MAP_GEOJSON ,
          stroked: true,
          filled: true,
          lineWidthMinPixels: 2,
          opacity: 0.4,
          getLineColor: [255, 100, 100],
          getFillColor: [200, 160, 0, 180]
        })
      ]
    });
  });

Есть какие-нибудь подсказки / идеи?Спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Похоже, вы должны передать объект в GeoJsonLayer.Но ваше первое поле не key: value комбо, это просто value.Попробуйте установить свои данные следующим образом data: geomdata.

    new deck.GeoJsonLayer({
      data: geomdata,
      stroked: true,
      filled: true,
      lineWidthMinPixels: 2,
      opacity: 0.4,
      getLineColor: [255, 100, 100],
      getFillColor: [200, 160, 0, 180]
    })
...