Browse Source

Use a extra loader class to simplify code

master
parent
commit
42e2711b08
  1. 8
      index.js
  2. 26
      src/OpenStreetBrowserCategory.js
  3. 19
      src/OpenStreetBrowserLoader.js

8
index.js

@ -1,7 +1,7 @@
var OverpassLayer = require('overpass-layer')
var OverpassLayerList = require('overpass-layer').List
var OverpassFrontend = require('overpass-frontend')
var OpenStreetBrowserCategory = require('./src/OpenStreetBrowserCategory')
var OpenStreetBrowserLoader = require('./src/OpenStreetBrowserLoader')
var map
@ -20,6 +20,8 @@ window.onload = function() {
)
osm_mapnik.addTo(map)
var category = new OpenStreetBrowserCategory("gastro")
category.addTo(map, document.getElementById('info'))
OpenStreetBrowserLoader('gastro', function (err, category) {
category.addTo(map, document.getElementById('info'))
})
}

26
src/OpenStreetBrowserCategory.js

@ -1,34 +1,16 @@
var OverpassLayer = require('overpass-layer')
var OverpassLayerList = require('overpass-layer').List
function OpenStreetBrowserCategory (id) {
function reqListener (req) {
var data = JSON.parse(req.responseText)
this.layer = new OverpassLayer(data.query, data)
if (this.autoAdd) {
this.addTo(this.map, this.parentDom)
this.autoAdd = false
}
}
var req = new XMLHttpRequest()
req.addEventListener("load", reqListener.bind(this, req))
req.open("GET", "categories/" + id + ".json")
req.send()
function OpenStreetBrowserCategory (data) {
this.layer = new OverpassLayer(data.query, data)
}
OpenStreetBrowserCategory.prototype.addTo = function (map, parentDom) {
this.map = map
this.parentDom = parentDom
if (this.layer) {
this.layer.addTo(this.map)
new OverpassLayerList(this.parentDom, this.layer);
} else {
this.autoAdd = true
}
this.layer.addTo(this.map)
new OverpassLayerList(this.parentDom, this.layer);
}
module.exports = OpenStreetBrowserCategory

19
src/OpenStreetBrowserLoader.js

@ -0,0 +1,19 @@
var OpenStreetBrowserIndex = require('./OpenStreetBrowserIndex')
var OpenStreetBrowserCategory = require('./OpenStreetBrowserCategory')
function OpenStreetBrowserLoader (id, callback) {
function reqListener (req) {
var data = JSON.parse(req.responseText)
var layer = new OpenStreetBrowserCategory(data)
callback(null, layer)
}
var req = new XMLHttpRequest()
req.addEventListener("load", reqListener.bind(this, req))
req.open("GET", "categories/" + id + ".json")
req.send()
}
module.exports = OpenStreetBrowserLoader
Loading…
Cancel
Save