Update leaflet-osm
This commit is contained in:
parent
eeadb9e202
commit
743cce1d9c
1 changed files with 36 additions and 3 deletions
39
vendor/assets/leaflet/leaflet.osm.js
vendored
39
vendor/assets/leaflet/leaflet.osm.js
vendored
|
@ -88,11 +88,12 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
|
|||
buildFeatures: function (xml) {
|
||||
var features = [],
|
||||
nodes = L.OSM.getNodes(xml),
|
||||
ways = L.OSM.getWays(xml, nodes);
|
||||
ways = L.OSM.getWays(xml, nodes),
|
||||
relations = L.OSM.getRelations(xml, nodes, ways);
|
||||
|
||||
for (var node_id in nodes) {
|
||||
var node = nodes[node_id];
|
||||
if (this.interestingNode(node, ways)) {
|
||||
if (this.interestingNode(node, ways, relations)) {
|
||||
features.push(node);
|
||||
}
|
||||
}
|
||||
|
@ -119,7 +120,7 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
|
|||
return false;
|
||||
},
|
||||
|
||||
interestingNode: function (node, ways) {
|
||||
interestingNode: function (node, ways, relations) {
|
||||
var used = false;
|
||||
|
||||
for (var i = 0; i < ways.length; i++) {
|
||||
|
@ -133,6 +134,11 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
|
|||
return true;
|
||||
}
|
||||
|
||||
for (var i = 0; i < relations.length; i++) {
|
||||
if (relations[i].members.indexOf(node) >= 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
for (var key in node.tags) {
|
||||
if (this.options.uninterestingTags.indexOf(key) < 0) {
|
||||
return true;
|
||||
|
@ -187,6 +193,33 @@ L.Util.extend(L.OSM, {
|
|||
return result;
|
||||
},
|
||||
|
||||
getRelations: function (xml, nodes, ways) {
|
||||
var result = [];
|
||||
|
||||
var rels = xml.getElementsByTagName("relation");
|
||||
for (var i = 0; i < rels.length; i++) {
|
||||
var rel = rels[i], members = rel.getElementsByTagName("member");
|
||||
|
||||
var rel_object = {
|
||||
id: rel.getAttribute("id"),
|
||||
type: "relation",
|
||||
members: new Array(members.length),
|
||||
tags: this.getTags(rel)
|
||||
};
|
||||
|
||||
for (var j = 0; j < members.length; j++) {
|
||||
if (members[j].getAttribute("type") === "node")
|
||||
rel_object.members[j] = nodes[members[j].getAttribute("ref")];
|
||||
else // relation-way and relation-relation membership not implemented
|
||||
rel_object.members[j] = null;
|
||||
}
|
||||
|
||||
result.push(rel_object);
|
||||
}
|
||||
|
||||
return result;
|
||||
},
|
||||
|
||||
getTags: function (xml) {
|
||||
var result = {};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue