ghettovoice / vuelayers

Web map Vue components with the power of OpenLayers
https://vuelayers.github.io/
MIT License
682 stars 230 forks source link

getlayer from interaction select #474

Closed npltr62 closed 2 years ago

npltr62 commented 2 years ago

hey i need filtering layers of select event.

` <vl-interaction-select id="allpoints" ref="selectpoints" :features.sync="selectedpoints" @select="selectevent" :layers="['ouvr','pdo','ass','ind','stpechelec']">

        </vl-interaction-select>`

selectevent(feature){ let id = feature.getId() const layers =this.$refs.map.getLayers() const layer = layers.filter(layer => { return layer instanceof VectorLayer && layer.getSource().getFeatureById(id) })[0].get('id'); if (layer === 'ouvr'){ let code = feature.get('code') this.$store.dispatch('newid', {item:'ouvr_id', newValue: code}) } else { let arr = this.$refs[layer].getSource().getFeatures() let index = arr.indexOf(feature) console.log(layer,index); this.$store.dispatch('newid', {item:layer+'_id', newValue: index}) } }, the layer is returned well when feature selected, except "ouvr" layer, i got this message "layers.filter(...)[0] is undefined"

thanks

ghettovoice commented 2 years ago

Hello @npltr62 , show the definition of "ouvr" layer pls.

npltr62 commented 2 years ago

Hello @npltr62 , show the definition of "ouvr" layer pls.

yes here is "ouvr" layer `

            <vl-style-func :factory="styleouvr"></vl-style-func>
            </vl-layer-vector>`
npltr62 commented 2 years ago

In the end i finded the issue, is due to <vl-layer-group> tag and "ouvr" layer is inside layer group. thanks @ghettovoice for your reply