X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/82b4c8e3f08697abdb62dd037f72085c9154d5b0..db78390ef34c5bca78a6edc3ca58143a845d32f3:/vendor/assets/iD/iD.js diff --git a/vendor/assets/iD/iD.js b/vendor/assets/iD/iD.js index 25bc49f89..3adf062d3 100644 --- a/vendor/assets/iD/iD.js +++ b/vendor/assets/iD/iD.js @@ -6407,7 +6407,7 @@ d3.combobox = function() { for (var i = 0; i < suggestions.length; i++) { if (suggestions[i].value.toLowerCase().indexOf(v.toLowerCase()) === 0) { - var completion = v + suggestions[i].value.substr(v.length); + var completion = suggestions[i].value; idx = i; input.property('value', completion); input.node().setSelectionRange(v.length, completion.length); @@ -19333,7 +19333,7 @@ window.iD = function () { return d3.rebind(context, dispatch, 'on'); }; -iD.version = '1.7.4'; +iD.version = '1.8.0'; (function() { var detected = {}; @@ -19380,7 +19380,7 @@ iD.version = '1.7.4'; // Added due to incomplete svg style support. See #715 detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 ); - detected.locale = navigator.language || navigator.userLanguage || 'en-US'; + detected.locale = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage || 'en-US'); detected.filedrop = (window.FileReader && 'ondrop' in window); @@ -19486,19 +19486,10 @@ iD.taginfo = function() { return _.omit(parameters, 'geometry', 'debounce'); } - function shorten(parameters) { - if (!parameters.query) { - delete parameters.query; - } else { - parameters.query = parameters.query.slice(0, 3); - } - return parameters; - } - function popularKeys(parameters) { var pop_field = 'count_all'; if (parameters.filter) pop_field = 'count_' + parameters.filter; - return function(d) { return parseFloat(d[pop_field]) > 10000; }; + return function(d) { return parseFloat(d[pop_field]) > 5000 || d.in_wiki; }; } function popularValues() { @@ -19533,7 +19524,7 @@ iD.taginfo = function() { taginfo.keys = function(parameters, callback) { var debounce = parameters.debounce; - parameters = clean(shorten(setSort(parameters))); + parameters = clean(setSort(parameters)); request(endpoint + 'keys/all?' + iD.util.qsString(_.extend({ rp: 10, @@ -19548,7 +19539,7 @@ iD.taginfo = function() { taginfo.values = function(parameters, callback) { var debounce = parameters.debounce; - parameters = clean(shorten(setSort(setFilter(parameters)))); + parameters = clean(setSort(setFilter(parameters))); request(endpoint + 'key/values?' + iD.util.qsString(_.extend({ rp: 25, @@ -20236,43 +20227,82 @@ iD.geo.Turn = function(turn) { iD.geo.Intersection = function(graph, vertexId) { var vertex = graph.entity(vertexId), - highways = []; + parentWays = graph.parentWays(vertex), + coincident = [], + highways = {}; + + function addHighway(way, adjacentNodeId) { + if (highways[adjacentNodeId]) { + coincident.push(adjacentNodeId); + } else { + highways[adjacentNodeId] = way; + } + } // Pre-split ways that would need to be split in // order to add a restriction. The real split will // happen when the restriction is added. - graph.parentWays(vertex).forEach(function(way) { + parentWays.forEach(function(way) { if (!way.tags.highway || way.isArea() || way.isDegenerate()) return; - if (way.affix(vertexId)) { - highways.push(way); - } else { - var idx = _.indexOf(way.nodes, vertex.id, 1), - wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, idx + 1)}), - wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(idx)}); + var isFirst = (vertexId === way.first()), + isLast = (vertexId === way.last()), + isAffix = (isFirst || isLast), + isClosingNode = (isFirst && isLast); - graph = graph.replace(wayA); - graph = graph.replace(wayB); + if (isAffix && !isClosingNode) { + var index = (isFirst ? 1 : way.nodes.length - 2); + addHighway(way, way.nodes[index]); - highways.push(wayA); - highways.push(wayB); + } else { + var splitIndex, wayA, wayB, indexA, indexB; + if (isClosingNode) { + splitIndex = Math.ceil(way.nodes.length / 2); // split at midpoint + wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex)}); + wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)}); + indexA = 1; + indexB = way.nodes.length - 2; + } else { + splitIndex = _.indexOf(way.nodes, vertex.id, 1); // split at vertexid + wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, splitIndex + 1)}); + wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(splitIndex)}); + indexA = splitIndex - 1; + indexB = splitIndex + 1; + } + graph = graph.replace(wayA).replace(wayB); + addHighway(wayA, way.nodes[indexA]); + addHighway(wayB, way.nodes[indexB]); } }); + // remove any ways from this intersection that are coincident + // (i.e. any adjacent node used by more than one intersecting way) + coincident.forEach(function (n) { + delete highways[n]; + }); + + var intersection = { highways: highways, + ways: _.values(highways), graph: graph }; - intersection.turns = function(fromNodeID) { - if (!fromNodeID) + intersection.adjacentNodeId = function(fromWayId) { + return _.find(_.keys(highways), function(k) { + return highways[k].id === fromWayId; + }); + }; + + intersection.turns = function(fromNodeId) { + var start = highways[fromNodeId]; + if (!start) return []; - var way = _.find(highways, function(way) { return way.contains(fromNodeID); }); - if (way.first() === vertex.id && way.tags.oneway === 'yes') + if (start.first() === vertex.id && start.tags.oneway === 'yes') return []; - if (way.last() === vertex.id && way.tags.oneway === '-1') + if (start.last() === vertex.id && start.tags.oneway === '-1') return []; function withRestriction(turn) { @@ -20301,39 +20331,44 @@ iD.geo.Intersection = function(graph, vertexId) { } var from = { - node: way.nodes[way.first() === vertex.id ? 1 : way.nodes.length - 2], - way: way.id.split(/-(a|b)/)[0] + node: fromNodeId, + way: start.id.split(/-(a|b)/)[0] }, - via = {node: vertex.id}, + via = { node: vertex.id }, turns = []; - highways.forEach(function(parent) { - if (parent === way) + _.each(highways, function(end, adjacentNodeId) { + if (end === start) return; - var index = parent.nodes.indexOf(vertex.id); - // backward - if (parent.first() !== vertex.id && parent.tags.oneway !== 'yes') { + if (end.first() !== vertex.id && end.tags.oneway !== 'yes') { turns.push(withRestriction({ from: from, via: via, - to: {node: parent.nodes[index - 1], way: parent.id.split(/-(a|b)/)[0]} + to: { + node: adjacentNodeId, + way: end.id.split(/-(a|b)/)[0] + } })); } // forward - if (parent.last() !== vertex.id && parent.tags.oneway !== '-1') { + if (end.last() !== vertex.id && end.tags.oneway !== '-1') { turns.push(withRestriction({ from: from, via: via, - to: {node: parent.nodes[index + 1], way: parent.id.split(/-(a|b)/)[0]} + to: { + node: adjacentNodeId, + way: end.id.split(/-(a|b)/)[0] + } })); } + }); // U-turn - if (way.tags.oneway !== 'yes' && way.tags.oneway !== '-1') { + if (start.tags.oneway !== 'yes' && start.tags.oneway !== '-1') { turns.push(withRestriction({ from: from, via: via, @@ -20461,7 +20496,7 @@ iD.geo.joinWays = function(array, graph) { } function reverse(member) { - return member.tags ? iD.actions.Reverse(member.id)(graph).entity(member.id) : member; + return member.tags ? iD.actions.Reverse(member.id, {reverseOneway: true})(graph).entity(member.id) : member; } while (array.length) { @@ -21251,7 +21286,9 @@ iD.actions.Join = function(ids) { return 'not_adjacent'; var nodeIds = _.pluck(joined[0].nodes, 'id').slice(1, -1), - relation; + relation, + tags = {}, + conflicting = false; joined[0].forEach(function(way) { var parents = graph.parentRelations(way); @@ -21259,10 +21296,21 @@ iD.actions.Join = function(ids) { if (parent.isRestriction() && parent.members.some(function(m) { return nodeIds.indexOf(m.id) >= 0; })) relation = parent; }); + + for (var k in way.tags) { + if (!(k in tags)) { + tags[k] = way.tags[k]; + } else if (tags[k] && iD.interestingTag(k) && tags[k] !== way.tags[k]) { + conflicting = true; + } + } }); if (relation) return 'restriction'; + + if (conflicting) + return 'conflicting_tags'; }; return action; @@ -22167,6 +22215,10 @@ iD.actions.RestrictTurn = function(turn, projection, restrictionId) { via = graph.entity(turn.via.node), to = graph.entity(turn.to.way); + function isClosingNode(way, nodeId) { + return nodeId === way.first() && nodeId === way.last(); + } + function split(toOrFrom) { var newID = toOrFrom.newID || iD.Way().id; graph = iD.actions.Split(via.id, [newID]) @@ -22182,12 +22234,12 @@ iD.actions.RestrictTurn = function(turn, projection, restrictionId) { } } - if (!from.affix(via.id)) { + if (!from.affix(via.id) || isClosingNode(from, via.id)) { if (turn.from.node === turn.to.node) { // U-turn from = to = split(turn.from)[0]; } else if (turn.from.way === turn.to.way) { - // Straight-on + // Straight-on or circular var s = split(turn.from); from = s[0]; to = s[1]; @@ -22197,7 +22249,7 @@ iD.actions.RestrictTurn = function(turn, projection, restrictionId) { } } - if (!to.affix(via.id)) { + if (!to.affix(via.id) || isClosingNode(to, via.id)) { to = split(turn.to)[0]; } @@ -22252,7 +22304,7 @@ iD.actions.RestrictTurn = function(turn, projection, restrictionId) { http://wiki.openstreetmap.org/wiki/Route#Members http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java */ -iD.actions.Reverse = function(wayId) { +iD.actions.Reverse = function(wayId, options) { var replacements = [ [/:right$/, ':left'], [/:left$/, ':right'], [/:forward$/, ':backward'], [/:backward$/, ':forward'] @@ -22282,6 +22334,8 @@ iD.actions.Reverse = function(wayId) { return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; }); } else if (key === 'incline' || key === 'direction') { return {up: 'down', down: 'up'}[value] || value; + } else if (options && options.reverseOneway && key === 'oneway') { + return {yes: '-1', '1': '-1', '-1': 'yes'}[value] || value; } else { return {left: 'right', right: 'left'}[value] || value; } @@ -22971,7 +23025,7 @@ iD.behavior.drag = function() { }; iD.behavior.Draw = function(context) { var event = d3.dispatch('move', 'click', 'clickWay', - 'clickNode', 'undo', 'cancel', 'finish'), + 'clickNode', 'undo', 'cancel', 'finish'), keybinding = d3.keybinding('draw'), hover = iD.behavior.Hover(context) .altDisables(true) @@ -22989,7 +23043,7 @@ iD.behavior.Draw = function(context) { function mousedown() { function point() { - var p = element.node().parentNode; + var p = context.container().node(); return touchId !== null ? d3.touches(p).filter(function(p) { return p.identifier === touchId; })[0] : d3.mouse(p); @@ -22997,17 +23051,20 @@ iD.behavior.Draw = function(context) { var element = d3.select(this), touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, - time = +new Date(), - pos = point(); + t1 = +new Date(), + p1 = point(); element.on('mousemove.draw', null); d3.select(window).on('mouseup.draw', function() { + var t2 = +new Date(), + p2 = point(), + dist = iD.geo.euclideanDistance(p1, p2); + element.on('mousemove.draw', mousemove); - if (iD.geo.euclideanDistance(pos, point()) < closeTolerance || - (iD.geo.euclideanDistance(pos, point()) < tolerance && - (+new Date() - time) < 500)) { + d3.select(window).on('mouseup.draw', null); + if (dist < closeTolerance || (dist < tolerance && (t2 - t1) < 500)) { // Prevent a quick second click d3.select(window).on('click.draw-block', function() { d3.event.stopPropagation(); @@ -23366,6 +23423,7 @@ iD.behavior.Hash = function(context) { }; function update() { + if (context.inIntro()) return; var s1 = formatter(context.map()); if (s0 !== s1) location.replace(s0 = s1); // don't recenter the map! } @@ -26370,13 +26428,7 @@ iD.Entity.prototype = { }, hasInterestingTags: function() { - return _.keys(this.tags).some(function(key) { - return key !== 'attribution' && - key !== 'created_by' && - key !== 'source' && - key !== 'odbl' && - key.indexOf('tiger:') !== 0; - }); + return _.keys(this.tags).some(iD.interestingTag); }, isHighwayIntersection: function() { @@ -27149,37 +27201,6 @@ _.extend(iD.Node.prototype, { }; } }); -iD.oneWayTags = { - 'aerialway': { - 'chair_lift': true, - 'mixed_lift': true, - 't-bar': true, - 'j-bar': true, - 'platter': true, - 'rope_tow': true, - 'magic_carpet': true, - 'yes': true - }, - 'highway': { - 'motorway': true, - 'motorway_link': true - }, - 'junction': { - 'roundabout': true - }, - 'man_made': { - 'piste:halfpipe': true - }, - 'piste:type': { - 'downhill': true, - 'sled': true, - 'yes': true - }, - 'waterway': { - 'river': true, - 'stream': true - } -}; iD.Relation = iD.Entity.relation = function iD_Relation() { if (!(this instanceof iD_Relation)) { return (new iD_Relation()).initialize(arguments); @@ -27460,6 +27481,46 @@ _.extend(iD.Relation.prototype, { return result; } }); +iD.oneWayTags = { + 'aerialway': { + 'chair_lift': true, + 'mixed_lift': true, + 't-bar': true, + 'j-bar': true, + 'platter': true, + 'rope_tow': true, + 'magic_carpet': true, + 'yes': true + }, + 'highway': { + 'motorway': true, + 'motorway_link': true + }, + 'junction': { + 'roundabout': true + }, + 'man_made': { + 'piste:halfpipe': true + }, + 'piste:type': { + 'downhill': true, + 'sled': true, + 'yes': true + }, + 'waterway': { + 'river': true, + 'stream': true + } +}; + +iD.interestingTag = function (key) { + return key !== 'attribution' && + key !== 'created_by' && + key !== 'source' && + key !== 'odbl' && + key.indexOf('tiger:') !== 0; + +}; iD.Tree = function(head) { var rtree = rbush(), rectangles = {}; @@ -29314,18 +29375,16 @@ iD.MapillaryLayer = function (context) { enter.append('button') .on('click', hide) .append('div') - .attr('class', 'icon close'); + .call(iD.svg.Icon('#icon-close')); enter.append('img'); - var link = enter.append('a') + enter + .append('a') .attr('class', 'link') - .attr('target', '_blank'); - - link.append('span') - .attr('class', 'icon icon-pre-text out-link'); - - link.append('span') + .attr('target', '_blank') + .call(iD.svg.Icon('#icon-out-link', 'inline')) + .append('span') .text(t('mapillary.view_on_mapillary')); if (!enable) { @@ -29815,36 +29874,22 @@ iD.svg.Areas = function(projection) { used once globally, since defs IDs must be unique within a document. */ iD.svg.Defs = function(context) { - function autosize(image) { - var img = document.createElement('img'); - img.src = image.attr('xlink:href'); - img.onload = function() { - image.attr({ - width: img.width, - height: img.height - }); - }; - } - function SpriteDefinition(id, href, data) { + function SVGSpriteDefinition(id, href) { return function(defs) { - defs.append('image') - .attr('id', id) - .attr('xlink:href', href) - .call(autosize); - - defs.selectAll() - .data(data) - .enter().append('use') - .attr('id', function(d) { return d.key; }) - .attr('transform', function(d) { return 'translate(-' + d.value[0] + ',-' + d.value[1] + ')'; }) - .attr('xlink:href', '#' + id); + d3.xml(href, 'image/svg+xml', function(err, svg) { + if (err) return; + defs.node().appendChild( + d3.select(svg.documentElement).attr('id', id).node() + ); + }); }; } return function (selection) { var defs = selection.append('defs'); + // marker defs.append('marker') .attr({ id: 'oneway-marker', @@ -29858,6 +29903,7 @@ iD.svg.Defs = function(context) { .append('path') .attr('d', 'M 5 3 L 0 3 L 0 2 L 5 2 L 5 0 L 10 2.5 L 5 5 z'); + // patterns var patterns = defs.selectAll('pattern') .data([ // pattern name, pattern image name @@ -29903,6 +29949,7 @@ iD.svg.Defs = function(context) { return context.imagePath('pattern/' + d[1] + '.png'); }); + // clip paths defs.selectAll() .data([12, 18, 20, 32, 45]) .enter().append('clipPath') @@ -29919,24 +29966,25 @@ iD.svg.Defs = function(context) { return d; }); - var maki = []; - _.forEach(iD.data.featureIcons, function (dimensions, name) { - if (dimensions['12'] && dimensions['18'] && dimensions['24']) { - maki.push({key: 'maki-' + name + '-12', value: dimensions['12']}); - maki.push({key: 'maki-' + name + '-18', value: dimensions['18']}); - maki.push({key: 'maki-' + name + '-24', value: dimensions['24']}); - } - }); + defs.call(SVGSpriteDefinition( + 'iD-sprite', + context.imagePath('iD-sprite.svg'))); - defs.call(SpriteDefinition( - 'sprite', - context.imagePath('sprite.svg'), - d3.entries(iD.data.operations))); - - defs.call(SpriteDefinition( + defs.call(SVGSpriteDefinition( 'maki-sprite', - context.imagePath('maki-sprite.png'), - maki)); + context.imagePath('maki-sprite.svg'))); + }; +}; +iD.svg.Icon = function(name, svgklass, useklass) { + return function (selection) { + selection.selectAll('svg') + .data([0]) + .enter() + .append('svg') + .attr('class', 'icon ' + (svgklass || '')) + .append('use') + .attr('xlink:href', name) + .attr('class', useklass); }; }; iD.svg.Labels = function(projection, context) { @@ -30102,19 +30150,18 @@ iD.svg.Labels = function(projection, context) { } function drawAreaIcons(group, entities, filter, classes, labels) { - var icons = group.selectAll('use') .filter(filter) .data(entities, iD.Entity.key); icons.enter() .append('use') - .attr('clip-path', 'url(#clip-square-18)') - .attr('class', 'icon'); + .attr('width', '18px') + .attr('height', '18px'); icons.attr('transform', get(labels, 'transform')) .attr('xlink:href', function(d) { - return '#maki-' + context.presets().match(d, context.graph()).icon + '-18'; + return '#' + context.presets().match(d, context.graph()).icon + '-18'; }); @@ -30646,9 +30693,10 @@ iD.svg.Points = function(projection, context) { .call(markerPath, 'stroke'); group.append('use') - .attr('class', 'icon') .attr('transform', 'translate(-6, -20)') - .attr('clip-path', 'url(#clip-square-12)'); + .attr('class', 'icon') + .attr('width', '12px') + .attr('height', '12px'); groups.attr('transform', iD.svg.PointTransform(projection)) .call(iD.svg.TagClasses()); @@ -30660,7 +30708,7 @@ iD.svg.Points = function(projection, context) { groups.select('.icon') .attr('xlink:href', function(entity) { var preset = context.presets().match(entity, context.graph()); - return preset.icon ? '#maki-' + preset.icon + '-12' : ''; + return preset.icon ? '#' + preset.icon + '-12' : ''; }); groups.exit() @@ -30787,9 +30835,9 @@ iD.svg.Turns = function(projection) { function icon(turn) { var u = turn.u ? '-u' : ''; if (!turn.restriction) - return '#icon-restriction-yes' + u; + return '#turn-yes' + u; var restriction = graph.entity(turn.restriction).tags.restriction; - return '#icon-restriction-' + + return '#turn-' + (!turn.indirect_restriction && /^only_/.test(restriction) ? 'only' : 'no') + u; } @@ -30797,20 +30845,20 @@ iD.svg.Turns = function(projection) { .data(turns, key); // Enter - var enter = groups.enter().append('g') .attr('class', 'turn'); var nEnter = enter.filter(function (turn) { return !turn.u; }); nEnter.append('rect') - .attr('transform', 'translate(-12, -12)') - .attr('width', '45') - .attr('height', '25'); + .attr('transform', 'translate(-22, -12)') + .attr('width', '44') + .attr('height', '24'); nEnter.append('use') - .attr('transform', 'translate(-12, -12)') - .attr('clip-path', 'url(#clip-square-45)'); + .attr('width', '44') + .attr('height', '24'); + var uEnter = enter.filter(function (turn) { return turn.u; }); @@ -30818,11 +30866,11 @@ iD.svg.Turns = function(projection) { .attr('r', '16'); uEnter.append('use') - .attr('transform', 'translate(-16, -16)') - .attr('clip-path', 'url(#clip-square-32)'); + .attr('width', '32') + .attr('height', '32'); - // Update + // Update groups .attr('transform', function (turn) { var v = graph.entity(turn.via.node), @@ -30831,7 +30879,7 @@ iD.svg.Turns = function(projection) { p = projection(v.loc), r = turn.u ? 0 : 60; - return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ')' + + return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ') ' + 'rotate(' + a * 180 / Math.PI + ')'; }); @@ -30841,8 +30889,8 @@ iD.svg.Turns = function(projection) { groups.select('rect'); groups.select('circle'); - // Exit + // Exit groups.exit() .remove(); @@ -30970,8 +31018,9 @@ iD.svg.Vertices = function(projection, context) { enter.filter(function(d) { return icon(d); }) .append('use') .attr('transform', 'translate(-6, -6)') - .attr('clip-path', 'url(#clip-square-12)') - .attr('xlink:href', function(d) { return '#maki-' + icon(d) + '-12'; }); + .attr('xlink:href', function(d) { return '#' + icon(d) + '-12'; }) + .attr('width', '12px') + .attr('height', '12px'); // Vertices with tags get a fill. enter.filter(function(d) { return d.hasInterestingTags(); }) @@ -31162,20 +31211,28 @@ iD.ui = function(context) { .attr('href', 'http://github.com/openstreetmap/iD') .text(iD.version); - var bugReport = aboutList.append('li') - .append('a') + var issueLinks = aboutList.append('li'); + + issueLinks.append('a') .attr('target', '_blank') .attr('tabindex', -1) - .attr('href', 'https://github.com/openstreetmap/iD/issues'); - - bugReport.append('span') - .attr('class','icon bug light'); - - bugReport.call(bootstrap.tooltip() + .attr('href', 'https://github.com/openstreetmap/iD/issues') + .call(iD.svg.Icon('#icon-bug', 'light')) + .call(bootstrap.tooltip() .title(t('report_a_bug')) .placement('top') ); + issueLinks.append('a') + .attr('target', '_blank') + .attr('tabindex', -1) + .attr('href', 'https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating') + .call(iD.svg.Icon('#icon-translate', 'light')) + .call(bootstrap.tooltip() + .title(t('help_translate')) + .placement('top') + ); + aboutList.append('li') .attr('class', 'feature-warning') .attr('tabindex', -1) @@ -31299,11 +31356,11 @@ iD.ui.Account = function(context) { // Add thumbnail or dont if (details.image_url) { userLink.append('img') - .attr('class', 'icon icon-pre-text user-icon') + .attr('class', 'icon pre-text user-icon') .attr('src', details.image_url); } else { - userLink.append('span') - .attr('class', 'icon avatar light icon-pre-text'); + userLink + .call(iD.svg.Icon('#icon-avatar', 'pre-text light')); } // Add user name @@ -31424,11 +31481,11 @@ iD.ui.Background = function(context) { ['right', [-1, 0]], ['bottom', [0, 1]]], opacityDefault = (context.storage('background-opacity') !== null) ? - (+context.storage('background-opacity')) : 0.5, + (+context.storage('background-opacity')) : 1.0, customTemplate = context.storage('background-custom-template') || ''; // Can be 0 from <1.3.0 use or due to issue #1923. - if (opacityDefault === 0) opacityDefault = 0.5; + if (opacityDefault === 0) opacityDefault = 1.0; function background(selection) { @@ -31603,13 +31660,10 @@ iD.ui.Background = function(context) { button = selection.append('button') .attr('tabindex', -1) .on('click', toggle) + .call(iD.svg.Icon('#icon-layers', 'light')) .call(tooltip), shown = false; - button.append('span') - .attr('class', 'icon layers light'); - - var opa = content.append('div') .attr('class', 'opacity-options-wrapper'); @@ -31647,8 +31701,7 @@ iD.ui.Background = function(context) { .title(t('background.custom_button')) .placement('left')) .on('click', editCustom) - .append('span') - .attr('class', 'icon geocode'); + .call(iD.svg.Icon('#icon-search')); var label = custom.append('label'); @@ -31716,15 +31769,14 @@ iD.ui.Background = function(context) { .attr('class', function(d) { return d[0] + ' nudge'; }) .on('mousedown', clickNudge); - var resetButton = nudgeContainer.append('button') + var resetButton = nudgeContainer + .append('button') .attr('class', 'reset disabled') .on('click', function () { context.background().offset([0, 0]); resetButton.classed('disabled', true); - }); - - resetButton.append('div') - .attr('class', 'icon undo'); + }) + .call(iD.svg.Icon('#icon-undo')); context.map() .on('move.background-update', _.debounce(update, 1000)); @@ -31752,30 +31804,32 @@ iD.ui.Background = function(context) { // Translate a MacOS key command into the appropriate Windows/Linux equivalent. // For example, ⌘Z -> Ctrl+Z iD.ui.cmd = function(code) { - if (iD.detect().os === 'mac') + if (iD.detect().os === 'mac') { return code; - - var replacements = { - '⌘': 'Ctrl', - '⇧': 'Shift', - '⌥': 'Alt', - '⌫': 'Backspace', - '⌦': 'Delete' - }, keys = []; + } if (iD.detect().os === 'win') { if (code === '⌘⇧Z') return 'Ctrl+Y'; } + var result = '', + replacements = { + '⌘': 'Ctrl', + '⇧': 'Shift', + '⌥': 'Alt', + '⌫': 'Backspace', + '⌦': 'Delete' + }; + for (var i = 0; i < code.length; i++) { if (code[i] in replacements) { - keys.push(replacements[code[i]]); + result += replacements[code[i]] + '+'; } else { - keys.push(code[i]); + result += code[i]; } } - return keys.join('+'); + return result; }; iD.ui.Commit = function(context) { var dispatch = d3.dispatch('cancel', 'save'); @@ -31817,7 +31871,11 @@ iD.ui.Commit = function(context) { .attr('placeholder', t('commit.description_placeholder')) .attr('maxlength', 255) .property('value', context.storage('comment') || '') - .on('blur.save', function () { + .on('input.save', function() { + d3.selectAll('.save-section .save-button') + .attr('disabled', (this.value.length ? null : true)); + }) + .on('blur.save', function() { context.storage('comment', this.value); }); @@ -31847,12 +31905,13 @@ iD.ui.Commit = function(context) { .on('mouseout', mouseout) .on('click', warningClick); - warningLi.append('span') - .attr('class', 'alert icon icon-pre-text'); + warningLi + .call(iD.svg.Icon('#icon-alert', 'pre-text')); - warningLi.append('strong').text(function(d) { - return d.message; - }); + warningLi + .append('strong').text(function(d) { + return d.message; + }); warningLi.filter(function(d) { return d.tooltip; }) .call(bootstrap.tooltip() @@ -31877,7 +31936,7 @@ iD.ui.Commit = function(context) { if (user.image_url) { userLink.append('img') .attr('src', user.image_url) - .attr('class', 'icon icon-pre-text user-icon'); + .attr('class', 'icon pre-text user-icon'); } userLink.append('a') @@ -31896,7 +31955,11 @@ iD.ui.Commit = function(context) { .attr('class','buttons fillL cf'); var saveButton = buttonSection.append('button') - .attr('class', 'action col5 button') + .attr('class', 'action col5 button save-button') + .attr('disabled', function() { + var n = d3.select('.commit-form textarea').node(); + return (n && n.value.length) ? null : true; + }) .on('click.save', function() { dispatch.save({ comment: commentField.node().value @@ -31908,7 +31971,7 @@ iD.ui.Commit = function(context) { .text(t('commit.save')); var cancelButton = buttonSection.append('button') - .attr('class', 'action col5 button') + .attr('class', 'action col5 button cancel-button') .on('click.cancel', function() { dispatch.cancel(); }); cancelButton.append('span') @@ -31936,10 +31999,10 @@ iD.ui.Commit = function(context) { .on('mouseout', mouseout) .on('click', zoomToEntity); - li.append('span') - .attr('class', function(d) { - return d.entity.geometry(d.graph) + ' ' + d.changeType + ' icon icon-pre-text'; - }); + li.each(function(d) { + d3.select(this) + .call(iD.svg.Icon('#icon-' + d.entity.geometry(d.graph), 'pre-text ' + d.changeType)); + }); li.append('span') .attr('class', 'change-type') @@ -32039,8 +32102,7 @@ iD.ui.Conflicts = function(context) { .append('button') .attr('class', 'fr') .on('click', function() { dispatch.cancel(); }) - .append('span') - .attr('class', 'icon close'); + .call(iD.svg.Icon('#icon-close')); header .append('h3') @@ -32291,8 +32353,7 @@ iD.ui.Contributors = function(context) { subset = u.slice(0, u.length > limit ? limit - 1 : limit); selection.html('') - .append('span') - .attr('class', 'icon nearby light icon-pre-text'); + .call(iD.svg.Icon('#icon-nearby', 'pre-text light')); var userList = d3.select(document.createElement('span')); @@ -32423,8 +32484,7 @@ iD.ui.EntityEditor = function(context) { $enter.append('button') .attr('class', 'fr preset-close') - .append('span') - .attr('class', 'icon close'); + .call(iD.svg.Icon('#icon-close')); $enter.append('h3'); @@ -32689,8 +32749,8 @@ iD.ui.FeatureList = function(context) { .on('keypress', keypress) .on('input', inputevent); - searchWrap.append('span') - .attr('class', 'icon search'); + searchWrap + .call(iD.svg.Icon('#icon-search', 'pre-text')); var listWrap = selection.append('div') .attr('class', 'inspector-body'); @@ -32797,10 +32857,8 @@ iD.ui.FeatureList = function(context) { .data([0]) .enter().append('button') .property('disabled', true) - .attr('class', 'no-results-item'); - - resultsIndicator.append('span') - .attr('class', 'icon alert'); + .attr('class', 'no-results-item') + .call(iD.svg.Icon('#icon-alert', 'pre-text')); resultsIndicator.append('span') .attr('class', 'entity-name'); @@ -32832,17 +32890,21 @@ iD.ui.FeatureList = function(context) { var items = list.selectAll('.feature-list-item') .data(results, function(d) { return d.id; }); - var enter = items.enter().insert('button', '.geocode-item') + var enter = items.enter() + .insert('button', '.geocode-item') .attr('class', 'feature-list-item') .on('mouseover', mouseover) .on('mouseout', mouseout) .on('click', click); - var label = enter.append('div') + var label = enter + .append('div') .attr('class', 'label'); - label.append('span') - .attr('class', function(d) { return d.geometry + ' icon icon-pre-text'; }); + label.each(function(d) { + d3.select(this) + .call(iD.svg.Icon('#icon-' + d.geometry, 'pre-text')); + }); label.append('span') .attr('class', 'entity-type') @@ -32982,7 +33044,7 @@ iD.ui.FullScreen = function(context) { // .attr('class', 'icon full-screen'); keybinding - .on(iD.ui.cmd('f11'), fullScreen) + .on('f11', fullScreen) .on(iD.ui.cmd('⌘⇧F'), fullScreen); d3.select(document) @@ -33007,15 +33069,13 @@ iD.ui.Geolocate = function(map) { return function(selection) { if (!navigator.geolocation) return; - var button = selection.append('button') + selection.append('button') .attr('tabindex', -1) .attr('title', t('geolocate.title')) .on('click', click) + .call(iD.svg.Icon('#icon-geolocate', 'light')) .call(bootstrap.tooltip() .placement('left')); - - button.append('span') - .attr('class', 'icon geolocate light'); }; }; iD.ui.Help = function(context) { @@ -33097,8 +33157,7 @@ iD.ui.Help = function(context) { .on('click', function() { clickHelp(docs[i - 1], i - 1); }); - prevLink.append('span').attr('class', 'icon back blue'); - prevLink.append('span').html(docs[i - 1].title); + prevLink.append('span').html('◄ ' + docs[i - 1].title); } if (i < docs.length - 1) { var nextLink = nav.append('a') @@ -33106,8 +33165,7 @@ iD.ui.Help = function(context) { .on('click', function() { clickHelp(docs[i + 1], i + 1); }); - nextLink.append('span').html(docs[i + 1].title); - nextLink.append('span').attr('class', 'icon forward blue'); + nextLink.append('span').html(docs[i + 1].title + ' ►'); } } @@ -33126,12 +33184,10 @@ iD.ui.Help = function(context) { button = selection.append('button') .attr('tabindex', -1) .on('click', toggle) + .call(iD.svg.Icon('#icon-help', 'light')) .call(tooltip), shown = false; - button.append('span') - .attr('class', 'icon help light'); - var toc = pane.append('ul') .attr('class', 'toc'); @@ -33193,6 +33249,19 @@ iD.ui.Info = function(context) { return r / 12.56637 * 510065621724000; } + function toLineString(feature) { + if (feature.type === 'LineString') return feature; + + var result = { type: 'LineString', coordinates: [] }; + if (feature.type === 'Polygon') { + result.coordinates = feature.coordinates[0]; + } else if (feature.type === 'MultiPolygon') { + result.coordinates = feature.coordinates[0][0]; + } + + return result; + } + function displayLength(m) { var d = m * (imperial ? 3.28084 : 1), p, unit; @@ -33265,7 +33334,7 @@ iD.ui.Info = function(context) { if (hidden()) return; var resolver = context.graph(), - selected = context.selectedIDs(), + selected = _.filter(context.selectedIDs(), function(e) { return context.hasEntity(e); }), singular = selected.length === 1 ? selected[0] : null, extent = iD.geo.Extent(), entity; @@ -33301,7 +33370,7 @@ iD.ui.Info = function(context) { if (geometry === 'line' || geometry === 'area') { var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()), feature = entity.asGeoJSON(resolver), - length = radiansToMeters(d3.geo.length(feature)), + length = radiansToMeters(d3.geo.length(toLineString(feature))), lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')), centroid = d3.geo.centroid(feature); @@ -33561,20 +33630,24 @@ iD.ui.intro = function(context) { .attr('class', 'joined') .selectAll('button.step'); - var entered = buttonwrap.data(steps) - .enter().append('button') - .attr('class', 'step') - .on('click', enter); + var entered = buttonwrap + .data(steps) + .enter() + .append('button') + .attr('class', 'step') + .on('click', enter); + + entered + .call(iD.svg.Icon('#icon-apply', 'pre-text')); + + entered + .append('label') + .text(function(d) { return t(d.title); }); - entered.append('div').attr('class','icon icon-pre-text apply'); - entered.append('label').text(function(d) { return t(d.title); }); enter(steps[0]); function enter (newStep) { - - if (step) { - step.exit(); - } + if (step) { step.exit(); } context.enter(iD.modes.Browse(context)); @@ -33893,12 +33966,10 @@ iD.ui.MapData = function(context) { button = selection.append('button') .attr('tabindex', -1) .on('click', togglePanel) + .call(iD.svg.Icon('#icon-data', 'light')) .call(tooltip), shown = false; - button.append('span') - .attr('class', 'icon data light'); - content.append('h4') .text(t('map_data.title')); @@ -33954,8 +34025,7 @@ iD.ui.MapData = function(context) { d3.event.stopPropagation(); context.background().zoomToGpxLayer(); }) - .append('span') - .attr('class', 'icon geolocate'); + .call(iD.svg.Icon('#icon-search')); gpxLayerItem.append('button') .attr('class', 'layer-browse') @@ -33970,8 +34040,7 @@ iD.ui.MapData = function(context) { }) .node().click(); }) - .append('span') - .attr('class', 'icon geocode'); + .call(iD.svg.Icon('#icon-geolocate')); label = gpxLayerItem.append('label') .call(bootstrap.tooltip() @@ -34449,8 +34518,10 @@ iD.ui.Modes = function(context) { context .on('enter.modes', update); - buttons.append('span') - .attr('class', function(mode) { return mode.id + ' icon icon-pre-text'; }); + buttons.each(function(d) { + d3.select(this) + .call(iD.svg.Icon('#icon-' + d.button, 'pre-text')); + }); buttons.append('span') .attr('class', 'label') @@ -34490,10 +34561,9 @@ iD.ui.Notice = function(context) { .attr('class', 'zoom-to notice') .on('click', function() { context.map().zoom(context.minEditableZoom()); }); - button.append('span') - .attr('class', 'icon zoom-in-invert'); - - button.append('span') + button + .call(iD.svg.Icon('#icon-plus', 'pre-text')) + .append('span') .attr('class', 'label') .text(t('zoom_in_edit')); @@ -34622,13 +34692,12 @@ iD.ui.preset = function(context) { wrap.append('button') .attr('class', 'remove-icon') - .append('span').attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); wrap.append('button') .attr('class', 'modified-icon') .attr('tabindex', -1) - .append('div') - .attr('class', 'icon undo'); + .call(iD.svg.Icon('#icon-undo')); // Update @@ -34761,13 +34830,26 @@ iD.ui.PresetIcon = function() { var preset, geometry; function presetIcon(selection) { - selection.each(setup); + selection.each(render); } - function setup() { + function render() { var selection = d3.select(this), p = preset.apply(this, arguments), - geom = geometry.apply(this, arguments); + geom = geometry.apply(this, arguments), + icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'), + maki = iD.data.featureIcons.hasOwnProperty(icon + '-24'); + + function tag_classes(p) { + var s = ''; + for (var i in p.tags) { + s += ' tag-' + i; + if (p.tags[i] !== '*') { + s += ' tag-' + i + '-' + p.tags[i]; + } + } + return s; + } var $fill = selection.selectAll('.preset-icon-fill') .data([0]); @@ -34775,32 +34857,39 @@ iD.ui.PresetIcon = function() { $fill.enter().append('div'); $fill.attr('class', function() { - var s = 'preset-icon-fill preset-icon-fill-' + geom; - for (var i in p.tags) { - s += ' tag-' + i + ' tag-' + i + '-' + p.tags[i]; - } - return s; + return 'preset-icon-fill preset-icon-fill-' + geom + tag_classes(p); + }); + + var $frame = selection.selectAll('.preset-icon-frame') + .data([0]); + + $frame.enter() + .append('div') + .call(iD.svg.Icon('#preset-icon-frame')); + + $frame.attr('class', function() { + return 'preset-icon-frame ' + (geom === 'area' ? '' : 'hide'); }); + var $icon = selection.selectAll('.preset-icon') .data([0]); - $icon.enter().append('div'); + $icon.enter() + .append('div') + .attr('class', 'preset-icon') + .call(iD.svg.Icon('')); - $icon.attr('class', function() { - var icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'), - klass = 'feature-' + icon + ' preset-icon'; + $icon + .attr('class', 'preset-icon preset-icon-' + (maki ? '32' : '60')); - var featureicon = iD.data.featureIcons[icon]; - if (featureicon && featureicon[geom]) { - klass += ' preset-icon-' + geom; - } else if (icon === 'multipolygon') { - // Special case (geometry === 'area') - klass += ' preset-icon-relation'; - } + $icon.selectAll('svg') + .attr('class', function() { + return 'icon ' + icon + tag_classes(p); + }); - return klass; - }); + $icon.selectAll('use') // workaround: maki parking-24 broken? + .attr('href', '#' + icon + (maki ? ( icon === 'parking' ? '-18' : '-24') : '')); } presetIcon.preset = function(_) { @@ -34840,15 +34929,14 @@ iD.ui.PresetList = function(context) { .attr('class', 'preset-choose') .on('click', function() { event.choose(currentPreset); }) .append('span') - .attr('class', 'icon forward'); + .html('►'); } else { messagewrap.append('button') .attr('class', 'close') .on('click', function() { context.enter(iD.modes.Browse(context)); }) - .append('span') - .attr('class', 'icon close'); + .call(iD.svg.Icon('#icon-close')); } function keydown() { @@ -34905,8 +34993,8 @@ iD.ui.PresetList = function(context) { .on('keypress', keypress) .on('input', inputevent); - searchWrap.append('span') - .attr('class', 'icon search'); + searchWrap + .call(iD.svg.Icon('#icon-search', 'pre-text')); if (autofocus) { search.node().focus(); @@ -35102,25 +35190,28 @@ iD.ui.RadialMenu = function(context, operations) { var button = menu.selectAll() .data(operations) - .enter().append('g') + .enter() + .append('g') + .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; }) + .classed('disabled', function(d) { return d.disabled(); }) .attr('transform', function(d, i) { - return 'translate(' + r * Math.sin(a0 + i * a) + ',' + - r * Math.cos(a0 + i * a) + ')'; + return 'translate(' + iD.geo.roundCoords([ + r * Math.sin(a0 + i * a), + r * Math.cos(a0 + i * a)]).join(',') + ')'; }); button.append('circle') - .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; }) .attr('r', 15) - .classed('disabled', function(d) { return d.disabled(); }) .on('click', click) .on('mousedown', mousedown) .on('mouseover', mouseover) .on('mouseout', mouseout); button.append('use') - .attr('transform', 'translate(-10, -10)') - .attr('clip-path', 'url(#clip-square-20)') - .attr('xlink:href', function(d) { return '#icon-operation-' + (d.disabled() ? 'disabled-' : '') + d.id; }); + .attr('transform', 'translate(-10,-10)') + .attr('width', '20') + .attr('height', '20') + .attr('xlink:href', function(d) { return '#operation-' + d.id; }); tooltip = d3.select(document.body) .append('div') @@ -35291,8 +35382,7 @@ iD.ui.RawMemberEditor = function(context) { .attr('tabindex', -1) .attr('class', 'remove button-input-action member-delete minor') .on('click', deleteMember) - .append('span') - .attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); $items.exit() .remove(); @@ -35444,8 +35534,7 @@ iD.ui.RawMembershipEditor = function(context) { .attr('tabindex', -1) .attr('class', 'remove button-input-action member-delete minor') .on('click', deleteMembership) - .append('span') - .attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); $items.exit() .remove(); @@ -35480,8 +35569,7 @@ iD.ui.RawMembershipEditor = function(context) { .attr('tabindex', -1) .attr('class', 'remove button-input-action member-delete minor') .on('click', deleteMembership) - .append('span') - .attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); } else { $list.selectAll('.member-row-new') @@ -35491,10 +35579,10 @@ iD.ui.RawMembershipEditor = function(context) { var $add = $wrap.selectAll('.add-relation') .data([0]); - $add.enter().append('button') + $add.enter() + .append('button') .attr('class', 'add-relation') - .append('span') - .attr('class', 'icon plus light'); + .call(iD.svg.Icon('#icon-plus', 'light')); $wrap.selectAll('.add-relation') .on('click', function() { @@ -35555,11 +35643,10 @@ iD.ui.RawTagEditor = function(context) { var $newTag = $wrap.selectAll('.add-tag') .data([0]); - var $enter = $newTag.enter().append('button') - .attr('class', 'add-tag'); - - $enter.append('span') - .attr('class', 'icon plus light'); + $newTag.enter() + .append('button') + .attr('class', 'add-tag') + .call(iD.svg.Icon('#icon-plus', 'light')); $newTag.on('click', addTag); @@ -35568,7 +35655,7 @@ iD.ui.RawTagEditor = function(context) { // Enter - $enter = $items.enter().append('li') + var $enter = $items.enter().append('li') .attr('class', 'tag-row cf'); $enter.append('div') @@ -35588,8 +35675,7 @@ iD.ui.RawTagEditor = function(context) { $enter.append('button') .attr('tabindex', -1) .attr('class', 'remove minor') - .append('span') - .attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); if (context.taginfo()) { $enter.each(bindTypeahead); @@ -35600,7 +35686,12 @@ iD.ui.RawTagEditor = function(context) { $items.order(); $items.each(function(tag) { - var reference = iD.ui.TagReference({key: tag.key, value: tag.value}, context); + var isRelation = (context.entity(id).type === 'relation'), + reference; + if (isRelation && tag.key === 'type') + reference = iD.ui.TagReference({rtype: tag.value}, context); + else + reference = iD.ui.TagReference({key: tag.key, value: tag.value}, context); if (state === 'hover') { reference.showing(false); @@ -35980,12 +36071,9 @@ iD.ui.SelectionList = function(context, selectedIDs) { .on('click', selectEntity); // Enter - var label = enter.append('div') - .attr('class', 'label'); - - label.append('span') - .attr('class', 'icon icon-pre-text'); + .attr('class', 'label') + .call(iD.svg.Icon('', 'pre-text')); label.append('span') .attr('class', 'entity-type'); @@ -35994,9 +36082,11 @@ iD.ui.SelectionList = function(context, selectedIDs) { .attr('class', 'entity-name'); // Update - - items.selectAll('.icon') - .attr('class', function(entity) { return context.geometry(entity.id) + ' icon icon-pre-text'; }); + items.selectAll('use') + .attr('href', function() { + var entity = this.parentElement.parentElement.__data__; + return '#icon-' + context.geometry(entity.id); + }); items.selectAll('.entity-type') .text(function(entity) { return context.presets().match(entity, context.graph()).name(); }); @@ -36005,7 +36095,6 @@ iD.ui.SelectionList = function(context, selectedIDs) { .text(function(entity) { return iD.util.displayName(entity); }); // Exit - items.exit() .remove(); } @@ -36251,8 +36340,7 @@ iD.ui.Success = function(context) { header.append('button') .attr('class', 'fr') .on('click', function() { dispatch.cancel(); }) - .append('span') - .attr('class', 'icon close'); + .call(iD.svg.Icon('#icon-close')); header.append('h3') .text(t('success.just_edited')); @@ -36279,13 +36367,15 @@ iD.ui.Success = function(context) { body.selectAll('.button.social') .data(d3.entries(sharing)) - .enter().append('a') - .attr('class', function(d) { return 'button social col4 ' + d.key; }) + .enter() + .append('a') + .attr('class', 'button social col4') .attr('target', '_blank') .attr('href', function(d) { return d.value; }) .call(bootstrap.tooltip() .title(function(d) { return t('success.' + d.key); }) - .placement('bottom')); + .placement('bottom')) + .each(function(d) { d3.select(this).call(iD.svg.Icon('#logo-' + d.key, 'social')); }); } success.changeset = function(_) { @@ -36361,15 +36451,12 @@ iD.ui.TagReference = function(tag, context) { .append('p') .text(docs.description); - var wikiLink = body + body .append('a') .attr('target', '_blank') - .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title); - - wikiLink.append('span') - .attr('class','icon icon-pre-text out-link'); - - wikiLink.append('span') + .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title) + .call(iD.svg.Icon('#icon-out-link', 'inline')) + .append('span') .text(t('inspector.reference')); return true; @@ -36403,12 +36490,11 @@ iD.ui.TagReference = function(tag, context) { button = selection.selectAll('.tag-reference-button') .data([0]); - var enter = button.enter().append('button') + button.enter() + .append('button') + .attr('class', 'tag-reference-button') .attr('tabindex', -1) - .attr('class', 'tag-reference-button'); - - enter.append('span') - .attr('class', 'icon inspect'); + .call(iD.svg.Icon('#icon-inspect')); button.on('click', function () { d3.event.stopPropagation(); @@ -36446,7 +36532,8 @@ iD.ui.TagReference = function(tag, context) { }; return tagReference; -};// toggles the visibility of ui elements, using a combination of the +}; +// toggles the visibility of ui elements, using a combination of the // hide class, which sets display=none, and a d3 transition for opacity. // this will cause blinking when called repeatedly, so check that the // value actually changes between calls. @@ -36497,8 +36584,10 @@ iD.ui.UndoRedo = function(context) { .on('click', function(d) { return d.action(); }) .call(tooltip); - buttons.append('span') - .attr('class', function(d) { return 'icon ' + d.id; }); + buttons.each(function(d) { + d3.select(this) + .call(iD.svg.Icon('#icon-' + d.id)); + }); var keybinding = d3.keybinding('undo') .on(commands[0].cmd, function() { d3.event.preventDefault(); commands[0].action(); }) @@ -36537,17 +36626,16 @@ iD.ui.ViewOnOSM = function(context) { var $link = selection.selectAll('.view-on-osm') .data([0]); - var $enter = $link.enter().append('a') + $link.enter() + .append('a') .attr('class', 'view-on-osm') - .attr('target', '_blank'); - - $enter.append('span') - .attr('class', 'icon icon-pre-text out-link'); - - $enter.append('span') + .attr('target', '_blank') + .call(iD.svg.Icon('#icon-out-link', 'inline')) + .append('span') .text(t('inspector.view_on_osm')); - $link.attr('href', context.connection().entityURL(entity)); + $link + .attr('href', context.connection().entityURL(entity)); } viewOnOSM.entityID = function(_) { @@ -36561,11 +36649,13 @@ iD.ui.ViewOnOSM = function(context) { iD.ui.Zoom = function(context) { var zooms = [{ id: 'zoom-in', + icon: 'plus', title: t('zoom.in'), action: context.zoomIn, key: '+' }, { id: 'zoom-out', + icon: 'minus', title: t('zoom.out'), action: context.zoomOut, key: '-' @@ -36606,8 +36696,10 @@ iD.ui.Zoom = function(context) { return iD.ui.tooltipHtml(d.title, d.key); })); - button.append('span') - .attr('class', function(d) { return d.id + ' icon'; }); + button.each(function(d) { + d3.select(this) + .call(iD.svg.Icon('#icon-' + d.icon, 'light')); + }); var keybinding = d3.keybinding('zoom'); @@ -37410,13 +37502,13 @@ iD.ui.preset.localized = function(field, context) { var translateButton = selection.selectAll('.localized-add') .data([0]); - translateButton.enter().append('button') + translateButton.enter() + .append('button') .attr('class', 'button-input-action localized-add minor') + .call(iD.svg.Icon('#icon-plus')) .call(bootstrap.tooltip() .title(t('translate.translate')) - .placement('left')) - .append('span') - .attr('class', 'icon plus'); + .placement('left')); translateButton .on('click', addBlank); @@ -37522,7 +37614,7 @@ iD.ui.preset.localized = function(field, context) { .style('max-height','0px') .remove(); }) - .append('span').attr('class', 'icon delete'); + .call(iD.svg.Icon('#operation-delete')); wrap.append('input') .attr('class', 'localized-lang') @@ -37590,11 +37682,11 @@ iD.ui.preset.localized = function(field, context) { input.value(tags[field.key] || ''); - var postfixed = []; - for (var i in tags) { - var m = i.match(new RegExp(field.key + ':([a-zA-Z_-]+)$')); - if (m && m[1]) { - postfixed.push({ lang: m[1], value: tags[i]}); + var postfixed = [], k, m; + for (k in tags) { + m = k.match(/^(.*):([a-zA-Z_-]+)$/); + if (m && m[1] === field.key && m[2]) { + postfixed.push({ lang: m[2], value: tags[k] }); } } @@ -37843,7 +37935,7 @@ iD.ui.preset.restrictions = function(field, context) { surface .call(vertices, graph, [vertex], filter, extent, z) - .call(lines, graph, intersection.highways, filter) + .call(lines, graph, intersection.ways, filter) .call(turns, graph, intersection.turns(fromNodeID)); surface @@ -37857,7 +37949,7 @@ iD.ui.preset.restrictions = function(field, context) { if (fromNodeID) { surface - .selectAll('.' + _.find(intersection.highways, function(way) { return way.contains(fromNodeID); }).id) + .selectAll('.' + intersection.highways[fromNodeID].id) .classed('selected', true); } @@ -37872,7 +37964,7 @@ iD.ui.preset.restrictions = function(field, context) { function click() { var datum = d3.event.target.__data__; if (datum instanceof iD.Entity) { - fromNodeID = datum.nodes[(datum.first() === vertexID) ? 1 : datum.nodes.length - 2]; + fromNodeID = intersection.adjacentNodeId(datum.id); render(); } else if (datum instanceof iD.geo.Turn) { if (datum.restriction) { @@ -38039,17 +38131,19 @@ iD.ui.preset.wikipedia = function(field, context) { link.enter().append('a') .attr('class', 'wiki-link button-input-action minor') .attr('target', '_blank') - .append('span') - .attr('class', 'icon out-link'); + .call(iD.svg.Icon('#icon-out-link', 'inline')); } function language() { var value = lang.value().toLowerCase(); + var locale = iD.detect().locale.toLowerCase(); + var localeLanguage; return _.find(iD.data.wikipedia, function(d) { + if (d[2] === locale) localeLanguage = d; return d[0].toLowerCase() === value || d[1].toLowerCase() === value || - d[2].toLowerCase() === value; - }) || iD.data.wikipedia[0]; + d[2] === value; + }) || localeLanguage || ['English', 'English', 'en']; } function changeLang() { @@ -38849,6 +38943,11 @@ iD.presets.Collection = function(collection) { return a.suggestion === true; }); + function leading(a) { + var index = a.indexOf(value); + return index === 0 || a[index - 1] === ' '; + } + // matches value to preset.name var leading_name = _.filter(searchable, function(a) { return leading(a.name().toLowerCase()); @@ -38868,10 +38967,6 @@ iD.presets.Collection = function(collection) { return _.any(_.without(_.values(a.tags || {}), '*'), leading); }); - function leading(a) { - var index = a.indexOf(value); - return index === 0 || a[index - 1] === ' '; - } // finds close matches to value in preset.name var levenstein_name = searchable.map(function(a) { @@ -39016,7 +39111,7 @@ iD.presets.Preset = function(id, preset, fields) { }; preset.terms = function() { - return preset.t('terms', {'default': ''}).toLowerCase().split(/\s*,+\s*/); + return preset.t('terms', {'default': ''}).toLowerCase().trim().split(/\s*,+\s*/); }; preset.isFallback = function() { @@ -39385,464 +39480,445 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "yh:STRUCTURE", "yh:TOTYUMONO", "yh:TYPE", + "yh:WIDTH", "yh:WIDTH_RANK", "SK53_bulk:load" ], "wikipedia": [ [ - "English", - "English", - "en" - ], - [ - "German", - "Deutsch", - "de" - ], - [ - "Dutch", - "Nederlands", - "nl" - ], - [ - "French", - "Français", - "fr" - ], - [ - "Italian", - "Italiano", - "it" + "Abkhazian", + "Аҧсшәа", + "ab" ], [ - "Russian", - "Русский", - "ru" + "Achinese", + "Acèh", + "ace" ], [ - "Spanish", - "Español", - "es" + "Afrikaans", + "Afrikaans", + "af" ], [ - "Polish", - "Polski", - "pl" + "Akan", + "Akan", + "ak" ], [ - "Swedish", - "Svenska", - "sv" + "Alemannisch", + "Alemannisch", + "als" ], [ - "Japanese", - "日本語", - "ja" + "Amharic", + "አማርኛ", + "am" ], [ - "Portuguese", - "Português", - "pt" + "Aragonese", + "aragonés", + "an" ], [ - "Chinese", - "中文", - "zh" + "Old English", + "Ænglisc", + "ang" ], [ - "Vietnamese", - "Tiếng Việt", - "vi" + "Arabic", + "العربية", + "ar" ], [ - "Ukrainian", - "Українська", - "uk" + "Aramaic", + "ܐܪܡܝܐ", + "arc" ], [ - "Catalan", - "Català", - "ca" + "Egyptian Arabic", + "مصرى", + "arz" ], [ - "Norwegian (BokmÃ¥l)", - "Norsk (BokmÃ¥l)", - "no" + "Assamese", + "অসমীয়া", + "as" ], [ - "Waray-Waray", - "Winaray", - "war" + "Asturian", + "asturianu", + "ast" ], [ - "Cebuano", - "Sinugboanong Binisaya", - "ceb" + "Avaric", + "авар", + "av" ], [ - "Finnish", - "Suomi", - "fi" + "Aymara", + "Aymar aru", + "ay" ], [ - "Persian", - "فارسی", - "fa" + "Azerbaijani", + "azərbaycanca", + "az" ], [ - "Czech", - "ČeÅ¡tina", - "cs" + "South Azerbaijani", + "تۆرکجه", + "azb" ], [ - "Hungarian", - "Magyar", - "hu" + "Bashkir", + "башҡортса", + "ba" ], [ - "Korean", - "한국어", - "ko" + "Bavarian", + "Boarisch", + "bar" ], [ - "Romanian", - "Română", - "ro" + "Samogitian", + "žemaitėška", + "bat-smg" ], [ - "Arabic", - "العربية", - "ar" + "Bikol Central", + "Bikol Central", + "bcl" ], [ - "Turkish", - "Türkçe", - "tr" + "Belarusian", + "беларуская", + "be" ], [ - "Indonesian", - "Bahasa Indonesia", - "id" + "беларуская (тарашкевіца)‎", + "беларуская (тарашкевіца)‎", + "be-x-old" ], [ - "Kazakh", - "Қазақша", - "kk" + "Bulgarian", + "български", + "bg" ], [ - "Malay", - "Bahasa Melayu", - "ms" + "भोजपुरी", + "भोजपुरी", + "bh" ], [ - "Serbian", - "Српски / Srpski", - "sr" + "Bislama", + "Bislama", + "bi" ], [ - "Slovak", - "Slovenčina", - "sk" + "Banjar", + "Bahasa Banjar", + "bjn" ], [ - "Esperanto", - "Esperanto", - "eo" + "Bambara", + "bamanankan", + "bm" ], [ - "Danish", - "Dansk", - "da" + "Bengali", + "বাংলা", + "bn" ], [ - "Lithuanian", - "Lietuvių", - "lt" + "Tibetan", + "བོད་ཡིག", + "bo" ], [ - "Basque", - "Euskara", - "eu" + "Bishnupriya", + "বিষ্ণুপ্রিয়া মণিপুরী", + "bpy" ], [ - "Bulgarian", - "Български", - "bg" + "Breton", + "brezhoneg", + "br" ], [ - "Hebrew", - "עברית", - "he" + "Bosnian", + "bosanski", + "bs" ], [ - "Slovenian", - "Slovenščina", - "sl" + "Buginese", + "ᨅᨔ ᨕᨘᨁᨗ", + "bug" ], [ - "Croatian", - "Hrvatski", - "hr" + "буряад", + "буряад", + "bxr" ], [ - "Volapük", - "Volapük", - "vo" + "Catalan", + "català", + "ca" ], [ - "Estonian", - "Eesti", - "et" + "Chavacano de Zamboanga", + "Chavacano de Zamboanga", + "cbk-zam" ], [ - "Hindi", - "हिन्दी", - "hi" + "Min Dong Chinese", + "Mìng-dĕ̤ng-ngṳ̄", + "cdo" ], [ - "Uzbek", - "O‘zbek", - "uz" + "Chechen", + "нохчийн", + "ce" ], [ - "Galician", - "Galego", - "gl" + "Cebuano", + "Cebuano", + "ceb" ], [ - "Norwegian (Nynorsk)", - "Nynorsk", - "nn" + "Chamorro", + "Chamoru", + "ch" ], [ - "Simple English", - "Simple English", - "simple" + "Cherokee", + "ᏣᎳᎩ", + "chr" ], [ - "Azerbaijani", - "Azərbaycanca", - "az" + "Cheyenne", + "Tsetsêhestâhese", + "chy" ], [ - "Latin", - "Latina", - "la" + "Central Kurdish", + "کوردیی ناوەندی", + "ckb" ], [ - "Greek", - "Ελληνικά", - "el" + "Corsican", + "corsu", + "co" ], [ - "Thai", - "ไทย", - "th" + "Cree", + "Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ", + "cr" ], [ - "Serbo-Croatian", - "Srpskohrvatski / Српскохрватски", - "sh" + "Crimean Turkish", + "qırımtatarca", + "crh" ], [ - "Georgian", - "ქართული", - "ka" + "Czech", + "čeÅ¡tina", + "cs" ], [ - "Occitan", - "Occitan", - "oc" + "Kashubian", + "kaszëbsczi", + "csb" ], [ - "Macedonian", - "Македонски", - "mk" + "Church Slavic", + "словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ", + "cu" ], [ - "Newar / Nepal Bhasa", - "नेपाल भाषा", - "new" + "Chuvash", + "Чӑвашла", + "cv" ], [ - "Tagalog", - "Tagalog", - "tl" + "Welsh", + "Cymraeg", + "cy" ], [ - "Piedmontese", - "Piemontèis", - "pms" + "Danish", + "dansk", + "da" ], [ - "Belarusian", - "Беларуская", - "be" + "German", + "Deutsch", + "de" ], [ - "Haitian", - "Krèyol ayisyen", - "ht" + "Zazaki", + "Zazaki", + "diq" ], [ - "Tamil", - "தமிழ்", - "ta" + "Lower Sorbian", + "dolnoserbski", + "dsb" ], [ - "Telugu", - "తెలుగు", - "te" + "Divehi", + "ދިވެހިބަސް", + "dv" ], [ - "Belarusian (TaraÅ¡kievica)", - "Беларуская (тарашкевіца)", - "be-x-old" + "Dzongkha", + "ཇོང་ཁ", + "dz" ], [ - "Latvian", - "LatvieÅ¡u", - "lv" + "Ewe", + "eʋegbe", + "ee" ], [ - "Breton", - "Brezhoneg", - "br" + "Greek", + "Ελληνικά", + "el" ], [ - "Malagasy", - "Malagasy", - "mg" + "Emiliano-Romagnolo", + "emiliàn e rumagnòl", + "eml" ], [ - "Albanian", - "Shqip", - "sq" + "English", + "English", + "en" ], [ - "Armenian", - "Հայերեն", - "hy" + "Esperanto", + "Esperanto", + "eo" ], [ - "Tatar", - "Tatarça / Татарча", - "tt" + "Spanish", + "español", + "es" ], [ - "Javanese", - "Basa Jawa", - "jv" + "Estonian", + "eesti", + "et" ], [ - "Welsh", - "Cymraeg", - "cy" + "Basque", + "euskara", + "eu" ], [ - "Marathi", - "मराठी", - "mr" + "Extremaduran", + "estremeñu", + "ext" ], [ - "Luxembourgish", - "Lëtzebuergesch", - "lb" + "Persian", + "فارسی", + "fa" ], [ - "Icelandic", - "Íslenska", - "is" + "Fulah", + "Fulfulde", + "ff" ], [ - "Bosnian", - "Bosanski", - "bs" + "Finnish", + "suomi", + "fi" ], [ - "Burmese", - "မြန်မာဘာသာ", - "my" + "Võro", + "Võro", + "fiu-vro" ], [ - "Yoruba", - "Yorùbá", - "yo" + "Fijian", + "Na Vosa Vakaviti", + "fj" ], [ - "Bashkir", - "Башҡорт", - "ba" + "Faroese", + "føroyskt", + "fo" ], [ - "Malayalam", - "മലയാളം", - "ml" + "French", + "français", + "fr" ], [ - "Aragonese", - "Aragonés", - "an" + "Arpitan", + "arpetan", + "frp" ], [ - "Lombard", - "Lumbaart", - "lmo" + "Northern Frisian", + "Nordfriisk", + "frr" ], [ - "Afrikaans", - "Afrikaans", - "af" + "Friulian", + "furlan", + "fur" ], [ - "West Frisian", + "Western Frisian", "Frysk", "fy" ], [ - "Western Panjabi", - "شاہ مکھی پنجابی (ShāhmukhÄ« PañjābÄ«)", - "pnb" + "Irish", + "Gaeilge", + "ga" ], [ - "Bengali", - "বাংলা", - "bn" + "Gagauz", + "Gagauz", + "gag" ], [ - "Swahili", - "Kiswahili", - "sw" + "Gan Chinese", + "贛語", + "gan" ], [ - "Bishnupriya Manipuri", - "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী", - "bpy" + "Scottish Gaelic", + "Gàidhlig", + "gd" ], [ - "Ido", - "Ido", - "io" + "Galician", + "galego", + "gl" ], [ - "Kirghiz", - "Кыргызча", - "ky" + "Gilaki", + "گیلکی", + "glk" ], [ - "Urdu", - "اردو", - "ur" + "Guarani", + "Avañe'ẽ", + "gn" ], [ - "Nepali", - "नेपाली", - "ne" + "Goan Konkani", + "गोवा कोंकणी / Gova Konknni", + "gom" ], [ - "Sicilian", - "Sicilianu", - "scn" + "Gothic", + "𐌲𐌿𐍄𐌹𐍃𐌺", + "got" ], [ "Gujarati", @@ -39850,439 +39926,439 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "gu" ], [ - "Cantonese", - "粵語", - "zh-yue" + "Manx", + "Gaelg", + "gv" ], [ - "Low Saxon", - "Plattdüütsch", - "nds" + "Hausa", + "Hausa", + "ha" ], [ - "Kurdish", - "Kurdî / كوردی", - "ku" + "Hakka Chinese", + "客家語/Hak-kâ-ngî", + "hak" ], [ - "Irish", - "Gaeilge", - "ga" + "Hawaiian", + "Hawai`i", + "haw" ], [ - "Asturian", - "Asturianu", - "ast" + "Hebrew", + "עברית", + "he" ], [ - "Quechua", - "Runa Simi", - "qu" + "Hindi", + "हिन्दी", + "hi" ], [ - "Sundanese", - "Basa Sunda", - "su" + "Fiji Hindi", + "Fiji Hindi", + "hif" ], [ - "Chuvash", - "Чăваш", - "cv" + "Croatian", + "hrvatski", + "hr" ], [ - "Scots", - "Scots", - "sco" + "Upper Sorbian", + "hornjoserbsce", + "hsb" ], [ - "Interlingua", - "Interlingua", - "ia" + "Haitian", + "Kreyòl ayisyen", + "ht" ], [ - "Alemannic", - "Alemannisch", - "als" + "Hungarian", + "magyar", + "hu" ], [ - "Buginese", - "Basa Ugi", - "bug" + "Armenian", + "Հայերեն", + "hy" ], [ - "Neapolitan", - "Nnapulitano", - "nap" + "Interlingua", + "interlingua", + "ia" ], [ - "Samogitian", - "Žemaitėška", - "bat-smg" + "Indonesian", + "Bahasa Indonesia", + "id" ], [ - "Kannada", - "ಕನ್ನಡ", - "kn" + "Interlingue", + "Interlingue", + "ie" ], [ - "Banyumasan", - "Basa Banyumasan", - "map-bms" + "Igbo", + "Igbo", + "ig" ], [ - "Walloon", - "Walon", - "wa" + "Inupiaq", + "Iñupiak", + "ik" ], [ - "Amharic", - "አማርኛ", - "am" + "Iloko", + "Ilokano", + "ilo" ], [ - "Sorani", - "Soranî / کوردی", - "ckb" + "Ido", + "Ido", + "io" ], [ - "Scottish Gaelic", - "Gàidhlig", - "gd" + "Icelandic", + "íslenska", + "is" ], [ - "Fiji Hindi", - "Fiji Hindi", - "hif" + "Italian", + "italiano", + "it" ], [ - "Min Nan", - "Bân-lâm-gú", - "zh-min-nan" + "Inuktitut", + "ᐃᓄᒃᑎᑐᑦ/inuktitut", + "iu" ], [ - "Tajik", - "Тоҷикӣ", - "tg" + "Japanese", + "日本語", + "ja" ], [ - "Mazandarani", - "مَزِروني", - "mzn" + "Lojban", + "Lojban", + "jbo" ], [ - "Egyptian Arabic", - "مصرى (Maá¹£rÄ«)", - "arz" + "Javanese", + "Basa Jawa", + "jv" ], [ - "Yiddish", - "ייִדיש", - "yi" + "Georgian", + "ქართული", + "ka" ], [ - "Venetian", - "Vèneto", - "vec" + "Kara-Kalpak", + "Qaraqalpaqsha", + "kaa" ], [ - "Mongolian", - "Монгол", - "mn" + "Kabyle", + "Taqbaylit", + "kab" ], [ - "Tarantino", - "Tarandíne", - "roa-tara" + "Kabardian", + "Адыгэбзэ", + "kbd" ], [ - "Sanskrit", - "संस्कृतम्", - "sa" + "Kongo", + "Kongo", + "kg" ], [ - "Nahuatl", - "Nāhuatl", - "nah" + "Kikuyu", + "GÄ©kÅ©yÅ©", + "ki" ], [ - "Ossetian", - "Иронау", - "os" + "Kazakh", + "қазақша", + "kk" ], [ - "Sakha", - "Саха тыла (Saxa Tyla)", - "sah" + "Kalaallisut", + "kalaallisut", + "kl" ], [ - "Kapampangan", - "Kapampangan", - "pam" + "Khmer", + "ភាសាខ្មែរ", + "km" ], [ - "Upper Sorbian", - "Hornjoserbsce", - "hsb" + "Kannada", + "ಕನ್ನಡ", + "kn" ], [ - "Sinhalese", - "සිංහල", - "si" + "Korean", + "한국어", + "ko" ], [ - "Northern Sami", - "Sámegiella", - "se" + "Komi-Permyak", + "Перем Коми", + "koi" ], [ - "Limburgish", - "Limburgs", - "li" + "Karachay-Balkar", + "къарачай-малкъар", + "krc" ], [ - "Maori", - "Māori", - "mi" + "Kashmiri", + "कॉशुर / کٲشُر", + "ks" ], [ - "Bavarian", - "Boarisch", - "bar" + "Colognian", + "Ripoarisch", + "ksh" ], [ - "Corsican", - "Corsu", - "co" + "Kurdish", + "Kurdî", + "ku" ], [ - "Ilokano", - "Ilokano", - "ilo" + "Komi", + "коми", + "kv" ], [ - "Gan", - "贛語", - "gan" + "Cornish", + "kernowek", + "kw" ], [ - "Tibetan", - "བོད་སྐད", - "bo" + "Kyrgyz", + "Кыргызча", + "ky" ], [ - "Gilaki", - "گیلکی", - "glk" + "Latin", + "Latina", + "la" ], [ - "Faroese", - "Føroyskt", - "fo" + "Ladino", + "Ladino", + "lad" ], [ - "Rusyn", - "русиньскый язык", - "rue" + "Luxembourgish", + "Lëtzebuergesch", + "lb" ], [ - "Punjabi", - "ਪੰਜਾਬੀ", - "pa" + "лакку", + "лакку", + "lbe" ], [ - "Central_Bicolano", - "Bikol", - "bcl" + "Lezghian", + "лезги", + "lez" ], [ - "Hill Mari", - "Кырык Мары (Kyryk Mary) ", - "mrj" + "Ganda", + "Luganda", + "lg" ], [ - "Võro", - "Võro", - "fiu-vro" + "Limburgish", + "Limburgs", + "li" ], [ - "Dutch Low Saxon", - "Nedersaksisch", - "nds-nl" + "Ligurian", + "Ligure", + "lij" ], [ - "Turkmen", - "تركمن / Туркмен", - "tk" + "Lombard", + "lumbaart", + "lmo" ], [ - "Pashto", - "پښتو", - "ps" + "Lingala", + "lingála", + "ln" ], [ - "West Flemish", - "West-Vlams", - "vls" + "Lao", + "ລາວ", + "lo" ], [ - "Mingrelian", - "მარგალური (Margaluri)", - "xmf" + "Northern Luri", + "لۊری شومالی", + "lrc" ], [ - "Manx", - "Gaelg", - "gv" + "Lithuanian", + "lietuvių", + "lt" ], [ - "Zazaki", - "Zazaki", - "diq" + "Latgalian", + "latgaļu", + "ltg" ], [ - "Pangasinan", - "Pangasinan", - "pag" + "Latvian", + "latvieÅ¡u", + "lv" ], [ - "Komi", - "Коми", - "kv" + "Maithili", + "मैथिली", + "mai" ], [ - "Zeelandic", - "Zeêuws", - "zea" + "Basa Banyumasan", + "Basa Banyumasan", + "map-bms" ], [ - "Divehi", - "ދިވެހިބަސް", - "dv" + "Moksha", + "мокшень", + "mdf" ], [ - "Oriya", - "ଓଡ଼ିଆ", - "or" + "Malagasy", + "Malagasy", + "mg" ], [ - "Khmer", - "ភាសាខ្មែរ", - "km" + "Eastern Mari", + "олык марий", + "mhr" ], [ - "Norman", - "Nouormand/Normaund", - "nrm" + "Maori", + "Māori", + "mi" ], [ - "Romansh", - "Rumantsch", - "rm" + "Minangkabau", + "Baso Minangkabau", + "min" ], [ - "Komi-Permyak", - "Перем Коми (Perem Komi)", - "koi" + "Macedonian", + "македонски", + "mk" ], [ - "Udmurt", - "Удмурт кыл", - "udm" + "Malayalam", + "മലയാളം", + "ml" ], [ - "Meadow Mari", - "Олык Марий (Olyk Marij)", - "mhr" + "Mongolian", + "монгол", + "mn" ], [ - "Ladino", - "Dzhudezmo", - "lad" + "Marathi", + "मराठी", + "mr" ], [ - "North Frisian", - "Nordfriisk", - "frr" + "Western Mari", + "кырык мары", + "mrj" ], [ - "Kashubian", - "Kaszëbsczi", - "csb" + "Malay", + "Bahasa Melayu", + "ms" ], [ - "Ligurian", - "Líguru", - "lij" + "Maltese", + "Malti", + "mt" ], [ - "Wu", - "吴语", - "wuu" + "Mirandese", + "Mirandés", + "mwl" ], [ - "Friulian", - "Furlan", - "fur" + "Burmese", + "မြန်မာဘာသာ", + "my" ], [ - "Vepsian", - "Vepsän", - "vep" + "Erzya", + "эрзянь", + "myv" ], [ - "Classical Chinese", - "古文 / 文言文", - "zh-classical" + "Mazanderani", + "مازِرونی", + "mzn" ], [ - "Uyghur", - "ئۇيغۇر تىلى", - "ug" + "Nauru", + "Dorerin Naoero", + "na" ], [ - "Saterland Frisian", - "Seeltersk", - "stq" + "Nāhuatl", + "Nāhuatl", + "nah" ], [ - "Sardinian", - "Sardu", - "sc" + "Neapolitan", + "Napulitano", + "nap" ], [ - "Aromanian", - "Armãneashce", - "roa-rup" + "Low German", + "Plattdüütsch", + "nds" ], [ - "Pali", - "पाऴि", - "pi" + "Low Saxon (Netherlands)", + "Nedersaksies", + "nds-nl" ], [ - "Somali", - "Soomaaliga", - "so" + "Nepali", + "नेपाली", + "ne" ], [ - "Bihari", - "भोजपुरी", - "bh" + "Newari", + "नेपाल भाषा", + "new" ], [ - "Maltese", - "Malti", - "mt" + "Dutch", + "Nederlands", + "nl" ], [ - "Aymara", - "Aymar", - "ay" + "Norwegian Nynorsk", + "norsk nynorsk", + "nn" ], [ - "Ripuarian", - "Ripoarisch", - "ksh" + "Norwegian", + "norsk bokmÃ¥l", + "no" ], [ "Novial", @@ -40290,14 +40366,14 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "nov" ], [ - "Anglo-Saxon", - "Englisc", - "ang" + "Nouormand", + "Nouormand", + "nrm" ], [ - "Cornish", - "Kernewek/Karnuack", - "kw" + "Northern Sotho", + "Sesotho sa Leboa", + "nso" ], [ "Navajo", @@ -40305,459 +40381,454 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "nv" ], [ - "Picard", - "Picard", - "pcd" + "Nyanja", + "Chi-Chewa", + "ny" ], [ - "Hakka", - "Hak-kâ-fa / 客家話", - "hak" + "Occitan", + "occitan", + "oc" ], [ - "Guarani", - "Avañe'ẽ", - "gn" + "Oromo", + "Oromoo", + "om" ], [ - "Extremaduran", - "Estremeñu", - "ext" + "Oriya", + "ଓଡ଼ିଆ", + "or" ], [ - "Franco-Provençal/Arpitan", - "Arpitan", - "frp" + "Ossetic", + "Ирон", + "os" ], [ - "Assamese", - "অসমীয়া", - "as" + "Punjabi", + "ਪੰਜਾਬੀ", + "pa" ], [ - "Silesian", - "Ślůnski", - "szl" + "Pangasinan", + "Pangasinan", + "pag" ], [ - "Gagauz", - "Gagauz", - "gag" + "Pampanga", + "Kapampangan", + "pam" ], [ - "Interlingue", - "Interlingue", - "ie" + "Papiamento", + "Papiamentu", + "pap" ], [ - "Lingala", - "Lingala", - "ln" + "Picard", + "Picard", + "pcd" ], [ - "Emilian-Romagnol", - "Emiliàn e rumagnòl", - "eml" + "Pennsylvania German", + "Deitsch", + "pdc" ], [ - "Chechen", - "Нохчийн", - "ce" + "Palatine German", + "Pälzisch", + "pfl" ], [ - "Kalmyk", - "Хальмг", - "xal" + "Pali", + "पालि", + "pi" ], [ - "Palatinate German", - "Pfälzisch", - "pfl" + "Norfuk / Pitkern", + "Norfuk / Pitkern", + "pih" ], [ - "Hawaiian", - "Hawai`i", - "haw" + "Polish", + "polski", + "pl" ], [ - "Karachay-Balkar", - "Къарачай-Малкъар (Qarachay-Malqar)", - "krc" + "Piedmontese", + "Piemontèis", + "pms" ], [ - "Pennsylvania German", - "Deitsch", - "pdc" + "Western Punjabi", + "پنجابی", + "pnb" ], [ - "Kinyarwanda", - "Ikinyarwanda", - "rw" + "Pontic", + "Ποντιακά", + "pnt" ], [ - "Crimean Tatar", - "Qırımtatarca", - "crh" + "Pashto", + "پښتو", + "ps" ], [ - "Acehnese", - "Bahsa Acèh", - "ace" + "Portuguese", + "português", + "pt" ], [ - "Tongan", - "faka Tonga", - "to" + "Quechua", + "Runa Simi", + "qu" ], [ - "Greenlandic", - "Kalaallisut", - "kl" + "Romansh", + "rumantsch", + "rm" ], [ - "Lower Sorbian", - "Dolnoserbski", - "dsb" + "Romani", + "Romani", + "rmy" ], [ - "Aramaic", - "ܐܪܡܝܐ", - "arc" + "Rundi", + "Kirundi", + "rn" ], [ - "Erzya", - "Эрзянь (Erzjanj Kelj)", - "myv" + "Romanian", + "română", + "ro" ], [ - "Lezgian", - "Лезги чІал (Lezgi č’al)", - "lez" + "Aromanian", + "armãneashti", + "roa-rup" ], [ - "Banjar", - "Bahasa Banjar", - "bjn" + "tarandíne", + "tarandíne", + "roa-tara" ], [ - "Shona", - "chiShona", - "sn" + "Russian", + "русский", + "ru" ], [ - "Papiamentu", - "Papiamentu", - "pap" + "Rusyn", + "русиньскый", + "rue" ], [ - "Kabyle", - "Taqbaylit", - "kab" + "Kinyarwanda", + "Kinyarwanda", + "rw" ], [ - "Tok Pisin", - "Tok Pisin", - "tpi" + "Sanskrit", + "संस्कृतम्", + "sa" ], [ - "Lak", - "Лакку", - "lbe" + "Sakha", + "саха тыла", + "sah" ], [ - "Buryat (Russia)", - "Буряад", - "bxr" + "Sardinian", + "sardu", + "sc" ], [ - "Lojban", - "Lojban", - "jbo" + "Sicilian", + "sicilianu", + "scn" ], [ - "Wolof", - "Wolof", - "wo" + "Scots", + "Scots", + "sco" ], [ - "Moksha", - "Мокшень (Mokshanj Kälj)", - "mdf" + "Sindhi", + "سنڌي", + "sd" ], [ - "Zamboanga Chavacano", - "Chavacano de Zamboanga", - "cbk-zam" + "Northern Sami", + "sámegiella", + "se" ], [ - "Avar", - "Авар", - "av" + "Sango", + "Sängö", + "sg" ], [ - "Sranan", - "Sranantongo", - "srn" + "Serbo-Croatian", + "srpskohrvatski / српскохрватски", + "sh" ], [ - "Mirandese", - "Mirandés", - "mwl" + "Sinhala", + "සිංහල", + "si" ], [ - "Kabardian Circassian", - "Адыгэбзэ (Adighabze)", - "kbd" + "Simple English", + "Simple English", + "simple" ], [ - "Tahitian", - "Reo Mā`ohi", - "ty" + "Slovak", + "slovenčina", + "sk" ], [ - "Lao", - "ລາວ", - "lo" - ], - [ - "Abkhazian", - "Аҧсуа", - "ab" + "Slovenian", + "slovenščina", + "sl" ], [ - "Tetum", - "Tetun", - "tet" + "Samoan", + "Gagana Samoa", + "sm" ], [ - "Latgalian", - "Latgaļu", - "ltg" + "Shona", + "chiShona", + "sn" ], [ - "Nauruan", - "dorerin Naoero", - "na" + "Somali", + "Soomaaliga", + "so" ], [ - "Kongo", - "KiKongo", - "kg" + "Albanian", + "shqip", + "sq" ], [ - "Igbo", - "Igbo", - "ig" + "Serbian", + "српски / srpski", + "sr" ], [ - "Northern Sotho", - "Sesotho sa Leboa", - "nso" + "Sranan Tongo", + "Sranantongo", + "srn" ], [ - "Zhuang", - "Cuengh", - "za" + "Swati", + "SiSwati", + "ss" ], [ - "Karakalpak", - "Qaraqalpaqsha", - "kaa" + "Southern Sotho", + "Sesotho", + "st" ], [ - "Zulu", - "isiZulu", - "zu" + "Saterland Frisian", + "Seeltersk", + "stq" ], [ - "Cheyenne", - "Tsetsêhestâhese", - "chy" + "Sundanese", + "Basa Sunda", + "su" ], [ - "Romani", - "romani - रोमानी", - "rmy" + "Swedish", + "svenska", + "sv" ], [ - "Old Church Slavonic", - "Словѣньскъ", - "cu" + "Swahili", + "Kiswahili", + "sw" ], [ - "Tswana", - "Setswana", - "tn" + "Silesian", + "ślůnski", + "szl" ], [ - "Cherokee", - "ᏣᎳᎩ", - "chr" + "Tamil", + "தமிழ்", + "ta" ], [ - "Bislama", - "Bislama", - "bi" + "Telugu", + "తెలుగు", + "te" ], [ - "Min Dong", - "Mìng-dĕ̤ng-ngṳ̄", - "cdo" + "Tetum", + "tetun", + "tet" ], [ - "Gothic", - "𐌲𐌿𐍄𐌹𐍃𐌺", - "got" + "Tajik", + "тоҷикӣ", + "tg" ], [ - "Samoan", - "Gagana Samoa", - "sm" + "Thai", + "ไทย", + "th" ], [ - "Moldovan", - "Молдовеняскэ", - "mo" + "Tigrinya", + "ትግርኛ", + "ti" ], [ - "Bambara", - "Bamanankan", - "bm" + "Turkmen", + "Türkmençe", + "tk" ], [ - "Inuktitut", - "ᐃᓄᒃᑎᑐᑦ", - "iu" + "Tagalog", + "Tagalog", + "tl" ], [ - "Norfolk", - "Norfuk", - "pih" + "Tswana", + "Setswana", + "tn" ], [ - "Pontic", - "Ποντιακά", - "pnt" + "Tongan", + "lea faka-Tonga", + "to" ], [ - "Sindhi", - "سنڌي، سندھی ، सिन्ध", - "sd" + "Tok Pisin", + "Tok Pisin", + "tpi" ], [ - "Swati", - "SiSwati", - "ss" + "Turkish", + "Türkçe", + "tr" ], [ - "Kikuyu", - "GÄ©kÅ©yÅ©", - "ki" + "Tsonga", + "Xitsonga", + "ts" ], [ - "Ewe", - "Eʋegbe", - "ee" + "Tatar", + "татарча/tatarça", + "tt" ], [ - "Hausa", - "هَوُسَ", - "ha" + "Tumbuka", + "chiTumbuka", + "tum" ], [ - "Oromo", - "Oromoo", - "om" + "Twi", + "Twi", + "tw" ], [ - "Fijian", - "Na Vosa Vakaviti", - "fj" + "Tahitian", + "reo tahiti", + "ty" ], [ - "Tigrinya", - "ትግርኛ", - "ti" + "Tuvinian", + "тыва дыл", + "tyv" ], [ - "Tsonga", - "Xitsonga", - "ts" + "Udmurt", + "удмурт", + "udm" ], [ - "Kashmiri", - "कश्मीरी / كشميري", - "ks" + "Uyghur", + "ئۇيغۇرچە / Uyghurche", + "ug" ], [ - "Venda", - "Tshivenda", - "ve" + "Ukrainian", + "українська", + "uk" ], [ - "Sango", - "Sängö", - "sg" + "Urdu", + "اردو", + "ur" ], [ - "Kirundi", - "Kirundi", - "rn" + "Uzbek", + "oÊ»zbekcha/ўзбекча", + "uz" ], [ - "Sesotho", - "Sesotho", - "st" + "Venda", + "Tshivenda", + "ve" ], [ - "Dzongkha", - "ཇོང་ཁ", - "dz" + "Venetian", + "vèneto", + "vec" ], [ - "Cree", - "Nehiyaw", - "cr" + "Veps", + "vepsän kel’", + "vep" ], [ - "Akan", - "Akana", - "ak" + "Vietnamese", + "Tiếng Việt", + "vi" ], [ - "Tumbuka", - "chiTumbuka", - "tum" + "West Flemish", + "West-Vlams", + "vls" ], [ - "Luganda", - "Luganda", - "lg" + "Volapük", + "Volapük", + "vo" ], [ - "Chichewa", - "Chi-Chewa", - "ny" + "Walloon", + "walon", + "wa" ], [ - "Fula", - "Fulfulde", - "ff" + "Waray", + "Winaray", + "war" ], [ - "Inupiak", - "Iñupiak", - "ik" + "Wolof", + "Wolof", + "wo" ], [ - "Chamorro", - "Chamoru", - "ch" + "Wu Chinese", + "吴语", + "wuu" ], [ - "Twi", - "Twi", - "tw" + "Kalmyk", + "хальмг", + "xal" ], [ "Xhosa", @@ -40765,54 +40836,54 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "xh" ], [ - "Ndonga", - "Oshiwambo", - "ng" + "Mingrelian", + "მარგალური", + "xmf" ], [ - "Sichuan Yi", - "ꆇꉙ", - "ii" + "Yiddish", + "ייִדיש", + "yi" ], [ - "Choctaw", - "Choctaw", - "cho" + "Yoruba", + "Yorùbá", + "yo" ], [ - "Marshallese", - "Ebon", - "mh" + "Zhuang", + "Vahcuengh", + "za" ], [ - "Afar", - "Afar", - "aa" + "Zeelandic", + "Zeêuws", + "zea" ], [ - "Kuanyama", - "Kuanyama", - "kj" + "Chinese", + "中文", + "zh" ], [ - "Hiri Motu", - "Hiri Motu", - "ho" + "Classical Chinese", + "文言", + "zh-classical" ], [ - "Muscogee", - "Muskogee", - "mus" + "Chinese (Min Nan)", + "Bân-lâm-gú", + "zh-min-nan" ], [ - "Kanuri", - "Kanuri", - "kr" + "Cantonese", + "粵語", + "zh-yue" ], [ - "Herero", - "Otsiherero", - "hz" + "Zulu", + "isiZulu", + "zu" ] ], "imperial": { @@ -50198,2612 +50269,2584 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," [ -132.455735, 57.420992 - ], - [ - -132.362304, - 57.3457 - ], - [ - -132.304684, - 57.280355 - ], - [ - -132.230994, - 57.19682 - ], - [ - -132.276366, - 57.14889 - ], - [ - -132.34122, - 57.080393 - ], - [ - -132.16229, - 57.050317 - ], - [ - -132.031859, - 57.028406 - ], - [ - -132.107384, - 56.858753 - ], - [ - -131.871558, - 56.79346 - ], - [ - -131.865874, - 56.785708 - ], - [ - -131.872411, - 56.77297 - ], - [ - -131.882617, - 56.759146 - ], - [ - -131.887966, - 56.747958 - ], - [ - -131.886028, - 56.737055 - ], - [ - -131.880705, - 56.728838 - ], - [ - -131.864789, - 56.71349 - ], - [ - -131.838976, - 56.682278 - ], - [ - -131.830424, - 56.664759 - ], - [ - -131.826574, - 56.644606 - ], - [ - -131.832103, - 56.603368 - ], - [ - -131.825592, - 56.593343 - ], - [ - -131.799108, - 56.587658 - ], - [ - -131.692293, - 56.585074 - ], - [ - -131.585891, - 56.595048 - ], - [ - -131.560363, - 56.594066 - ], - [ - -131.536437, - 56.585229 - ], - [ - -131.491659, - 56.560166 - ], - [ - -131.345699, - 56.503271 - ], - [ - -131.215604, - 56.45255 - ], - [ - -131.100546, - 56.407669 - ], - [ - -131.016934, - 56.38705 - ], - [ - -130.839089, - 56.372452 - ], - [ - -130.760334, - 56.345192 - ], - [ - -130.645768, - 56.261942 - ], - [ - -130.602256, - 56.247059 - ], - [ - -130.495518, - 56.232434 - ], - [ - -130.47229, - 56.22489 - ], - [ - -130.458053, - 56.210653 - ], - [ - -130.427926, - 56.143964 - ], - [ - -130.418159, - 56.129702 - ], - [ - -130.403974, - 56.121898 - ], - [ - -130.290311, - 56.10097 - ], - [ - -130.243156, - 56.092391 - ], - [ - -130.211246, - 56.089962 - ], - [ - -130.116756, - 56.105646 - ], - [ - -130.094328, - 56.101486 - ], - [ - -130.071539, - 56.084123 - ], - [ - -130.039319, - 56.045521 - ], - [ - -130.026632, - 56.024101 - ], - [ - -130.01901, - 56.002216 - ], - [ - -130.014695, - 55.963252 - ], - [ - -130.016788, - 55.918913 - ], - [ - -130.019612, - 55.907978 - ], - [ - -130.019618, - 55.907952 - ], - [ - -130.022817, - 55.901353 - ], - [ - -130.049387, - 55.871405 - ], - [ - -130.104726, - 55.825263 - ], - [ - -130.136627, - 55.806464 - ], - [ - -130.148834, - 55.795356 - ], - [ - -130.163482, - 55.771145 - ], - [ - -130.167307, - 55.766262 - ], - [ - -130.170806, - 55.759833 - ], - [ - -130.173655, - 55.749498 - ], - [ - -130.170806, - 55.740953 - ], - [ - -130.163808, - 55.734565 - ], - [ - -130.160064, - 55.727118 - ], - [ - -130.167388, - 55.715399 - ], - [ - -130.155914, - 55.700141 - ], - [ - -130.142893, - 55.689521 - ], - [ - -130.131825, - 55.676581 - ], - [ - -130.126454, - 55.653998 - ], - [ - -130.12857, - 55.63642 - ], - [ - -130.135121, - 55.619127 - ], - [ - -130.153147, - 55.58511 - ], - [ - -130.148671, - 55.578192 - ], - [ - -130.146881, - 55.569322 - ], - [ - -130.146962, - 55.547187 - ], - [ - -130.112172, - 55.509345 - ], - [ - -130.101674, - 55.481147 - ], - [ - -130.095082, - 55.472113 - ], - [ - -130.065419, - 55.446112 - ], - [ - -130.057525, - 55.434882 - ], - [ - -130.052561, - 55.414008 - ], - [ - -130.054311, - 55.366645 - ], - [ - -130.05012, - 55.345445 - ], - [ - -130.039296, - 55.330756 - ], - [ - -129.989247, - 55.284003 - ], - [ - -130.031239, - 55.26435 - ], - [ - -130.050038, - 55.252875 - ], - [ - -130.067494, - 55.239 - ], - [ - -130.078236, - 55.233791 - ], - [ - -130.100494, - 55.230292 - ], - [ - -130.104726, - 55.225653 - ], - [ - -130.105702, - 55.211127 - ], - [ - -130.10912, - 55.200751 - ], - [ - -130.115793, - 55.191596 - ], - [ - -130.126454, - 55.180976 - ], - [ - -130.151967, - 55.163275 - ], - [ - -130.159983, - 55.153713 - ], - [ - -130.167592, - 55.129584 - ], - [ - -130.173695, - 55.117743 - ], - [ - -130.200266, - 55.104153 - ], - [ - -130.211781, - 55.084133 - ], - [ - -130.228871, - 55.04385 - ], - [ - -130.238678, - 55.03441 - ], - [ - -130.261342, - 55.022895 - ], - [ - -130.269846, - 55.016547 - ], - [ - -130.275706, - 55.006985 - ], - [ - -130.286366, - 54.983222 - ], - [ - -130.294342, - 54.971869 - ], - [ - -130.326568, - 54.952094 - ], - [ - -130.335561, - 54.938707 - ], - [ - -130.365387, - 54.907294 - ], - [ - -130.385243, - 54.896552 - ], - [ - -130.430816, - 54.881252 - ], - [ - -130.488759, - 54.844184 - ], - [ - -130.580312, - 54.806383 - ], - [ - -130.597485, - 54.803391 - ], - [ - -130.71074, - 54.733215 - ], - [ - -131.160718, - 54.787192 - ] - ] - ] - ] - } - } - ] - }, - "featureIcons": { - "circle-stroked": { - "12": [ - 42, - 0 - ], - "18": [ - 24, - 0 - ], - "24": [ - 0, - 0 - ] - }, - "circle": { - "12": [ - 96, - 0 - ], - "18": [ - 78, - 0 - ], - "24": [ - 54, - 0 - ] - }, - "square-stroked": { - "12": [ - 150, - 0 - ], - "18": [ - 132, - 0 - ], - "24": [ - 108, - 0 - ] - }, - "square": { - "12": [ - 204, - 0 - ], - "18": [ - 186, - 0 - ], - "24": [ - 162, - 0 - ] - }, - "triangle-stroked": { - "12": [ - 258, - 0 - ], - "18": [ - 240, - 0 - ], - "24": [ - 216, - 0 - ] - }, - "triangle": { - "12": [ - 42, - 24 - ], - "18": [ - 24, - 24 - ], - "24": [ - 0, - 24 - ] - }, - "star-stroked": { - "12": [ - 96, - 24 - ], - "18": [ - 78, - 24 - ], - "24": [ - 54, - 24 - ] - }, - "star": { - "12": [ - 150, - 24 - ], - "18": [ - 132, - 24 - ], - "24": [ - 108, - 24 - ] - }, - "cross": { - "12": [ - 204, - 24 - ], - "18": [ - 186, - 24 - ], - "24": [ - 162, - 24 - ] - }, - "marker-stroked": { - "12": [ - 258, - 24 - ], - "18": [ - 240, - 24 - ], - "24": [ - 216, - 24 - ] - }, - "marker": { - "12": [ - 42, - 48 - ], - "18": [ - 24, - 48 - ], - "24": [ - 0, - 48 - ] - }, - "religious-jewish": { - "12": [ - 96, - 48 - ], - "18": [ - 78, - 48 - ], - "24": [ - 54, - 48 - ] - }, - "religious-christian": { - "12": [ - 150, - 48 - ], - "18": [ - 132, - 48 - ], - "24": [ - 108, - 48 - ] - }, - "religious-muslim": { - "12": [ - 204, - 48 - ], - "18": [ - 186, - 48 - ], - "24": [ - 162, - 48 - ] - }, - "cemetery": { - "12": [ - 258, - 48 - ], - "18": [ - 240, - 48 - ], - "24": [ - 216, - 48 - ] - }, - "rocket": { - "12": [ - 42, - 72 - ], - "18": [ - 24, - 72 - ], - "24": [ - 0, - 72 - ] - }, - "airport": { - "12": [ - 96, - 72 - ], - "18": [ - 78, - 72 - ], - "24": [ - 54, - 72 - ] - }, - "heliport": { - "12": [ - 150, - 72 - ], - "18": [ - 132, - 72 - ], - "24": [ - 108, - 72 - ] - }, - "rail": { - "12": [ - 204, - 72 - ], - "18": [ - 186, - 72 - ], - "24": [ - 162, - 72 - ] - }, - "rail-metro": { - "12": [ - 258, - 72 - ], - "18": [ - 240, - 72 - ], - "24": [ - 216, - 72 - ] - }, - "rail-light": { - "12": [ - 42, - 96 - ], - "18": [ - 24, - 96 - ], - "24": [ - 0, - 96 - ] - }, - "bus": { - "12": [ - 96, - 96 - ], - "18": [ - 78, - 96 - ], - "24": [ - 54, - 96 - ] - }, - "fuel": { - "12": [ - 150, - 96 - ], - "18": [ - 132, - 96 - ], - "24": [ - 108, - 96 - ] - }, - "parking": { - "12": [ - 204, - 96 - ], - "18": [ - 186, - 96 - ], - "24": [ - 162, - 96 - ] - }, - "parking-garage": { - "12": [ - 258, - 96 - ], - "18": [ - 240, - 96 - ], - "24": [ - 216, - 96 - ] - }, - "airfield": { - "12": [ - 42, - 120 - ], - "18": [ - 24, - 120 - ], - "24": [ - 0, - 120 - ] - }, - "roadblock": { - "12": [ - 96, - 120 - ], - "18": [ - 78, - 120 - ], - "24": [ - 54, - 120 - ] - }, - "ferry": { - "12": [ - 150, - 120 - ], - "18": [ - 132, - 120 - ], - "24": [ - 108, - 120 - ], - "line": [ - 2240, - 25 - ] - }, - "harbor": { - "12": [ - 204, - 120 - ], - "18": [ - 186, - 120 - ], - "24": [ - 162, - 120 - ] - }, - "bicycle": { - "12": [ - 258, - 120 - ], - "18": [ - 240, - 120 - ], - "24": [ - 216, - 120 - ] - }, - "park": { - "12": [ - 42, - 144 - ], - "18": [ - 24, - 144 - ], - "24": [ - 0, - 144 - ] - }, - "park2": { - "12": [ - 96, - 144 - ], - "18": [ - 78, - 144 - ], - "24": [ - 54, - 144 - ] - }, - "museum": { - "12": [ - 150, - 144 - ], - "18": [ - 132, - 144 - ], - "24": [ - 108, - 144 - ] - }, - "lodging": { - "12": [ - 204, - 144 - ], - "18": [ - 186, - 144 - ], - "24": [ - 162, - 144 - ] - }, - "monument": { - "12": [ - 258, - 144 - ], - "18": [ - 240, - 144 - ], - "24": [ - 216, - 144 - ] - }, - "zoo": { - "12": [ - 42, - 168 - ], - "18": [ - 24, - 168 - ], - "24": [ - 0, - 168 - ] - }, - "garden": { - "12": [ - 96, - 168 - ], - "18": [ - 78, - 168 - ], - "24": [ - 54, - 168 - ] - }, - "campsite": { - "12": [ - 150, - 168 - ], - "18": [ - 132, - 168 - ], - "24": [ - 108, - 168 - ] - }, - "theatre": { - "12": [ - 204, - 168 - ], - "18": [ - 186, - 168 - ], - "24": [ - 162, - 168 - ] - }, - "art-gallery": { - "12": [ - 258, - 168 - ], - "18": [ - 240, - 168 - ], - "24": [ - 216, - 168 - ] - }, - "pitch": { - "12": [ - 42, - 192 - ], - "18": [ - 24, - 192 - ], - "24": [ - 0, - 192 - ] - }, - "soccer": { - "12": [ - 96, - 192 - ], - "18": [ - 78, - 192 - ], - "24": [ - 54, - 192 - ] - }, - "america-football": { - "12": [ - 150, - 192 - ], - "18": [ - 132, - 192 - ], - "24": [ - 108, - 192 - ] - }, - "tennis": { - "12": [ - 204, - 192 - ], - "18": [ - 186, - 192 - ], - "24": [ - 162, - 192 - ] - }, - "basketball": { - "12": [ - 258, - 192 - ], - "18": [ - 240, - 192 - ], - "24": [ - 216, - 192 - ] - }, - "baseball": { - "12": [ - 42, - 216 - ], - "18": [ - 24, - 216 - ], - "24": [ - 0, - 216 - ] - }, - "golf": { - "12": [ - 96, - 216 - ], - "18": [ - 78, - 216 - ], - "24": [ - 54, - 216 - ] - }, - "swimming": { - "12": [ - 150, - 216 - ], - "18": [ - 132, - 216 - ], - "24": [ - 108, - 216 - ] - }, - "cricket": { - "12": [ - 204, - 216 - ], - "18": [ - 186, - 216 - ], - "24": [ - 162, - 216 - ] - }, - "skiing": { - "12": [ - 258, - 216 - ], - "18": [ - 240, - 216 - ], - "24": [ - 216, - 216 - ] - }, - "school": { - "12": [ - 42, - 240 - ], - "18": [ - 24, - 240 - ], - "24": [ - 0, - 240 - ] - }, - "college": { - "12": [ - 96, - 240 - ], - "18": [ - 78, - 240 - ], - "24": [ - 54, - 240 - ] - }, - "library": { - "12": [ - 150, - 240 - ], - "18": [ - 132, - 240 - ], - "24": [ - 108, - 240 - ] - }, - "post": { - "12": [ - 204, - 240 - ], - "18": [ - 186, - 240 - ], - "24": [ - 162, - 240 - ] - }, - "fire-station": { - "12": [ - 258, - 240 - ], - "18": [ - 240, - 240 - ], - "24": [ - 216, - 240 - ] - }, - "town-hall": { - "12": [ - 42, - 264 - ], - "18": [ - 24, - 264 - ], - "24": [ - 0, - 264 - ] - }, - "police": { - "12": [ - 96, - 264 - ], - "18": [ - 78, - 264 - ], - "24": [ - 54, - 264 - ] - }, - "prison": { - "12": [ - 150, - 264 - ], - "18": [ - 132, - 264 - ], - "24": [ - 108, - 264 - ] - }, - "embassy": { - "12": [ - 204, - 264 - ], - "18": [ - 186, - 264 - ], - "24": [ - 162, - 264 - ] - }, - "beer": { - "12": [ - 258, - 264 - ], - "18": [ - 240, - 264 - ], - "24": [ - 216, - 264 - ] - }, - "restaurant": { - "12": [ - 42, - 288 - ], - "18": [ - 24, - 288 - ], - "24": [ - 0, - 288 - ] - }, - "cafe": { - "12": [ - 96, - 288 - ], - "18": [ - 78, - 288 - ], - "24": [ - 54, - 288 - ] - }, - "shop": { - "12": [ - 150, - 288 - ], - "18": [ - 132, - 288 - ], - "24": [ - 108, - 288 - ] - }, - "fast-food": { - "12": [ - 204, - 288 - ], - "18": [ - 186, - 288 - ], - "24": [ - 162, - 288 - ] - }, - "bar": { - "12": [ - 258, - 288 - ], - "18": [ - 240, - 288 - ], - "24": [ - 216, - 288 - ] - }, - "bank": { - "12": [ - 42, - 312 - ], - "18": [ - 24, - 312 - ], - "24": [ - 0, - 312 - ] - }, - "grocery": { - "12": [ - 96, - 312 - ], - "18": [ - 78, - 312 - ], - "24": [ - 54, - 312 - ] - }, - "cinema": { - "12": [ - 150, - 312 - ], - "18": [ - 132, - 312 - ], - "24": [ - 108, - 312 - ] - }, - "pharmacy": { - "12": [ - 204, - 312 - ], - "18": [ - 186, - 312 - ], - "24": [ - 162, - 312 - ] - }, - "hospital": { - "12": [ - 258, - 312 - ], - "18": [ - 240, - 312 - ], - "24": [ - 216, - 312 - ] - }, - "danger": { - "12": [ - 42, - 336 - ], - "18": [ - 24, - 336 - ], - "24": [ - 0, - 336 - ] - }, - "industrial": { - "12": [ - 96, - 336 - ], - "18": [ - 78, - 336 - ], - "24": [ - 54, - 336 - ] - }, - "warehouse": { - "12": [ - 150, - 336 - ], - "18": [ - 132, - 336 - ], - "24": [ - 108, - 336 - ] - }, - "commercial": { - "12": [ - 204, - 336 - ], - "18": [ - 186, - 336 - ], - "24": [ - 162, - 336 - ] - }, - "building": { - "12": [ - 258, - 336 - ], - "18": [ - 240, - 336 - ], - "24": [ - 216, - 336 - ] - }, - "place-of-worship": { - "12": [ - 42, - 360 - ], - "18": [ - 24, - 360 - ], - "24": [ - 0, - 360 - ] - }, - "alcohol-shop": { - "12": [ - 96, - 360 - ], - "18": [ - 78, - 360 - ], - "24": [ - 54, - 360 - ] - }, - "logging": { - "12": [ - 150, - 360 - ], - "18": [ - 132, - 360 - ], - "24": [ - 108, - 360 - ] - }, - "oil-well": { - "12": [ - 204, - 360 - ], - "18": [ - 186, - 360 - ], - "24": [ - 162, - 360 - ] - }, - "slaughterhouse": { - "12": [ - 258, - 360 - ], - "18": [ - 240, - 360 - ], - "24": [ - 216, - 360 - ] - }, - "dam": { - "12": [ - 42, - 384 - ], - "18": [ - 24, - 384 - ], - "24": [ - 0, - 384 - ] - }, - "water": { - "12": [ - 96, - 384 - ], - "18": [ - 78, - 384 - ], - "24": [ - 54, - 384 - ] - }, - "wetland": { - "12": [ - 150, - 384 - ], - "18": [ - 132, - 384 - ], - "24": [ - 108, - 384 - ] - }, - "disability": { - "12": [ - 204, - 384 - ], - "18": [ - 186, - 384 - ], - "24": [ - 162, - 384 - ] - }, - "telephone": { - "12": [ - 258, - 384 - ], - "18": [ - 240, - 384 - ], - "24": [ - 216, - 384 - ] - }, - "emergency-telephone": { - "12": [ - 42, - 408 - ], - "18": [ - 24, - 408 - ], - "24": [ - 0, - 408 - ] - }, - "toilets": { - "12": [ - 96, - 408 - ], - "18": [ - 78, - 408 - ], - "24": [ - 54, - 408 - ] - }, - "waste-basket": { - "12": [ - 150, - 408 - ], - "18": [ - 132, - 408 - ], - "24": [ - 108, - 408 - ] - }, - "music": { - "12": [ - 204, - 408 - ], - "18": [ - 186, - 408 - ], - "24": [ - 162, - 408 - ] - }, - "land-use": { - "12": [ - 258, - 408 - ], - "18": [ - 240, - 408 - ], - "24": [ - 216, - 408 - ] - }, - "city": { - "12": [ - 42, - 432 - ], - "18": [ - 24, - 432 - ], - "24": [ - 0, - 432 - ] - }, - "town": { - "12": [ - 96, - 432 - ], - "18": [ - 78, - 432 - ], - "24": [ - 54, - 432 - ] - }, - "village": { - "12": [ - 150, - 432 - ], - "18": [ - 132, - 432 - ], - "24": [ - 108, - 432 - ] - }, - "farm": { - "12": [ - 204, - 432 - ], - "18": [ - 186, - 432 - ], - "24": [ - 162, - 432 - ] - }, - "bakery": { - "12": [ - 258, - 432 - ], - "18": [ - 240, - 432 - ], - "24": [ - 216, - 432 - ] - }, - "dog-park": { - "12": [ - 42, - 456 - ], - "18": [ - 24, - 456 - ], - "24": [ - 0, - 456 - ] - }, - "lighthouse": { - "12": [ - 96, - 456 - ], - "18": [ - 78, - 456 - ], - "24": [ - 54, - 456 - ] - }, - "clothing-store": { - "12": [ - 150, - 456 - ], - "18": [ - 132, - 456 - ], - "24": [ - 108, - 456 - ] - }, - "polling-place": { - "12": [ - 204, - 456 - ], - "18": [ - 186, - 456 - ], - "24": [ - 162, - 456 - ] - }, - "playground": { - "12": [ - 258, - 456 - ], - "18": [ - 240, - 456 - ], - "24": [ - 216, - 456 - ] - }, - "entrance": { - "12": [ - 42, - 480 - ], - "18": [ - 24, - 480 - ], - "24": [ - 0, - 480 - ] - }, - "heart": { - "12": [ - 96, - 480 - ], - "18": [ - 78, - 480 - ], - "24": [ - 54, - 480 - ] - }, - "london-underground": { - "12": [ - 150, - 480 - ], - "18": [ - 132, - 480 - ], - "24": [ - 108, - 480 - ] - }, - "minefield": { - "12": [ - 204, - 480 - ], - "18": [ - 186, - 480 - ], - "24": [ - 162, - 480 - ] - }, - "rail-underground": { - "12": [ - 258, - 480 - ], - "18": [ - 240, - 480 - ], - "24": [ - 216, - 480 - ] - }, - "rail-above": { - "12": [ - 42, - 504 - ], - "18": [ - 24, - 504 - ], - "24": [ - 0, - 504 - ] - }, - "camera": { - "12": [ - 96, - 504 - ], - "18": [ - 78, - 504 - ], - "24": [ - 54, - 504 - ] - }, - "laundry": { - "12": [ - 150, - 504 - ], - "18": [ - 132, - 504 - ], - "24": [ - 108, - 504 - ] - }, - "car": { - "12": [ - 204, - 504 - ], - "18": [ - 186, - 504 - ], - "24": [ - 162, - 504 - ] - }, - "suitcase": { - "12": [ - 258, - 504 - ], - "18": [ - 240, - 504 - ], - "24": [ - 216, - 504 - ] - }, - "hairdresser": { - "12": [ - 42, - 528 - ], - "18": [ - 24, - 528 - ], - "24": [ - 0, - 528 - ] - }, - "chemist": { - "12": [ - 96, - 528 - ], - "18": [ - 78, - 528 - ], - "24": [ - 54, - 528 - ] - }, - "mobilephone": { - "12": [ - 150, - 528 - ], - "18": [ - 132, - 528 - ], - "24": [ - 108, - 528 - ] - }, - "scooter": { - "12": [ - 204, - 528 - ], - "18": [ - 186, - 528 - ], - "24": [ - 162, - 528 - ] - }, - "gift": { - "12": [ - 258, - 528 - ], - "18": [ - 240, - 528 - ], - "24": [ - 216, - 528 - ] - }, - "ice-cream": { - "12": [ - 42, - 552 - ], - "18": [ - 24, - 552 - ], - "24": [ - 0, - 552 - ] - }, - "highway-motorway": { - "line": [ - 20, - 25 - ] - }, - "highway-trunk": { - "line": [ - 80, - 25 - ] - }, - "highway-primary": { - "line": [ - 140, - 25 - ] - }, - "highway-secondary": { - "line": [ - 200, - 25 - ] - }, - "highway-tertiary": { - "line": [ - 260, - 25 - ] - }, - "highway-motorway-link": { - "line": [ - 320, - 25 - ] - }, - "highway-trunk-link": { - "line": [ - 380, - 25 - ] - }, - "highway-primary-link": { - "line": [ - 440, - 25 - ] - }, - "highway-secondary-link": { - "line": [ - 500, - 25 - ] - }, - "highway-tertiary-link": { - "line": [ - 560, - 25 - ] - }, - "highway-residential": { - "line": [ - 620, - 25 - ] - }, - "highway-unclassified": { - "line": [ - 680, - 25 - ] - }, - "highway-service": { - "line": [ - 740, - 25 - ] - }, - "highway-road": { - "line": [ - 800, - 25 - ] - }, - "highway-track": { - "line": [ - 860, - 25 - ] - }, - "highway-living-street": { - "line": [ - 920, - 25 - ] - }, - "highway-path": { - "line": [ - 980, - 25 - ] - }, - "highway-cycleway": { - "line": [ - 1040, - 25 - ] - }, - "highway-footway": { - "line": [ - 1100, - 25 - ] - }, - "highway-bridleway": { - "line": [ - 1160, - 25 - ] - }, - "highway-steps": { - "line": [ - 1220, - 25 - ] - }, - "railway-rail": { - "line": [ - 1280, - 25 - ] - }, - "railway-disused": { - "line": [ - 1340, - 25 - ] - }, - "railway-abandoned": { - "line": [ - 1400, - 25 - ] - }, - "railway-subway": { - "line": [ - 1460, - 25 - ] - }, - "railway-light-rail": { - "line": [ - 1520, - 25 - ] - }, - "railway-monorail": { - "line": [ - 1580, - 25 - ] - }, - "waterway-river": { - "line": [ - 1640, - 25 - ] - }, - "waterway-stream": { - "line": [ - 1700, - 25 - ] - }, - "waterway-canal": { - "line": [ - 1760, - 25 - ] - }, - "waterway-ditch": { - "line": [ - 1820, - 25 - ] - }, - "power-line": { - "line": [ - 1880, - 25 - ] - }, - "other-line": { - "line": [ - 1940, - 25 - ] - }, - "category-roads": { - "line": [ - 2000, - 25 - ] - }, - "category-rail": { - "line": [ - 2060, - 25 - ] - }, - "category-path": { - "line": [ - 2120, - 25 - ] - }, - "category-water": { - "line": [ - 2180, - 25 - ] - }, - "pipeline": { - "line": [ - 2300, - 25 - ] - }, - "relation": { - "relation": [ - 20, - 25 - ] - }, - "restriction": { - "relation": [ - 80, - 25 - ] - }, - "multipolygon": { - "relation": [ - 141, - 25 - ] - }, - "boundary": { - "relation": [ - 200, - 25 - ] - }, - "route": { - "relation": [ - 260, - 25 - ] - }, - "route-road": { - "relation": [ - 320, - 25 - ] - }, - "route-bicycle": { - "relation": [ - 380, - 25 - ] - }, - "route-foot": { - "relation": [ - 440, - 25 - ] - }, - "route-bus": { - "relation": [ - 500, - 25 - ] - }, - "route-train": { - "relation": [ - 560, - 25 - ] - }, - "route-detour": { - "relation": [ - 620, - 25 - ] - }, - "route-tram": { - "relation": [ - 680, - 25 - ] - }, - "route-ferry": { - "relation": [ - 740, - 25 - ] - }, - "route-power": { - "relation": [ - 800, - 25 - ] - }, - "route-pipeline": { - "relation": [ - 860, - 25 - ] - }, - "route-master": { - "relation": [ - 920, - 25 - ] - }, - "restriction-no-straight-on": { - "relation": [ - 980, - 25 - ] - }, - "restriction-no-u-turn": { - "relation": [ - 1040, - 25 - ] - }, - "restriction-no-left-turn": { - "relation": [ - 1100, - 25 - ] - }, - "restriction-no-right-turn": { - "relation": [ - 1160, - 25 - ] - }, - "restriction-only-straight-on": { - "relation": [ - 1220, - 25 - ] - }, - "restriction-only-left-turn": { - "relation": [ - 1280, - 25 - ] - }, - "restriction-only-right-turn": { - "relation": [ - 1340, - 25 - ] - } - }, - "operations": { - "icon-operation-delete": [ - 0, - 140 - ], - "icon-operation-circularize": [ - 20, - 140 - ], - "icon-operation-straighten": [ - 40, - 140 - ], - "icon-operation-split": [ - 60, - 140 - ], - "icon-operation-disconnect": [ - 80, - 140 - ], - "icon-operation-reverse": [ - 100, - 140 - ], - "icon-operation-move": [ - 120, - 140 - ], - "icon-operation-merge": [ - 140, - 140 - ], - "icon-operation-orthogonalize": [ - 160, - 140 - ], - "icon-operation-rotate": [ - 180, - 140 - ], - "icon-operation-simplify": [ - 200, - 140 - ], - "icon-operation-continue": [ - 220, - 140 - ], - "icon-operation-disabled-delete": [ - 0, - 160 - ], - "icon-operation-disabled-circularize": [ - 20, - 160 - ], - "icon-operation-disabled-straighten": [ - 40, - 160 - ], - "icon-operation-disabled-split": [ - 60, - 160 - ], - "icon-operation-disabled-disconnect": [ - 80, - 160 - ], - "icon-operation-disabled-reverse": [ - 100, - 160 - ], - "icon-operation-disabled-move": [ - 120, - 160 - ], - "icon-operation-disabled-merge": [ - 140, - 160 - ], - "icon-operation-disabled-orthogonalize": [ - 160, - 160 - ], - "icon-operation-disabled-rotate": [ - 180, - 160 - ], - "icon-operation-disabled-simplify": [ - 200, - 160 - ], - "icon-operation-disabled-continue": [ - 220, - 160 - ], - "icon-restriction-yes": [ - 50, - 80 - ], - "icon-restriction-no": [ - 95, - 80 - ], - "icon-restriction-only": [ - 140, - 80 - ], - "icon-restriction-yes-u": [ - 185, - 80 - ], - "icon-restriction-no-u": [ - 230, - 80 - ], - "icon-restriction-only-u": [ - 275, - 80 + ], + [ + -132.362304, + 57.3457 + ], + [ + -132.304684, + 57.280355 + ], + [ + -132.230994, + 57.19682 + ], + [ + -132.276366, + 57.14889 + ], + [ + -132.34122, + 57.080393 + ], + [ + -132.16229, + 57.050317 + ], + [ + -132.031859, + 57.028406 + ], + [ + -132.107384, + 56.858753 + ], + [ + -131.871558, + 56.79346 + ], + [ + -131.865874, + 56.785708 + ], + [ + -131.872411, + 56.77297 + ], + [ + -131.882617, + 56.759146 + ], + [ + -131.887966, + 56.747958 + ], + [ + -131.886028, + 56.737055 + ], + [ + -131.880705, + 56.728838 + ], + [ + -131.864789, + 56.71349 + ], + [ + -131.838976, + 56.682278 + ], + [ + -131.830424, + 56.664759 + ], + [ + -131.826574, + 56.644606 + ], + [ + -131.832103, + 56.603368 + ], + [ + -131.825592, + 56.593343 + ], + [ + -131.799108, + 56.587658 + ], + [ + -131.692293, + 56.585074 + ], + [ + -131.585891, + 56.595048 + ], + [ + -131.560363, + 56.594066 + ], + [ + -131.536437, + 56.585229 + ], + [ + -131.491659, + 56.560166 + ], + [ + -131.345699, + 56.503271 + ], + [ + -131.215604, + 56.45255 + ], + [ + -131.100546, + 56.407669 + ], + [ + -131.016934, + 56.38705 + ], + [ + -130.839089, + 56.372452 + ], + [ + -130.760334, + 56.345192 + ], + [ + -130.645768, + 56.261942 + ], + [ + -130.602256, + 56.247059 + ], + [ + -130.495518, + 56.232434 + ], + [ + -130.47229, + 56.22489 + ], + [ + -130.458053, + 56.210653 + ], + [ + -130.427926, + 56.143964 + ], + [ + -130.418159, + 56.129702 + ], + [ + -130.403974, + 56.121898 + ], + [ + -130.290311, + 56.10097 + ], + [ + -130.243156, + 56.092391 + ], + [ + -130.211246, + 56.089962 + ], + [ + -130.116756, + 56.105646 + ], + [ + -130.094328, + 56.101486 + ], + [ + -130.071539, + 56.084123 + ], + [ + -130.039319, + 56.045521 + ], + [ + -130.026632, + 56.024101 + ], + [ + -130.01901, + 56.002216 + ], + [ + -130.014695, + 55.963252 + ], + [ + -130.016788, + 55.918913 + ], + [ + -130.019612, + 55.907978 + ], + [ + -130.019618, + 55.907952 + ], + [ + -130.022817, + 55.901353 + ], + [ + -130.049387, + 55.871405 + ], + [ + -130.104726, + 55.825263 + ], + [ + -130.136627, + 55.806464 + ], + [ + -130.148834, + 55.795356 + ], + [ + -130.163482, + 55.771145 + ], + [ + -130.167307, + 55.766262 + ], + [ + -130.170806, + 55.759833 + ], + [ + -130.173655, + 55.749498 + ], + [ + -130.170806, + 55.740953 + ], + [ + -130.163808, + 55.734565 + ], + [ + -130.160064, + 55.727118 + ], + [ + -130.167388, + 55.715399 + ], + [ + -130.155914, + 55.700141 + ], + [ + -130.142893, + 55.689521 + ], + [ + -130.131825, + 55.676581 + ], + [ + -130.126454, + 55.653998 + ], + [ + -130.12857, + 55.63642 + ], + [ + -130.135121, + 55.619127 + ], + [ + -130.153147, + 55.58511 + ], + [ + -130.148671, + 55.578192 + ], + [ + -130.146881, + 55.569322 + ], + [ + -130.146962, + 55.547187 + ], + [ + -130.112172, + 55.509345 + ], + [ + -130.101674, + 55.481147 + ], + [ + -130.095082, + 55.472113 + ], + [ + -130.065419, + 55.446112 + ], + [ + -130.057525, + 55.434882 + ], + [ + -130.052561, + 55.414008 + ], + [ + -130.054311, + 55.366645 + ], + [ + -130.05012, + 55.345445 + ], + [ + -130.039296, + 55.330756 + ], + [ + -129.989247, + 55.284003 + ], + [ + -130.031239, + 55.26435 + ], + [ + -130.050038, + 55.252875 + ], + [ + -130.067494, + 55.239 + ], + [ + -130.078236, + 55.233791 + ], + [ + -130.100494, + 55.230292 + ], + [ + -130.104726, + 55.225653 + ], + [ + -130.105702, + 55.211127 + ], + [ + -130.10912, + 55.200751 + ], + [ + -130.115793, + 55.191596 + ], + [ + -130.126454, + 55.180976 + ], + [ + -130.151967, + 55.163275 + ], + [ + -130.159983, + 55.153713 + ], + [ + -130.167592, + 55.129584 + ], + [ + -130.173695, + 55.117743 + ], + [ + -130.200266, + 55.104153 + ], + [ + -130.211781, + 55.084133 + ], + [ + -130.228871, + 55.04385 + ], + [ + -130.238678, + 55.03441 + ], + [ + -130.261342, + 55.022895 + ], + [ + -130.269846, + 55.016547 + ], + [ + -130.275706, + 55.006985 + ], + [ + -130.286366, + 54.983222 + ], + [ + -130.294342, + 54.971869 + ], + [ + -130.326568, + 54.952094 + ], + [ + -130.335561, + 54.938707 + ], + [ + -130.365387, + 54.907294 + ], + [ + -130.385243, + 54.896552 + ], + [ + -130.430816, + 54.881252 + ], + [ + -130.488759, + 54.844184 + ], + [ + -130.580312, + 54.806383 + ], + [ + -130.597485, + 54.803391 + ], + [ + -130.71074, + 54.733215 + ], + [ + -131.160718, + 54.787192 + ] + ] + ] + ] + } + } ] }, + "featureIcons": { + "circle-stroked-24": { + "x": 0, + "y": 0, + "width": 24, + "height": 24 + }, + "circle-stroked-18": { + "x": 24, + "y": 0, + "width": 18, + "height": 18 + }, + "circle-stroked-12": { + "x": 42, + "y": 0, + "width": 12, + "height": 12 + }, + "circle-24": { + "x": 54, + "y": 0, + "width": 24, + "height": 24 + }, + "circle-18": { + "x": 78, + "y": 0, + "width": 18, + "height": 18 + }, + "circle-12": { + "x": 96, + "y": 0, + "width": 12, + "height": 12 + }, + "square-stroked-24": { + "x": 108, + "y": 0, + "width": 24, + "height": 24 + }, + "square-stroked-18": { + "x": 132, + "y": 0, + "width": 18, + "height": 18 + }, + "square-stroked-12": { + "x": 150, + "y": 0, + "width": 12, + "height": 12 + }, + "square-24": { + "x": 162, + "y": 0, + "width": 24, + "height": 24 + }, + "square-18": { + "x": 186, + "y": 0, + "width": 18, + "height": 18 + }, + "square-12": { + "x": 204, + "y": 0, + "width": 12, + "height": 12 + }, + "triangle-stroked-24": { + "x": 216, + "y": 0, + "width": 24, + "height": 24 + }, + "triangle-stroked-18": { + "x": 240, + "y": 0, + "width": 18, + "height": 18 + }, + "triangle-stroked-12": { + "x": 258, + "y": 0, + "width": 12, + "height": 12 + }, + "triangle-24": { + "x": 0, + "y": 24, + "width": 24, + "height": 24 + }, + "triangle-18": { + "x": 24, + "y": 24, + "width": 18, + "height": 18 + }, + "triangle-12": { + "x": 42, + "y": 24, + "width": 12, + "height": 12 + }, + "star-stroked-24": { + "x": 54, + "y": 24, + "width": 24, + "height": 24 + }, + "star-stroked-18": { + "x": 78, + "y": 24, + "width": 18, + "height": 18 + }, + "star-stroked-12": { + "x": 96, + "y": 24, + "width": 12, + "height": 12 + }, + "star-24": { + "x": 108, + "y": 24, + "width": 24, + "height": 24 + }, + "star-18": { + "x": 132, + "y": 24, + "width": 18, + "height": 18 + }, + "star-12": { + "x": 150, + "y": 24, + "width": 12, + "height": 12 + }, + "cross-24": { + "x": 162, + "y": 24, + "width": 24, + "height": 24 + }, + "cross-18": { + "x": 186, + "y": 24, + "width": 18, + "height": 18 + }, + "cross-12": { + "x": 204, + "y": 24, + "width": 12, + "height": 12 + }, + "marker-stroked-24": { + "x": 216, + "y": 24, + "width": 24, + "height": 24 + }, + "marker-stroked-18": { + "x": 240, + "y": 24, + "width": 18, + "height": 18 + }, + "marker-stroked-12": { + "x": 258, + "y": 24, + "width": 12, + "height": 12 + }, + "marker-24": { + "x": 0, + "y": 48, + "width": 24, + "height": 24 + }, + "marker-18": { + "x": 24, + "y": 48, + "width": 18, + "height": 18 + }, + "marker-12": { + "x": 42, + "y": 48, + "width": 12, + "height": 12 + }, + "religious-jewish-24": { + "x": 54, + "y": 48, + "width": 24, + "height": 24 + }, + "religious-jewish-18": { + "x": 78, + "y": 48, + "width": 18, + "height": 18 + }, + "religious-jewish-12": { + "x": 96, + "y": 48, + "width": 12, + "height": 12 + }, + "religious-christian-24": { + "x": 108, + "y": 48, + "width": 24, + "height": 24 + }, + "religious-christian-18": { + "x": 132, + "y": 48, + "width": 18, + "height": 18 + }, + "religious-christian-12": { + "x": 150, + "y": 48, + "width": 12, + "height": 12 + }, + "religious-muslim-24": { + "x": 162, + "y": 48, + "width": 24, + "height": 24 + }, + "religious-muslim-18": { + "x": 186, + "y": 48, + "width": 18, + "height": 18 + }, + "religious-muslim-12": { + "x": 204, + "y": 48, + "width": 12, + "height": 12 + }, + "cemetery-24": { + "x": 216, + "y": 48, + "width": 24, + "height": 24 + }, + "cemetery-18": { + "x": 240, + "y": 48, + "width": 18, + "height": 18 + }, + "cemetery-12": { + "x": 258, + "y": 48, + "width": 12, + "height": 12 + }, + "rocket-24": { + "x": 0, + "y": 72, + "width": 24, + "height": 24 + }, + "rocket-18": { + "x": 24, + "y": 72, + "width": 18, + "height": 18 + }, + "rocket-12": { + "x": 42, + "y": 72, + "width": 12, + "height": 12 + }, + "airport-24": { + "x": 54, + "y": 72, + "width": 24, + "height": 24 + }, + "airport-18": { + "x": 78, + "y": 72, + "width": 18, + "height": 18 + }, + "airport-12": { + "x": 96, + "y": 72, + "width": 12, + "height": 12 + }, + "heliport-24": { + "x": 108, + "y": 72, + "width": 24, + "height": 24 + }, + "heliport-18": { + "x": 132, + "y": 72, + "width": 18, + "height": 18 + }, + "heliport-12": { + "x": 150, + "y": 72, + "width": 12, + "height": 12 + }, + "rail-24": { + "x": 162, + "y": 72, + "width": 24, + "height": 24 + }, + "rail-18": { + "x": 186, + "y": 72, + "width": 18, + "height": 18 + }, + "rail-12": { + "x": 204, + "y": 72, + "width": 12, + "height": 12 + }, + "rail-metro-24": { + "x": 216, + "y": 72, + "width": 24, + "height": 24 + }, + "rail-metro-18": { + "x": 240, + "y": 72, + "width": 18, + "height": 18 + }, + "rail-metro-12": { + "x": 258, + "y": 72, + "width": 12, + "height": 12 + }, + "rail-light-24": { + "x": 0, + "y": 96, + "width": 24, + "height": 24 + }, + "rail-light-18": { + "x": 24, + "y": 96, + "width": 18, + "height": 18 + }, + "rail-light-12": { + "x": 42, + "y": 96, + "width": 12, + "height": 12 + }, + "bus-24": { + "x": 54, + "y": 96, + "width": 24, + "height": 24 + }, + "bus-18": { + "x": 78, + "y": 96, + "width": 18, + "height": 18 + }, + "bus-12": { + "x": 96, + "y": 96, + "width": 12, + "height": 12 + }, + "fuel-24": { + "x": 108, + "y": 96, + "width": 24, + "height": 24 + }, + "fuel-18": { + "x": 132, + "y": 96, + "width": 18, + "height": 18 + }, + "fuel-12": { + "x": 150, + "y": 96, + "width": 12, + "height": 12 + }, + "parking-24": { + "x": 162, + "y": 96, + "width": 24, + "height": 24 + }, + "parking-18": { + "x": 186, + "y": 96, + "width": 18, + "height": 18 + }, + "parking-12": { + "x": 204, + "y": 96, + "width": 12, + "height": 12 + }, + "parking-garage-24": { + "x": 216, + "y": 96, + "width": 24, + "height": 24 + }, + "parking-garage-18": { + "x": 240, + "y": 96, + "width": 18, + "height": 18 + }, + "parking-garage-12": { + "x": 258, + "y": 96, + "width": 12, + "height": 12 + }, + "airfield-24": { + "x": 0, + "y": 120, + "width": 24, + "height": 24 + }, + "airfield-18": { + "x": 24, + "y": 120, + "width": 18, + "height": 18 + }, + "airfield-12": { + "x": 42, + "y": 120, + "width": 12, + "height": 12 + }, + "roadblock-24": { + "x": 54, + "y": 120, + "width": 24, + "height": 24 + }, + "roadblock-18": { + "x": 78, + "y": 120, + "width": 18, + "height": 18 + }, + "roadblock-12": { + "x": 96, + "y": 120, + "width": 12, + "height": 12 + }, + "ferry-24": { + "x": 108, + "y": 120, + "width": 24, + "height": 24 + }, + "ferry-18": { + "x": 132, + "y": 120, + "width": 18, + "height": 18 + }, + "ferry-12": { + "x": 150, + "y": 120, + "width": 12, + "height": 12 + }, + "harbor-24": { + "x": 162, + "y": 120, + "width": 24, + "height": 24 + }, + "harbor-18": { + "x": 186, + "y": 120, + "width": 18, + "height": 18 + }, + "harbor-12": { + "x": 204, + "y": 120, + "width": 12, + "height": 12 + }, + "bicycle-24": { + "x": 216, + "y": 120, + "width": 24, + "height": 24 + }, + "bicycle-18": { + "x": 240, + "y": 120, + "width": 18, + "height": 18 + }, + "bicycle-12": { + "x": 258, + "y": 120, + "width": 12, + "height": 12 + }, + "park-24": { + "x": 0, + "y": 144, + "width": 24, + "height": 24 + }, + "park-18": { + "x": 24, + "y": 144, + "width": 18, + "height": 18 + }, + "park-12": { + "x": 42, + "y": 144, + "width": 12, + "height": 12 + }, + "park2-24": { + "x": 54, + "y": 144, + "width": 24, + "height": 24 + }, + "park2-18": { + "x": 78, + "y": 144, + "width": 18, + "height": 18 + }, + "park2-12": { + "x": 96, + "y": 144, + "width": 12, + "height": 12 + }, + "museum-24": { + "x": 108, + "y": 144, + "width": 24, + "height": 24 + }, + "museum-18": { + "x": 132, + "y": 144, + "width": 18, + "height": 18 + }, + "museum-12": { + "x": 150, + "y": 144, + "width": 12, + "height": 12 + }, + "lodging-24": { + "x": 162, + "y": 144, + "width": 24, + "height": 24 + }, + "lodging-18": { + "x": 186, + "y": 144, + "width": 18, + "height": 18 + }, + "lodging-12": { + "x": 204, + "y": 144, + "width": 12, + "height": 12 + }, + "monument-24": { + "x": 216, + "y": 144, + "width": 24, + "height": 24 + }, + "monument-18": { + "x": 240, + "y": 144, + "width": 18, + "height": 18 + }, + "monument-12": { + "x": 258, + "y": 144, + "width": 12, + "height": 12 + }, + "zoo-24": { + "x": 0, + "y": 168, + "width": 24, + "height": 24 + }, + "zoo-18": { + "x": 24, + "y": 168, + "width": 18, + "height": 18 + }, + "zoo-12": { + "x": 42, + "y": 168, + "width": 12, + "height": 12 + }, + "garden-24": { + "x": 54, + "y": 168, + "width": 24, + "height": 24 + }, + "garden-18": { + "x": 78, + "y": 168, + "width": 18, + "height": 18 + }, + "garden-12": { + "x": 96, + "y": 168, + "width": 12, + "height": 12 + }, + "campsite-24": { + "x": 108, + "y": 168, + "width": 24, + "height": 24 + }, + "campsite-18": { + "x": 132, + "y": 168, + "width": 18, + "height": 18 + }, + "campsite-12": { + "x": 150, + "y": 168, + "width": 12, + "height": 12 + }, + "theatre-24": { + "x": 162, + "y": 168, + "width": 24, + "height": 24 + }, + "theatre-18": { + "x": 186, + "y": 168, + "width": 18, + "height": 18 + }, + "theatre-12": { + "x": 204, + "y": 168, + "width": 12, + "height": 12 + }, + "art-gallery-24": { + "x": 216, + "y": 168, + "width": 24, + "height": 24 + }, + "art-gallery-18": { + "x": 240, + "y": 168, + "width": 18, + "height": 18 + }, + "art-gallery-12": { + "x": 258, + "y": 168, + "width": 12, + "height": 12 + }, + "pitch-24": { + "x": 0, + "y": 192, + "width": 24, + "height": 24 + }, + "pitch-18": { + "x": 24, + "y": 192, + "width": 18, + "height": 18 + }, + "pitch-12": { + "x": 42, + "y": 192, + "width": 12, + "height": 12 + }, + "soccer-24": { + "x": 54, + "y": 192, + "width": 24, + "height": 24 + }, + "soccer-18": { + "x": 78, + "y": 192, + "width": 18, + "height": 18 + }, + "soccer-12": { + "x": 96, + "y": 192, + "width": 12, + "height": 12 + }, + "america-football-24": { + "x": 108, + "y": 192, + "width": 24, + "height": 24 + }, + "america-football-18": { + "x": 132, + "y": 192, + "width": 18, + "height": 18 + }, + "america-football-12": { + "x": 150, + "y": 192, + "width": 12, + "height": 12 + }, + "tennis-24": { + "x": 162, + "y": 192, + "width": 24, + "height": 24 + }, + "tennis-18": { + "x": 186, + "y": 192, + "width": 18, + "height": 18 + }, + "tennis-12": { + "x": 204, + "y": 192, + "width": 12, + "height": 12 + }, + "basketball-24": { + "x": 216, + "y": 192, + "width": 24, + "height": 24 + }, + "basketball-18": { + "x": 240, + "y": 192, + "width": 18, + "height": 18 + }, + "basketball-12": { + "x": 258, + "y": 192, + "width": 12, + "height": 12 + }, + "baseball-24": { + "x": 0, + "y": 216, + "width": 24, + "height": 24 + }, + "baseball-18": { + "x": 24, + "y": 216, + "width": 18, + "height": 18 + }, + "baseball-12": { + "x": 42, + "y": 216, + "width": 12, + "height": 12 + }, + "golf-24": { + "x": 54, + "y": 216, + "width": 24, + "height": 24 + }, + "golf-18": { + "x": 78, + "y": 216, + "width": 18, + "height": 18 + }, + "golf-12": { + "x": 96, + "y": 216, + "width": 12, + "height": 12 + }, + "swimming-24": { + "x": 108, + "y": 216, + "width": 24, + "height": 24 + }, + "swimming-18": { + "x": 132, + "y": 216, + "width": 18, + "height": 18 + }, + "swimming-12": { + "x": 150, + "y": 216, + "width": 12, + "height": 12 + }, + "cricket-24": { + "x": 162, + "y": 216, + "width": 24, + "height": 24 + }, + "cricket-18": { + "x": 186, + "y": 216, + "width": 18, + "height": 18 + }, + "cricket-12": { + "x": 204, + "y": 216, + "width": 12, + "height": 12 + }, + "skiing-24": { + "x": 216, + "y": 216, + "width": 24, + "height": 24 + }, + "skiing-18": { + "x": 240, + "y": 216, + "width": 18, + "height": 18 + }, + "skiing-12": { + "x": 258, + "y": 216, + "width": 12, + "height": 12 + }, + "school-24": { + "x": 0, + "y": 240, + "width": 24, + "height": 24 + }, + "school-18": { + "x": 24, + "y": 240, + "width": 18, + "height": 18 + }, + "school-12": { + "x": 42, + "y": 240, + "width": 12, + "height": 12 + }, + "college-24": { + "x": 54, + "y": 240, + "width": 24, + "height": 24 + }, + "college-18": { + "x": 78, + "y": 240, + "width": 18, + "height": 18 + }, + "college-12": { + "x": 96, + "y": 240, + "width": 12, + "height": 12 + }, + "library-24": { + "x": 108, + "y": 240, + "width": 24, + "height": 24 + }, + "library-18": { + "x": 132, + "y": 240, + "width": 18, + "height": 18 + }, + "library-12": { + "x": 150, + "y": 240, + "width": 12, + "height": 12 + }, + "post-24": { + "x": 162, + "y": 240, + "width": 24, + "height": 24 + }, + "post-18": { + "x": 186, + "y": 240, + "width": 18, + "height": 18 + }, + "post-12": { + "x": 204, + "y": 240, + "width": 12, + "height": 12 + }, + "fire-station-24": { + "x": 216, + "y": 240, + "width": 24, + "height": 24 + }, + "fire-station-18": { + "x": 240, + "y": 240, + "width": 18, + "height": 18 + }, + "fire-station-12": { + "x": 258, + "y": 240, + "width": 12, + "height": 12 + }, + "town-hall-24": { + "x": 0, + "y": 264, + "width": 24, + "height": 24 + }, + "town-hall-18": { + "x": 24, + "y": 264, + "width": 18, + "height": 18 + }, + "town-hall-12": { + "x": 42, + "y": 264, + "width": 12, + "height": 12 + }, + "police-24": { + "x": 54, + "y": 264, + "width": 24, + "height": 24 + }, + "police-18": { + "x": 78, + "y": 264, + "width": 18, + "height": 18 + }, + "police-12": { + "x": 96, + "y": 264, + "width": 12, + "height": 12 + }, + "prison-24": { + "x": 108, + "y": 264, + "width": 24, + "height": 24 + }, + "prison-18": { + "x": 132, + "y": 264, + "width": 18, + "height": 18 + }, + "prison-12": { + "x": 150, + "y": 264, + "width": 12, + "height": 12 + }, + "embassy-24": { + "x": 162, + "y": 264, + "width": 24, + "height": 24 + }, + "embassy-18": { + "x": 186, + "y": 264, + "width": 18, + "height": 18 + }, + "embassy-12": { + "x": 204, + "y": 264, + "width": 12, + "height": 12 + }, + "beer-24": { + "x": 216, + "y": 264, + "width": 24, + "height": 24 + }, + "beer-18": { + "x": 240, + "y": 264, + "width": 18, + "height": 18 + }, + "beer-12": { + "x": 258, + "y": 264, + "width": 12, + "height": 12 + }, + "restaurant-24": { + "x": 0, + "y": 288, + "width": 24, + "height": 24 + }, + "restaurant-18": { + "x": 24, + "y": 288, + "width": 18, + "height": 18 + }, + "restaurant-12": { + "x": 42, + "y": 288, + "width": 12, + "height": 12 + }, + "cafe-24": { + "x": 54, + "y": 288, + "width": 24, + "height": 24 + }, + "cafe-18": { + "x": 78, + "y": 288, + "width": 18, + "height": 18 + }, + "cafe-12": { + "x": 96, + "y": 288, + "width": 12, + "height": 12 + }, + "shop-24": { + "x": 108, + "y": 288, + "width": 24, + "height": 24 + }, + "shop-18": { + "x": 132, + "y": 288, + "width": 18, + "height": 18 + }, + "shop-12": { + "x": 150, + "y": 288, + "width": 12, + "height": 12 + }, + "fast-food-24": { + "x": 162, + "y": 288, + "width": 24, + "height": 24 + }, + "fast-food-18": { + "x": 186, + "y": 288, + "width": 18, + "height": 18 + }, + "fast-food-12": { + "x": 204, + "y": 288, + "width": 12, + "height": 12 + }, + "bar-24": { + "x": 216, + "y": 288, + "width": 24, + "height": 24 + }, + "bar-18": { + "x": 240, + "y": 288, + "width": 18, + "height": 18 + }, + "bar-12": { + "x": 258, + "y": 288, + "width": 12, + "height": 12 + }, + "bank-24": { + "x": 0, + "y": 312, + "width": 24, + "height": 24 + }, + "bank-18": { + "x": 24, + "y": 312, + "width": 18, + "height": 18 + }, + "bank-12": { + "x": 42, + "y": 312, + "width": 12, + "height": 12 + }, + "grocery-24": { + "x": 54, + "y": 312, + "width": 24, + "height": 24 + }, + "grocery-18": { + "x": 78, + "y": 312, + "width": 18, + "height": 18 + }, + "grocery-12": { + "x": 96, + "y": 312, + "width": 12, + "height": 12 + }, + "cinema-24": { + "x": 108, + "y": 312, + "width": 24, + "height": 24 + }, + "cinema-18": { + "x": 132, + "y": 312, + "width": 18, + "height": 18 + }, + "cinema-12": { + "x": 150, + "y": 312, + "width": 12, + "height": 12 + }, + "pharmacy-24": { + "x": 162, + "y": 312, + "width": 24, + "height": 24 + }, + "pharmacy-18": { + "x": 186, + "y": 312, + "width": 18, + "height": 18 + }, + "pharmacy-12": { + "x": 204, + "y": 312, + "width": 12, + "height": 12 + }, + "hospital-24": { + "x": 216, + "y": 312, + "width": 24, + "height": 24 + }, + "hospital-18": { + "x": 240, + "y": 312, + "width": 18, + "height": 18 + }, + "hospital-12": { + "x": 258, + "y": 312, + "width": 12, + "height": 12 + }, + "danger-24": { + "x": 0, + "y": 336, + "width": 24, + "height": 24 + }, + "danger-18": { + "x": 24, + "y": 336, + "width": 18, + "height": 18 + }, + "danger-12": { + "x": 42, + "y": 336, + "width": 12, + "height": 12 + }, + "industrial-24": { + "x": 54, + "y": 336, + "width": 24, + "height": 24 + }, + "industrial-18": { + "x": 78, + "y": 336, + "width": 18, + "height": 18 + }, + "industrial-12": { + "x": 96, + "y": 336, + "width": 12, + "height": 12 + }, + "warehouse-24": { + "x": 108, + "y": 336, + "width": 24, + "height": 24 + }, + "warehouse-18": { + "x": 132, + "y": 336, + "width": 18, + "height": 18 + }, + "warehouse-12": { + "x": 150, + "y": 336, + "width": 12, + "height": 12 + }, + "commercial-24": { + "x": 162, + "y": 336, + "width": 24, + "height": 24 + }, + "commercial-18": { + "x": 186, + "y": 336, + "width": 18, + "height": 18 + }, + "commercial-12": { + "x": 204, + "y": 336, + "width": 12, + "height": 12 + }, + "building-24": { + "x": 216, + "y": 336, + "width": 24, + "height": 24 + }, + "building-18": { + "x": 240, + "y": 336, + "width": 18, + "height": 18 + }, + "building-12": { + "x": 258, + "y": 336, + "width": 12, + "height": 12 + }, + "place-of-worship-24": { + "x": 0, + "y": 360, + "width": 24, + "height": 24 + }, + "place-of-worship-18": { + "x": 24, + "y": 360, + "width": 18, + "height": 18 + }, + "place-of-worship-12": { + "x": 42, + "y": 360, + "width": 12, + "height": 12 + }, + "alcohol-shop-24": { + "x": 54, + "y": 360, + "width": 24, + "height": 24 + }, + "alcohol-shop-18": { + "x": 78, + "y": 360, + "width": 18, + "height": 18 + }, + "alcohol-shop-12": { + "x": 96, + "y": 360, + "width": 12, + "height": 12 + }, + "logging-24": { + "x": 108, + "y": 360, + "width": 24, + "height": 24 + }, + "logging-18": { + "x": 132, + "y": 360, + "width": 18, + "height": 18 + }, + "logging-12": { + "x": 150, + "y": 360, + "width": 12, + "height": 12 + }, + "oil-well-24": { + "x": 162, + "y": 360, + "width": 24, + "height": 24 + }, + "oil-well-18": { + "x": 186, + "y": 360, + "width": 18, + "height": 18 + }, + "oil-well-12": { + "x": 204, + "y": 360, + "width": 12, + "height": 12 + }, + "slaughterhouse-24": { + "x": 216, + "y": 360, + "width": 24, + "height": 24 + }, + "slaughterhouse-18": { + "x": 240, + "y": 360, + "width": 18, + "height": 18 + }, + "slaughterhouse-12": { + "x": 258, + "y": 360, + "width": 12, + "height": 12 + }, + "dam-24": { + "x": 0, + "y": 384, + "width": 24, + "height": 24 + }, + "dam-18": { + "x": 24, + "y": 384, + "width": 18, + "height": 18 + }, + "dam-12": { + "x": 42, + "y": 384, + "width": 12, + "height": 12 + }, + "water-24": { + "x": 54, + "y": 384, + "width": 24, + "height": 24 + }, + "water-18": { + "x": 78, + "y": 384, + "width": 18, + "height": 18 + }, + "water-12": { + "x": 96, + "y": 384, + "width": 12, + "height": 12 + }, + "wetland-24": { + "x": 108, + "y": 384, + "width": 24, + "height": 24 + }, + "wetland-18": { + "x": 132, + "y": 384, + "width": 18, + "height": 18 + }, + "wetland-12": { + "x": 150, + "y": 384, + "width": 12, + "height": 12 + }, + "disability-24": { + "x": 162, + "y": 384, + "width": 24, + "height": 24 + }, + "disability-18": { + "x": 186, + "y": 384, + "width": 18, + "height": 18 + }, + "disability-12": { + "x": 204, + "y": 384, + "width": 12, + "height": 12 + }, + "telephone-24": { + "x": 216, + "y": 384, + "width": 24, + "height": 24 + }, + "telephone-18": { + "x": 240, + "y": 384, + "width": 18, + "height": 18 + }, + "telephone-12": { + "x": 258, + "y": 384, + "width": 12, + "height": 12 + }, + "emergency-telephone-24": { + "x": 0, + "y": 408, + "width": 24, + "height": 24 + }, + "emergency-telephone-18": { + "x": 24, + "y": 408, + "width": 18, + "height": 18 + }, + "emergency-telephone-12": { + "x": 42, + "y": 408, + "width": 12, + "height": 12 + }, + "toilets-24": { + "x": 54, + "y": 408, + "width": 24, + "height": 24 + }, + "toilets-18": { + "x": 78, + "y": 408, + "width": 18, + "height": 18 + }, + "toilets-12": { + "x": 96, + "y": 408, + "width": 12, + "height": 12 + }, + "waste-basket-24": { + "x": 108, + "y": 408, + "width": 24, + "height": 24 + }, + "waste-basket-18": { + "x": 132, + "y": 408, + "width": 18, + "height": 18 + }, + "waste-basket-12": { + "x": 150, + "y": 408, + "width": 12, + "height": 12 + }, + "music-24": { + "x": 162, + "y": 408, + "width": 24, + "height": 24 + }, + "music-18": { + "x": 186, + "y": 408, + "width": 18, + "height": 18 + }, + "music-12": { + "x": 204, + "y": 408, + "width": 12, + "height": 12 + }, + "land-use-24": { + "x": 216, + "y": 408, + "width": 24, + "height": 24 + }, + "land-use-18": { + "x": 240, + "y": 408, + "width": 18, + "height": 18 + }, + "land-use-12": { + "x": 258, + "y": 408, + "width": 12, + "height": 12 + }, + "city-24": { + "x": 0, + "y": 432, + "width": 24, + "height": 24 + }, + "city-18": { + "x": 24, + "y": 432, + "width": 18, + "height": 18 + }, + "city-12": { + "x": 42, + "y": 432, + "width": 12, + "height": 12 + }, + "town-24": { + "x": 54, + "y": 432, + "width": 24, + "height": 24 + }, + "town-18": { + "x": 78, + "y": 432, + "width": 18, + "height": 18 + }, + "town-12": { + "x": 96, + "y": 432, + "width": 12, + "height": 12 + }, + "village-24": { + "x": 108, + "y": 432, + "width": 24, + "height": 24 + }, + "village-18": { + "x": 132, + "y": 432, + "width": 18, + "height": 18 + }, + "village-12": { + "x": 150, + "y": 432, + "width": 12, + "height": 12 + }, + "farm-24": { + "x": 162, + "y": 432, + "width": 24, + "height": 24 + }, + "farm-18": { + "x": 186, + "y": 432, + "width": 18, + "height": 18 + }, + "farm-12": { + "x": 204, + "y": 432, + "width": 12, + "height": 12 + }, + "bakery-24": { + "x": 216, + "y": 432, + "width": 24, + "height": 24 + }, + "bakery-18": { + "x": 240, + "y": 432, + "width": 18, + "height": 18 + }, + "bakery-12": { + "x": 258, + "y": 432, + "width": 12, + "height": 12 + }, + "dog-park-24": { + "x": 0, + "y": 456, + "width": 24, + "height": 24 + }, + "dog-park-18": { + "x": 24, + "y": 456, + "width": 18, + "height": 18 + }, + "dog-park-12": { + "x": 42, + "y": 456, + "width": 12, + "height": 12 + }, + "lighthouse-24": { + "x": 54, + "y": 456, + "width": 24, + "height": 24 + }, + "lighthouse-18": { + "x": 78, + "y": 456, + "width": 18, + "height": 18 + }, + "lighthouse-12": { + "x": 96, + "y": 456, + "width": 12, + "height": 12 + }, + "clothing-store-24": { + "x": 108, + "y": 456, + "width": 24, + "height": 24 + }, + "clothing-store-18": { + "x": 132, + "y": 456, + "width": 18, + "height": 18 + }, + "clothing-store-12": { + "x": 150, + "y": 456, + "width": 12, + "height": 12 + }, + "polling-place-24": { + "x": 162, + "y": 456, + "width": 24, + "height": 24 + }, + "polling-place-18": { + "x": 186, + "y": 456, + "width": 18, + "height": 18 + }, + "polling-place-12": { + "x": 204, + "y": 456, + "width": 12, + "height": 12 + }, + "playground-24": { + "x": 216, + "y": 456, + "width": 24, + "height": 24 + }, + "playground-18": { + "x": 240, + "y": 456, + "width": 18, + "height": 18 + }, + "playground-12": { + "x": 258, + "y": 456, + "width": 12, + "height": 12 + }, + "entrance-24": { + "x": 0, + "y": 480, + "width": 24, + "height": 24 + }, + "entrance-18": { + "x": 24, + "y": 480, + "width": 18, + "height": 18 + }, + "entrance-12": { + "x": 42, + "y": 480, + "width": 12, + "height": 12 + }, + "heart-24": { + "x": 54, + "y": 480, + "width": 24, + "height": 24 + }, + "heart-18": { + "x": 78, + "y": 480, + "width": 18, + "height": 18 + }, + "heart-12": { + "x": 96, + "y": 480, + "width": 12, + "height": 12 + }, + "london-underground-24": { + "x": 108, + "y": 480, + "width": 24, + "height": 24 + }, + "london-underground-18": { + "x": 132, + "y": 480, + "width": 18, + "height": 18 + }, + "london-underground-12": { + "x": 150, + "y": 480, + "width": 12, + "height": 12 + }, + "minefield-24": { + "x": 162, + "y": 480, + "width": 24, + "height": 24 + }, + "minefield-18": { + "x": 186, + "y": 480, + "width": 18, + "height": 18 + }, + "minefield-12": { + "x": 204, + "y": 480, + "width": 12, + "height": 12 + }, + "rail-underground-24": { + "x": 216, + "y": 480, + "width": 24, + "height": 24 + }, + "rail-underground-18": { + "x": 240, + "y": 480, + "width": 18, + "height": 18 + }, + "rail-underground-12": { + "x": 258, + "y": 480, + "width": 12, + "height": 12 + }, + "rail-above-24": { + "x": 0, + "y": 504, + "width": 24, + "height": 24 + }, + "rail-above-18": { + "x": 24, + "y": 504, + "width": 18, + "height": 18 + }, + "rail-above-12": { + "x": 42, + "y": 504, + "width": 12, + "height": 12 + }, + "camera-24": { + "x": 54, + "y": 504, + "width": 24, + "height": 24 + }, + "camera-18": { + "x": 78, + "y": 504, + "width": 18, + "height": 18 + }, + "camera-12": { + "x": 96, + "y": 504, + "width": 12, + "height": 12 + }, + "laundry-24": { + "x": 108, + "y": 504, + "width": 24, + "height": 24 + }, + "laundry-18": { + "x": 132, + "y": 504, + "width": 18, + "height": 18 + }, + "laundry-12": { + "x": 150, + "y": 504, + "width": 12, + "height": 12 + }, + "car-24": { + "x": 162, + "y": 504, + "width": 24, + "height": 24 + }, + "car-18": { + "x": 186, + "y": 504, + "width": 18, + "height": 18 + }, + "car-12": { + "x": 204, + "y": 504, + "width": 12, + "height": 12 + }, + "suitcase-24": { + "x": 216, + "y": 504, + "width": 24, + "height": 24 + }, + "suitcase-18": { + "x": 240, + "y": 504, + "width": 18, + "height": 18 + }, + "suitcase-12": { + "x": 258, + "y": 504, + "width": 12, + "height": 12 + }, + "hairdresser-24": { + "x": 0, + "y": 528, + "width": 24, + "height": 24 + }, + "hairdresser-18": { + "x": 24, + "y": 528, + "width": 18, + "height": 18 + }, + "hairdresser-12": { + "x": 42, + "y": 528, + "width": 12, + "height": 12 + }, + "chemist-24": { + "x": 54, + "y": 528, + "width": 24, + "height": 24 + }, + "chemist-18": { + "x": 78, + "y": 528, + "width": 18, + "height": 18 + }, + "chemist-12": { + "x": 96, + "y": 528, + "width": 12, + "height": 12 + }, + "mobilephone-24": { + "x": 108, + "y": 528, + "width": 24, + "height": 24 + }, + "mobilephone-18": { + "x": 132, + "y": 528, + "width": 18, + "height": 18 + }, + "mobilephone-12": { + "x": 150, + "y": 528, + "width": 12, + "height": 12 + }, + "scooter-24": { + "x": 162, + "y": 528, + "width": 24, + "height": 24 + }, + "scooter-18": { + "x": 186, + "y": 528, + "width": 18, + "height": 18 + }, + "scooter-12": { + "x": 204, + "y": 528, + "width": 12, + "height": 12 + }, + "gift-24": { + "x": 216, + "y": 528, + "width": 24, + "height": 24 + }, + "gift-18": { + "x": 240, + "y": 528, + "width": 18, + "height": 18 + }, + "gift-12": { + "x": 258, + "y": 528, + "width": 12, + "height": 12 + }, + "ice-cream-24": { + "x": 0, + "y": 552, + "width": 24, + "height": 24 + }, + "ice-cream-18": { + "x": 24, + "y": 552, + "width": 18, + "height": 18 + }, + "ice-cream-12": { + "x": 42, + "y": 552, + "width": 12, + "height": 12 + } + }, "locales": [ "af", "sq", @@ -52832,7 +52875,6 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "gl", "de", "el", - "hi-IN", "hu", "is", "id", @@ -52848,7 +52890,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "pl", "pt", "pt-BR", - "ro-RO", + "ro", "ru", "sc", "sr", @@ -53009,7 +53051,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "not_eligible": "These features can't be merged.", "not_adjacent": "These lines can't be merged because they aren't connected.", "restriction": "These lines can't be merged because at least one is a member of a \"{relation}\" relation.", - "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded." + "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded.", + "conflicting_tags": "These lines can't be merged because some of their tags have conflicting values." }, "move": { "title": "Move", @@ -53092,7 +53135,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "zoom_in_edit": "Zoom in to Edit", "logout": "logout", "loading_auth": "Connecting to OpenStreetMap...", - "report_a_bug": "report a bug", + "report_a_bug": "Report a bug", + "help_translate": "Help translate", "feature_info": { "hidden_warning": "{count} hidden features", "hidden_details": "These features are currently hidden: {details}" @@ -54289,6 +54333,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "grade5": "Soft: soil/sand/grass" } }, + "traffic_signals": { + "label": "Type" + }, "trail_visibility": { "label": "Trail Visibility", "placeholder": "Excellent, Good, Bad...", @@ -54589,6 +54636,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Marketplace", "terms": "" }, + "amenity/motorcycle_parking": { + "name": "Motorcycle Parking", + "terms": "" + }, "amenity/nightclub": { "name": "Nightclub", "terms": "disco*,night club,dancing,dance club" @@ -54858,8 +54909,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "terms": "" }, "building/detached": { - "name": "Detached Home", - "terms": "" + "name": "Detached House", + "terms": "home,single,family,residence,dwelling" }, "building/dormitory": { "name": "Dormitory", @@ -54891,7 +54942,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "building/house": { "name": "House", - "terms": "" + "terms": "home,family,residence,dwelling" }, "building/hut": { "name": "Hut", @@ -54925,6 +54976,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "School Building", "terms": "academy,elementary school,middle school,high school" }, + "building/semidetached_house": { + "name": "Semi-Detached House", + "terms": "home,double,duplex,twin,family,residence,dwelling" + }, "building/shed": { "name": "Shed", "terms": "" @@ -54939,7 +54994,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "building/terrace": { "name": "Row Houses", - "terms": "" + "terms": "home,terrace,brownstone,family,residence,dwelling" }, "building/train_station": { "name": "Train Station", @@ -55418,8 +55473,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "terms": "" }, "landuse/allotments": { - "name": "Allotments", - "terms": "" + "name": "Community Garden", + "terms": "allotment,garden" }, "landuse/basin": { "name": "Basin", @@ -55573,6 +55628,14 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Basketball Court", "terms": "" }, + "leisure/pitch/rugby_league": { + "name": "Rugby League Field", + "terms": "" + }, + "leisure/pitch/rugby_union": { + "name": "Rugby Union Field", + "terms": "" + }, "leisure/pitch/skateboard": { "name": "Skate Park", "terms": "" @@ -55713,10 +55776,30 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Bunker", "terms": "" }, + "military/checkpoint": { + "name": "Checkpoint", + "terms": "" + }, + "military/danger_area": { + "name": "Danger Area", + "terms": "" + }, + "military/naval_base": { + "name": "Naval Base", + "terms": "" + }, + "military/obstacle_course": { + "name": "Obstacle Course", + "terms": "" + }, "military/range": { "name": "Military Range", "terms": "" }, + "military/training_area": { + "name": "Training area", + "terms": "" + }, "natural": { "name": "Natural", "terms": ""