2017-01-29 4 views
8

Я начинаю использовать реактивный листок, и я наткнулся на вопрос: в моем приложении пользователь заполняет форму, которая затем запрашивает службу отдыха, которая возвращает GeoJSON, который затем добавляется как новый слой на моей карте. Мой вопрос: как я могу динамически добавлять динамические слои в рекламный буклет?реагировать-вкладывать динамически добавляйте слои

спасибо.

ответ

0

У меня есть схожая проблема. Я хотел бы очистить и создать слои маркера динамически. Я думаю, что вы можете сделать это, получив ссылку на фактическое отображение реакции реакции, например.

<Map ref={Map => this.map = Map}>

позже вы можете использовать this.map с нормальными функциями листовки. Другой вариант может быть, что вы создаете слои JSX таким же образом создать маркеры:

{this.props.markers.map((i,index) => { return ( <Marker key={i} position={i}> <Popup> <span>Great marker!</span> </Popup> </Marker>); })}

1

Лучший подход заключается в создании GeoJSON слоя оболочки для реакции-листовка. Аналогичная реализация имеет слой GeoJSON с кластеризацией, доступный в plugins section. Затем вы должны добавить этот слой к своему компоненту карты и изменить его, когда вам нужно. Таким образом, нет необходимости динамически добавлять слой, но динамически изменять данные для него. Ознакомьтесь с примером GeoJSON лифлета, чтобы получить идею http://leafletjs.com/examples/geojson/.

Подход будет работать, если у вас есть один слой с изменяющимися данными. Но если у вас разные наборы данных, вам нужно будет добавить слой GeoJSON для каждого из них.

<Map ...> 
{this.props.datasets.map((ds, ix) => { 
    return (<GeoJSONOverlay data={ds} key={ix} />); 
})} 
</Map> 
Смежные вопросы