Vairāk

Stila slānis, pamatojoties uz atribūtu no GeoServer programmā OpenLayers 3

Stila slānis, pamatojoties uz atribūtu no GeoServer programmā OpenLayers 3


Es vēlos, lai GeoServer laukā_1 atribūts tiktu parādīts OpenLayers 3

Šis ir skripts:

var style_titik = (if (feature.get ('field_6') === '4') {var b2 = new ol.style.Style ({attēls: jauns ol.style.Circle ({rādiuss: 6, aizpildījums: jauns ol.style.Fill ({color: 'rgba (20,150,200,0.6)'}), insults: jauns ol.style.Stroke ({color: 'rgba (20,130,150,0,8)', platums: 1})})}) }); else {var b1 = new ol.style.Style ({image: new ol.style.Circle ({rādiuss: 30, fill: new ol.style.Fill ({color: 'rgba (255,1,2,0,6)) '}), insults: jauns ol.style.Stroke ({krāsa:' rgba (220,1,1,0,8) ', platums: 1})})})};

Kā ar šo problēmu?


To var izdarīt, izmantojot stila funkciju (detalizētāku stila funkcijas piemēru skatiet arī OL3 piemērā par zemestrīču kopām - vai meklējiet šajā vietnē!). Jūsu gadījumā daļējs kods būtu šāds:

var myStyleFunction = funkcija (funkcija, izšķirtspēja) {var field_1 = feature.get ('field_1'); ja (lauks_1 == "PENYEDIA AKOMODASI") {atgriešanās b1; } else if (lauks_1 == "JASA PENYEDIA AKOMODASI") {atgriešanās b2; }}; var lokasipenting = new ol.layer.Vector ({avots: lokasi_penting, stils: myStyleFunction});

Ņemiet vērā, ka jums būs jādefinē stili b1 un b2, un tā ir labākā vieta, kur iestatīt nosaukumu kā daļu no teksta atribūta. Vienkāršākais veids, kā to izdarīt, ir teksta mainīgā izveidošana (piem.,var myText = jauns ol.style.textutt.) un pēc tam iekļaujiet to b1 un b2, lai saglabātu dublēšanos. Alternatīvi jums varētu būt viena atdeve (kas, iespējams, ir labāka) un izmantot mainīgos, lai izveidotu b1 un b2 ekvivalentus, kā norādīts saitēs esošajos piemēros.

REDIĢĒT (atjauninājums balstīts uz komentāru)
Katrai kartes atsvaidzināšanai OL atkārto funkcijas no datiem, ko tā saņēmusi no Geoserver, un izsauc stila funkciju. Tas automātiski nodod šīs divas vērtības katrai funkcijai, un tāpēc slāņa definīcijā neredzat nekādas atsauces uz tām. “Funkcija” ir punkts, līnijpārvadātājs vai daudzstūris (vai to daudzvērtīgi ekvivalenti) no slāņa datiem, un izšķirtspēja ir kartes izšķirtspēja (ļaujot arī jums veidot uz tālummaiņas balstītu stilu).


funkcija getStyle (funkcija, izšķirtspēja) {var style; if (feature.get ('field_6') === '4') style = new ol.style.Style ({image: new ol.style.Circle ({rādiuss: 6, fill: new ol.style.Fill ( {color: 'rgba (20,150,200,0.6)'}), stroke: new ol.style.Stroke ({color: 'rgba (20,130,150,0,8)', width: 1})})}}) else style = new ol. style.Style ({attēls: new ol.style.Circle ({rādiuss: 30, fill: new ol.style.Fill ({color: 'rgba (255,1,2,0,6)'}), insults: new ol .style.Stroke ({color: 'rgba (220,1,1,0,8)', width: 1})})}} return [style]; } myLayer = ol.layer.Vector ({veikals:…, stils: getStyle});

Skatīties video: Web GIS for beginners. WebGIS tutorial. Ep: 01