tchen-vuelayers
Version:
Web map Vue components with the power of OpenLayers
73 lines (66 loc) • 1.41 kB
JavaScript
import Overlay from 'ol/Overlay'
import Vue from 'vue'
import { instanceOf } from '../util/assert'
const methods = {
/**
* @return {IndexedCollectionAdapter}
* @protected
*/
getOverlaysTarget () {
throw new Error('Not implemented method')
},
/**
* @param {Overlay|Vue} overlay
* @return {void}
*/
addOverlay (overlay) {
overlay = overlay instanceof Vue ? overlay.$overlay : overlay
instanceOf(overlay, Overlay)
if (this.getOverlaysTarget().has(overlay) === false) {
this.getOverlaysTarget().add(overlay)
}
},
/**
* @param {Overlay|Vue} overlay
* @return {void}
*/
removeOverlay (overlay) {
overlay = overlay instanceof Vue ? overlay.$overlay : overlay
if (!overlay) return
if (this.getOverlaysTarget().has(overlay)) {
this.getOverlaysTarget().remove(overlay)
}
},
/**
* @return {Overlay[]}
*/
getOverlays () {
return this.getOverlaysTarget().elements
},
/**
* @param {string|number} id
* @return {Overlay|undefined}
*/
getOverlayById (id) {
return this.getOverlaysTarget().findByKey(id)
},
/**
* @return {void}
*/
clearOverlays () {
this.getOverlaysTarget().clear()
},
/**
* @returns {Object}
* @protected
*/
getServices () {
const vm = this
return {
get overlaysContainer () { return vm },
}
},
}
export default {
methods,
}