2017-01-29 15 views
8

Tepki-leaflet kullanmaya başladım ve bir soruyla karşılaştım: Uygulamamda kullanıcı bir form doldurup bir GeoJSON döndüren bir dinlenme hizmeti ister ve ardından haritandaki yeni bir katman. Soruma: Tepki yapraklarında dinamik olarak katman ekleme katmanlarını nasıl uygularım?rea-leaflet katmanları dinamik olarak ekle

Teşekkür ederiz.

cevap

0

Benzer bir sorunum var. İşaret katmanlarını dinamik olarak temizlemek ve oluşturmak istiyorum. Bence, gerçek harita görüntüsüne referans olarak başvurarak yapabilirsiniz.

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

Seni daha sonra daha sonra normal Broşür işlevleriyle this.map kullanabilirsiniz. Diğer seçenek JSX aynı şekilde katmanları oluşturmak olduğunu olabilir ben işaretleri oluşturmak:

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

1

iyi yaklaşım tepki-broşür için GeoJSON Katman sarmalayıcı yaratmaktır. Reaksiyon-yaprakçıkta plugins section'da bulunan kümelenme ile GeoJSON tabakasının benzer bir uygulaması vardır. Ardından, bu katmanı harita bileşeninize eklemelisiniz ve gerektiğinde bu verileri değiştirmelisiniz. Bu nedenle, katmanı dinamik olarak eklemenize gerek yoktur, ancak bunun için verileri dinamik olarak değiştirir. http://leafletjs.com/examples/geojson/ fikrini öğrenmek için broşürün GeoJSON örneğini kontrol edin.

Değişen verilere sahip bir katmanınız varsa, yaklaşım çalışır. Ancak farklı veri kümeleriniz varsa, her biri için bir GeoJSON katmanı eklemeniz gerekir.

<Map ...> 
{this.props.datasets.map((ds, ix) => { 
    return (<GeoJSONOverlay data={ds} key={ix} />); 
})} 
</Map> 
İlgili konular