Geoserver WMS'den Leaflet etkileşimi nasıl alınır?


12

Shapefiles bir WMS olarak Leaflet içine hizmet geoserver var.

Kullanıcı bir WMS özelliğinin üzerine geldiğinde veya tıkladığında, Leaflet haritasında WMS özniteliklerine sahip bir açılır pencere gösteren etkileşimlilik eklemek istiyorum.

Balmumu / broşür etkileşimini gördüm, ancak WMS ve Leaflet ile bu mümkün mü?

Yanıtlar:


14

WMS GetFeatureInfo'yu kullanmayı denemelisiniz. Aşağıda, Leaflet ile Bryan McBride'ın kullanıma sunulduğu bir örnek verilmiştir . GetFeatureInfo isteğini tetiklemek için kullanılan olay açıktır.


Şimdi GetFeatureInfo veri Geoserver Freemarker şablonları ile biçimlendirme üzerinde çalışıyorum. Leaflet hover / mouseover etkileşimi hakkında herhangi bir düşünceniz var mı?
zarbo

Örnekte gösterildiği gibi, onMapClick işlevine iletilen olayı değiştirmeyi denemelisiniz: line 41 »map.addEventListener ('click', onMapClick); Belgeler sayfasına bir göz atmanız gerektiğini düşünüyorum: leaflet.cloudmade.com/reference.html . Geoserver freemarker şablonları ile ilgili olarak hiç kullanmadım, ancak yanıtın WMS GetFeatureInfo yerine GeoJson'da biçimlendirilmesini isteyen bir WFS GetFeature isteği yapmak benim için daha anlamlı. İstemci tarafındaki GeoJson nesnesiyle, özellik verilerini görüntülemek için basit bir HTML işaretlemesi oluşturmak çok daha kolaydır.
Pedro Mendes

Maalesef .. Leaflet ile GetFeature yapmanın bir yolu yok ..: / GeoJSON katmanını aynı etki için kullanabilseniz bile (özelliğin özellikleri istemcide zaten erişilebilir). Ama bu OpenLayers =) seviyorum.
Pedro Mendes

Merhaba Zabro, Bunu çalıştırmayı başardın mı? aynısını uygulamak istiyorum. bazı kod snippet'lerini paylaşmak ister misiniz?
Pragnesh Patel

4
@PedroMendes Örneğe olan bağlantı maalesef bozuk. Lütfen güncelleyebilir misiniz?
ustroetz

4

Veri kümesinin ne kadar büyük olduğuna bağlı olarak, Leaflet etkileşimini iki şekilde elde ederim. Stil tüm yapılandırmak için sıkıcı olan sunucu tarafı olduğundan, WMS getFeatureInfo karşı tavsiye ederim. İşte benim iki yolum:

  1. Veri kümesi küçükse, her şeyi bir vektör olarak yükleyin (CORS etkinse isteği JSONP veya JSON olarak yapın). Örneğin: https://maps.gcc.tas.gov.au/dogexerciseareas.html ve kod: https://github.com/gccgisteam/maps-website/blob/master/dogexerciseareas.html
  2. Veri kümesi büyükse, bir onClick isteği yapın ve yakın özellikler için vektörler (JSON veya JSONP kullanarak) döndürün. Örnek: https://maps.gcc.tas.gov.au/stormwater.html ve kod: https://github.com/gccgisteam/maps-website/blob/master/stormwater.html

(Bu yağmur suyu örneği gerçekten olması gerekenden biraz daha karmaşıktır, çünkü katmanlar açılıp kapatıldığında bir katmanın etkileşimli olup olmadığını değiştiriyorum ...)


WMS GetFeatureInfo şimdi JSON dönebilir unutmayın.
Alex Leith

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.