Browse Source

Change logic of loader; register types

master
parent
commit
ec92c5fb64
  1. 1
      categories/gastro.json
  2. 1
      categories/parks.json
  3. 1
      categories/trees.json
  4. 8
      index.js
  5. 2
      src/OpenStreetBrowserCategory.js
  6. 3
      src/OpenStreetBrowserIndex.js
  7. 24
      src/OpenStreetBrowserLoader.js

1
categories/gastro.json

@ -1,4 +1,5 @@
{
"type": "category",
"query": "(node[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];);",
"minZoom": 16,
"markerSign": "{% if tags.amenity=='bar' %}🍸{% elseif tags.amenity=='biergarten'%}🍻{% elseif tags.amenity=='cafe' %}☕{% elseif tags.amenity=='fast_food' %}🍔{% elseif tags.amenity=='ice_cream' %}🍨{% elseif tags.amenity=='pub' %}🍺{% else %}🍴{% endif %}",

1
categories/parks.json

@ -1,4 +1,5 @@
{
"type": "category",
"query": "(way[leisure=park];relation[leisure=park];)",
"style": {
"color": "green",

1
categories/trees.json

@ -1,4 +1,5 @@
{
"type": "category",
"query": "node[natural=tree];",
"style": {
"nodeFeature": "CircleMarker",

8
index.js

@ -3,6 +3,9 @@ var OverpassLayerList = require('overpass-layer').List
var OverpassFrontend = require('overpass-frontend')
var OpenStreetBrowserLoader = require('./src/OpenStreetBrowserLoader')
require('./src/OpenStreetBrowserCategory')
require('./src/OpenStreetBrowserIndex')
var map
var categories = {}
@ -21,8 +24,7 @@ window.onload = function() {
)
osm_mapnik.addTo(map)
OpenStreetBrowserLoader('index', function (err, category) {
OpenStreetBrowserLoader.load('index', function (err, category) {
if (err) {
alert(err)
return
@ -38,7 +40,7 @@ window.toggleCategory = function (id) {
if (id in categories) {
categories[id].toggle()
} else {
OpenStreetBrowserLoader(id, function (err, category) {
OpenStreetBrowserLoader.load(id, function (err, category) {
if (err) {
alert(err)
return

2
src/OpenStreetBrowserCategory.js

@ -1,3 +1,4 @@
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader')
var OverpassLayer = require('overpass-layer')
var OverpassLayerList = require('overpass-layer').List
@ -34,4 +35,5 @@ OpenStreetBrowserCategory.prototype.toggle = function () {
}
}
OpenStreetBrowserLoader.registerType('category', OpenStreetBrowserCategory)
module.exports = OpenStreetBrowserCategory

3
src/OpenStreetBrowserIndex.js

@ -1,3 +1,5 @@
var OpenStreetBrowserLoader = require('./OpenStreetBrowserLoader')
function OpenStreetBrowserIndex (id, data) {
this.id = id
this.data = data
@ -23,4 +25,5 @@ OpenStreetBrowserIndex.prototype.addTo = function (map, parentDom) {
}
}
OpenStreetBrowserLoader.registerType('index', OpenStreetBrowserIndex)
module.exports = OpenStreetBrowserIndex

24
src/OpenStreetBrowserLoader.js

@ -1,7 +1,9 @@
var OpenStreetBrowserIndex = require('./OpenStreetBrowserIndex')
var OpenStreetBrowserCategory = require('./OpenStreetBrowserCategory')
function OpenStreetBrowserLoader () {
this.types = {}
}
function OpenStreetBrowserLoader (id, callback) {
OpenStreetBrowserLoader.prototype.load = function (id, callback) {
function reqListener (req) {
if (req.status !== 200) {
console.log(req)
@ -10,10 +12,14 @@ function OpenStreetBrowserLoader (id, callback) {
var data = JSON.parse(req.responseText)
if (data.type && data.type === 'index') {
var layer = new OpenStreetBrowserIndex(id, data)
if (!data.type) {
callback('no type defined', null)
return
} else if (!(data.type in this.types)) {
callback('unknown type', null)
return
} else {
var layer = new OpenStreetBrowserCategory(id, data)
var layer = new this.types[data.type](id, data)
}
callback(null, layer)
@ -25,4 +31,8 @@ function OpenStreetBrowserLoader (id, callback) {
req.send()
}
module.exports = OpenStreetBrowserLoader
OpenStreetBrowserLoader.prototype.registerType = function (type, classObject) {
this.types[type] = classObject
}
module.exports = new OpenStreetBrowserLoader()
Loading…
Cancel
Save