Асинхронно отображать данные с помощью GeoJSON-реактивного буклета - PullRequest
0 голосов
/ 24 апреля 2018

У меня нет проблем с рендерингом данных геоджона, возвращая это в моей функции рендеринга:

<Map ref={(ref) => { this.map = ref; }} center={position} zoom={13}>
    <TileLayer
        attribution="&amp;copy <a href=&quot;http://osm.org/copyright&quot;>OpenStreetMap</a> contributors"
        url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
    <GeoJSON data={this.state.geojson_data} /> }
</Map>

, поэтому я попытался инициализировать this.state.geojson_data с нулем, а затемзагружая данные на componentDidMount , затем я изменил строку с GeoJSON на эту, потому что, как видно, null не является допустимым объектом geojson.

 { this.state.geojson_data !== null && <GeoJSON data={this.state.geojson_data} /> }

данные извлекаются без проблем,но мой геойсон вообще не показывает, кто-нибудь знает почему?

Я вижу два способа обойти это:

  1. , используя ссылку на карту, чтобы добавить слой ванильным листком, ноЯ хотел бы использовать более оперативный подход.
  2. загрузка данных с родительским компонентом и предоставление их в качестве опоры, но мне нравится идея, что карта инициализируется и загружается при загрузке данных, а непосле загрузки данных.

EDIT1: я провел небольшое исследование и попытался передать компоненту GeoJSON некоторые данные, отличные от geojson, и сделал ошибку, но все равноя не рисую слой, когда данные хороши.

1 Ответ

0 голосов
/ 25 апреля 2018

Это была проблема со ссылками, извините, я не могу объяснить дальше, люди из ГИ, с которыми я общался, дали мне другую версию этого геойсона с другой ссылкой, она работала как задумано.

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

РЕДАКТИРОВАТЬ: люди, работающие с нашим ГИС, дали нам геойсон, который не использовал правильную ссылку

...