Daugiau

Gaukite visą sutampančią funkcijų informaciją naudodami WMS GetFeatureInfo, OL3, „Geoserver“

Gaukite visą sutampančią funkcijų informaciją naudodami WMS GetFeatureInfo, OL3, „Geoserver“


Aš sukūriau paprastą ol3 žemėlapį su wms-daugiakampio perdangos funkcijomis iš vietinio geoserverio 2.8.0. Aš pridėjau veikiantį „WMS GetFeatureInfo“ iš „ol3“ pavyzdžių. Mano problema ta, kad aš turiu keletą identiškų sutampančių daugiakampių su skirtingais atributais. Spustelėjęs daugiakampį (su 10 identiškų kopijų), aš tiesiog gaunu informaciją iš vienos funkcijos (galbūt viršutinės).

Vietoj to man reikia rezultatų iš visų identiškų sutampančių funkcijų.

Ar kas nors žino, kaip tai įgyvendinti, žemiau yra mano bandymas?

Tai yra mano kodas:

var wmsSource = new ol.source.TileWMS ({url: 'http: localhost: 8082 / geoserver / wms', params: {'LAYERS': 'gdi: M4_Porjektkarte'}, serverType: 'geoserver',}); var wmsLayer = new ol.layer.Tile ({source: wmsSource}); var view = new ol.View ({centre: [0,0], priartinimas: 3}); var map = new ol.Map ({sluoksniai: [wmsLayer], taikinys: 'map', rodinys: rodinys}); map.on ('singleclick', function (evt) {document.getElementById ('info'). internalHTML = "; var viewResolution = / ** @type {number} * / (view.getResolution ()); var url = wmsSource.getGetFeatureInfoUrl (evt.coordinate, viewResolution, 'EPSG: 3857', {'INFO_FORMAT': 'text / html'}); if (url) {document.getElementById ('informacija'). internalHTML = ''; } });

jums reikia išanalizuoti atsakymą, gautą atgal, kad suprastumėte visas funkcijas. apsvarstykite šį kodo fragmentą:

map.on ('singleclick', function (evt) {var url = wms_layer.getSource (). getGetFeatureInfoUrl (evt.coordinate, viewResolution, viewProjection, {'INFO_FORMAT': 'text / javascript', 'propertyName': 'formal_en' }); if (url) {var parser = naujas ol.format.GeoJSON (); $ .ajax ({url: url, dataType: 'jsonp', jsonpCallback: 'parseResponse'}). tada (funkcija (atsakymas) { var result = parser.readFeatures (response); if (result.length) {var info = []; for (var i = 0, ii = result.length; i 

įkvėpta šio pavyzdžio


Pagal WMS specifikaciją jūs tiesiog atgausite vieną funkciją, nebent prie URL pridėsitebruožas_skaičiusparametras, nurodantis, kiek elementų norite, pvz., „& feature_count = 100“.


panašus į aukščiau pateiktus komentarus, tiesiog įdėkite jį į „Javascript“ formą: turėtų pakakti prie „getGetFeatureInfoURL“ skambučio pridėti parametrą „FEATURE_COUNT“.

var url = wmsSource.getGetFeatureInfoUrl (evt.coordinate, viewResolution, 'EPSG: 3857', {'INFO_FORMAT': 'text / html', 'FEATURE_COUNT': 50});