You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
55 lines
1.2 KiB
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader')
|
|
var OverpassLayer = require('overpass-layer')
|
|
var OverpassLayerList = require('overpass-layer').List
|
|
|
|
function OpenStreetBrowserCategory (id, data) {
|
|
this.id = id
|
|
this.layer = new OverpassLayer(data.query, data)
|
|
this.isOpen = false
|
|
}
|
|
|
|
OpenStreetBrowserCategory.prototype.setMap = function (map) {
|
|
this.map = map
|
|
}
|
|
|
|
OpenStreetBrowserCategory.prototype.setParentDom = function (parentDom) {
|
|
this.parentDom = parentDom
|
|
}
|
|
|
|
OpenStreetBrowserCategory.prototype.open = function () {
|
|
if (this.isOpen)
|
|
return
|
|
|
|
if (typeof this.parentDom === 'string') {
|
|
this.parentDom = document.getElementById(this.parentDom)
|
|
}
|
|
|
|
this.layer.addTo(this.map)
|
|
|
|
if (!this.list) {
|
|
this.list = new OverpassLayerList(this.parentDom, this.layer)
|
|
}
|
|
|
|
this.isOpen = true
|
|
}
|
|
|
|
OpenStreetBrowserCategory.prototype.close = function () {
|
|
if (!this.isOpen)
|
|
return
|
|
|
|
this.layer.remove()
|
|
this.list.remove()
|
|
|
|
this.isOpen = false
|
|
}
|
|
|
|
OpenStreetBrowserCategory.prototype.toggle = function () {
|
|
if (this.isOpen) {
|
|
this.close()
|
|
} else {
|
|
this.open()
|
|
}
|
|
}
|
|
|
|
OpenStreetBrowserLoader.registerType('category', OpenStreetBrowserCategory)
|
|
module.exports = OpenStreetBrowserCategory
|