summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChristopher Baines <cb15g11@soton.ac.uk>2014-08-04 21:42:40 +0100
committerChristopher Baines <cb15g11@soton.ac.uk>2014-08-04 21:51:30 +0100
commit38f458453ba0c99554565f5ff568820a044dd203 (patch)
tree93b5406dcfefaddcf8be5c2ed3f73eae17ddd458 /examples
parent9cbb39842997b79fe54606494829a8f6cc3f6aab (diff)
downloadleaflet-soton-38f458453ba0c99554565f5ff568820a044dd203.tar
leaflet-soton-38f458453ba0c99554565f5ff568820a044dd203.tar.gz
Begin to merge in entrance data published by the Univeristy
At the moment, there is no URI's in OSM, but the example will probably prove useful in adding these.
Diffstat (limited to 'examples')
-rw-r--r--examples/doors.html108
1 files changed, 96 insertions, 12 deletions
diff --git a/examples/doors.html b/examples/doors.html
index a4fb41d..3c29b11 100644
--- a/examples/doors.html
+++ b/examples/doors.html
@@ -59,7 +59,13 @@
var entrances = {};
data.buildingParts.features.forEach(function(part) {
if (part.properties.buildingpart === "entrance") {
- entrances[part.id] = part;
+ if ("uri" in part.properties) {
+ entrances[part.properties.uri] = part;
+ }
+
+ if ("id" in part) {
+ entrances[part.id] = part;
+ }
}
});
@@ -70,6 +76,7 @@
data.buildingParts.features.forEach(function(part) {
if (part.properties.buildingpart === "room") {
if (!("building" in part.properties)) {
+ console.log("unknown building");
console.log(part);
return;
}
@@ -84,7 +91,6 @@
}
});
- console.log(buildingRooms);
data.buildings.features.forEach(function(building) {
// if the building has some entrances in the data
@@ -102,44 +108,122 @@
}
var entranceLocations = building.properties.entrances.map(function(entrance_id) {
+ if (!(entrance_id in entrances)) {
+ console.warn("cannot find entrance " + entrance_id);
+ return;
+ }
+
var entrance = entrances[entrance_id];
- return L.GeoJSON.coordsToLatLng(entrance.geometry.coordinates);
+ if ("geometry" in entrance) {
+ return L.GeoJSON.coordsToLatLng(entrance.geometry.coordinates);
+ } else {
+ return null;
+ }
});
div.appendChild(title);
// create the list of entrances
- var ul = document.createElement("ul");
+ var table = document.createElement("table");
+ var thead = document.createElement("thead");
+
+ var headTr = document.createElement("tr");
+
+ function addTh(e) {
+ var th = document.createElement("th");
+ th.appendChild(e);
+ headTr.appendChild(th);
+ }
+
+ addTh(document.createTextNode("OSM ID"));
+ addTh(document.createTextNode("URI"));
+ addTh(document.createTextNode("Label"));
+ addTh(document.createTextNode("Comment"));
+ addTh(document.createTextNode("")); // for Show
+
+ thead.appendChild(headTr);
+ table.appendChild(thead);
+
+ var tbody = document.createElement("tbody");
building.properties.entrances.forEach(function(entrance_id, index) {
+ if (!(entrance_id in entrances)) {
+ console.warn("cannot find entrance " + entrance_id);
+ return;
+ }
+
+ var tr = document.createElement("tr");
+
+ function addToTable(e) {
+ var td = document.createElement("td");
+ td.appendChild(e);
+ tr.appendChild(td);
+ }
+
var entrance = entrances[entrance_id];
+ var osmId;
+ if ("id" in entrance) {
+ osmId = document.createTextNode(entrance.id);
+ } else {
+ osmId = document.createTextNode("Unknown");
+ }
+ addToTable(osmId);
+
+ var uri;
+ if ("uri" in entrance.properties) {
+ uri = document.createTextNode(entrance.properties.uri);
+ } else {
+ uri = document.createTextNode("Unknown");
+ }
+ addToTable(uri);
+
+ var label;
+ if ("label" in entrance.properties) {
+ label = document.createTextNode(entrance.properties.label);
+ } else {
+ label = document.createTextNode("Unknown");
+ }
+ addToTable(label);
+
+ var comment;
+ if ("comment" in entrance.properties) {
+ comment = document.createTextNode(entrance.properties.comment);
+ } else {
+ comment = document.createTextNode("Unknown");
+ }
+ addToTable(comment);
+
var a = document.createElement("a");
- a.textContent = entrance_id + " (level " + entrance.properties.level + ")";
+ a.textContent = "Show";
a.href = "#";
// when the entrance is clicked
a.onclick = function() {
var coordinates = entranceLocations[index];
- console.log(rooms);
+ if (coordinates === null) {
+ return;
+ }
// pan to the entrance
map.panTo(coordinates);
- // display the relevant level
- map.setLevel(entrance.properties.level);
+ if ("level" in entrance.properties) {
+ // display the relevant level
+ map.setLevel(entrance.properties.level);
+ }
return false;
};
- var li = document.createElement("li");
- li.appendChild(a);
+ addToTable(a);
- ul.appendChild(li);
+ tbody.appendChild(tr);
});
- div.appendChild(ul);
+ table.appendChild(tbody);
+ div.appendChild(table);
}
});
});