X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/76d8bed5d12fc10a785366bfa1a411aa4e0c39d8..3e405040eaa0f0e086ea22ff3934a2adfcb851b6:/vendor/assets/iD/iD.js?ds=sidebyside diff --git a/vendor/assets/iD/iD.js b/vendor/assets/iD/iD.js index d4a8ffdef..a19dc713e 100644 --- a/vendor/assets/iD/iD.js +++ b/vendor/assets/iD/iD.js @@ -175,7 +175,7 @@ })(this); d3 = (function(){ - var d3 = {version: "3.2.7"}; // semver + var d3 = {version: "3.3.8"}; // semver d3.ascending = function(a, b) { return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; }; @@ -313,12 +313,15 @@ d3.shuffle = function(array) { return array; }; d3.permute = function(array, indexes) { - var permutes = [], - i = -1, - n = indexes.length; - while (++i < n) permutes[i] = array[indexes[i]]; + var i = indexes.length, permutes = new Array(i); + while (i--) permutes[i] = array[indexes[i]]; return permutes; }; +d3.pairs = function(array) { + var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n); + while (i < n) pairs[i] = [p0 = p1, p1 = array[++i]]; + return pairs; +}; d3.zip = function() { if (!(n = arguments.length)) return []; @@ -353,8 +356,28 @@ d3.entries = function(map) { return entries; }; d3.merge = function(arrays) { - return Array.prototype.concat.apply([], arrays); + var n = arrays.length, + m, + i = -1, + j = 0, + merged, + array; + + while (++i < n) j += arrays[i].length; + merged = new Array(j); + + while (--n >= 0) { + array = arrays[n]; + m = array.length; + while (--m >= 0) { + merged[--j] = array[m]; + } + } + + return merged; }; +var abs = Math.abs; + d3.range = function(start, stop, step) { if (arguments.length < 3) { step = 1; @@ -365,7 +388,7 @@ d3.range = function(start, stop, step) { } if ((stop - start) / step === Infinity) throw new Error("infinite range"); var range = [], - k = d3_range_integerScale(Math.abs(step)), + k = d3_range_integerScale(abs(step)), i = -1, j; start *= k, stop *= k, step *= k; @@ -394,7 +417,8 @@ function d3_class(ctor, properties) { d3.map = function(object) { var map = new d3_Map; - for (var key in object) map.set(key, object[key]); + if (object instanceof d3_Map) object.forEach(function(key, value) { map.set(key, value); }); + else for (var key in object) map.set(key, object[key]); return map; }; @@ -538,8 +562,8 @@ d3.nest = function() { }; d3.set = function(array) { - var set = new d3_Set(); - if (array) for (var i = 0; i < array.length; i++) set.add(array[i]); + var set = new d3_Set; + if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]); return set; }; @@ -573,9 +597,23 @@ d3_class(d3_Set, { } }); d3.behavior = {}; +var d3_arraySlice = [].slice, + d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists + var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; + +// Redefine d3_array if the browser doesnât support slice-based conversion. +try { + d3_array(d3_documentElement.childNodes)[0].nodeType; +} catch(e) { + d3_array = function(list) { + var i = list.length, array = new Array(i); + while (i--) array[i] = list[i]; + return array; + }; +} // Copies a variable number of methods from source to target. d3.rebind = function(target, source) { var i = 1, n = arguments.length, method; @@ -603,24 +641,6 @@ function d3_vendorSymbol(object, name) { } var d3_vendorPrefixes = ["webkit", "ms", "moz", "Moz", "o", "O"]; - -var d3_array = d3_arraySlice; // conversion for NodeLists - -function d3_arrayCopy(pseudoarray) { - var i = -1, n = pseudoarray.length, array = []; - while (++i < n) array.push(pseudoarray[i]); - return array; -} - -function d3_arraySlice(pseudoarray) { - return Array.prototype.slice.call(pseudoarray); -} - -try { - d3_array(d3_documentElement.childNodes)[0].nodeType; -} catch(e) { - d3_array = d3_arrayCopy; -} function d3_noop() {} d3.dispatch = function() { @@ -1118,15 +1138,15 @@ d3_selectionPrototype.append = function(name) { function d3_selection_creator(name) { return typeof name === "function" ? name - : (name = d3.ns.qualify(name)).local ? function() { return d3_document.createElementNS(name.space, name.local); } - : function() { return d3_document.createElementNS(this.namespaceURI, name); }; + : (name = d3.ns.qualify(name)).local ? function() { return this.ownerDocument.createElementNS(name.space, name.local); } + : function() { return this.ownerDocument.createElementNS(this.namespaceURI, name); }; } d3_selectionPrototype.insert = function(name, before) { name = d3_selection_creator(name); before = d3_selection_selector(before); return this.select(function() { - return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments)); + return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null); }); }; @@ -1310,7 +1330,7 @@ d3_selectionPrototype.sort = function(comparator) { function d3_selection_sortComparator(comparator) { if (!arguments.length) comparator = d3.ascending; return function(a, b) { - return (!a - !b) || comparator(a.__data__, b.__data__); + return a && b ? comparator(a.__data__, b.__data__) : !a - !b; }; } @@ -1415,6 +1435,8 @@ function d3_selection_enterInsertBefore(enter) { }; } +// import "../transition/transition"; + d3_selectionPrototype.transition = function() { var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], @@ -1432,6 +1454,16 @@ d3_selectionPrototype.transition = function() { return d3_transition(subgroups, id); }; +// import "../transition/transition"; + +d3_selectionPrototype.interrupt = function() { + return this.each(d3_selection_interrupt); +}; + +function d3_selection_interrupt() { + var lock = this.__transition__; + if (lock) ++lock.active; +} // TODO fast singleton implementation? d3.select = function(node) { @@ -1578,6 +1610,7 @@ d3.mouse = function(container) { var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; function d3_mousePoint(container, e) { + if (e.changedTouches) e = e.changedTouches[0]; var svg = container.ownerSVGElement || container; if (svg.createSVGPoint) { var point = svg.createSVGPoint(); @@ -1594,13 +1627,8 @@ function d3_mousePoint(container, e) { d3_mouse_bug44083 = !(ctm.f || ctm.e); svg.remove(); } - if (d3_mouse_bug44083) { - point.x = e.pageX; - point.y = e.pageY; - } else { - point.x = e.clientX; - point.y = e.clientY; - } + if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; + else point.x = e.clientX, point.y = e.clientY; point = point.matrixTransform(container.getScreenCTM().inverse()); return [point.x, point.y]; } @@ -1616,47 +1644,180 @@ d3.touches = function(container, touches) { return point; }) : []; }; +var Ï = Math.PI, + Ï = 2 * Ï, + halfÏ = Ï / 2, + ε = 1e-6, + ε2 = ε * ε, + d3_radians = Ï / 180, + d3_degrees = 180 / Ï; + +function d3_sgn(x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; +} + +function d3_acos(x) { + return x > 1 ? 0 : x < -1 ? Ï : Math.acos(x); +} + +function d3_asin(x) { + return x > 1 ? halfÏ : x < -1 ? -halfÏ : Math.asin(x); +} + +function d3_sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; +} + +function d3_cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; +} + +function d3_tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); +} + +function d3_haversin(x) { + return (x = Math.sin(x / 2)) * x; +} + +var Ï = Math.SQRT2, + Ï2 = 2, + Ï4 = 4; + +// p0 = [ux0, uy0, w0] +// p1 = [ux1, uy1, w1] +d3.interpolateZoom = function(p0, p1) { + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], + ux1 = p1[0], uy1 = p1[1], w1 = p1[2]; + + var dx = ux1 - ux0, + dy = uy1 - uy0, + d2 = dx * dx + dy * dy, + d1 = Math.sqrt(d2), + b0 = (w1 * w1 - w0 * w0 + Ï4 * d2) / (2 * w0 * Ï2 * d1), + b1 = (w1 * w1 - w0 * w0 - Ï4 * d2) / (2 * w1 * Ï2 * d1), + r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), + r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), + dr = r1 - r0, + S = (dr || Math.log(w1 / w0)) / Ï; + + function interpolate(t) { + var s = t * S; + if (dr) { + // General case. + var coshr0 = d3_cosh(r0), + u = w0 / (Ï2 * d1) * (coshr0 * d3_tanh(Ï * s + r0) - d3_sinh(r0)); + return [ + ux0 + u * dx, + uy0 + u * dy, + w0 * coshr0 / d3_cosh(Ï * s + r0) + ]; + } + // Special case for u0 ~= u1. + return [ + ux0 + t * dx, + uy0 + t * dy, + w0 * Math.exp(Ï * s) + ]; + } + + interpolate.duration = S * 1000; + + return interpolate; +}; d3.behavior.zoom = function() { - var translate = [0, 0], + var view = {x: 0, y: 0, k: 1}, translate0, // translate when we started zooming (to avoid drift) - scale = 1, + center, // desired position of translate0 after zooming + size = [960, 500], // viewport size; required for zoom interpolation scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", - event = d3_eventDispatch(zoom, "zoom"), + mousewheelTimer, + touchstart = "touchstart.zoom", + touchtime, // time of last touchstart (to detect double-tap) + event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, - y1, - touchtime; // time of last touchstart (to detect double-tap) + y1; - function zoom() { - this.on(mousedown, mousedowned) + function zoom(g) { + g .on(mousedown, mousedowned) .on(d3_behavior_zoomWheel + ".zoom", mousewheeled) .on(mousemove, mousewheelreset) .on("dblclick.zoom", dblclicked) - .on("touchstart.zoom", touchstarted); + .on(touchstart, touchstarted); } - zoom.translate = function(x) { - if (!arguments.length) return translate; - translate = x.map(Number); + zoom.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), + view1 = view; + if (d3_transitionInheritId) { + d3.select(this).transition() + .each("start.zoom", function() { + view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state + zoomstarted(event_); + }) + .tween("zoom:zoom", function() { + var dx = size[0], + dy = size[1], + cx = dx / 2, + cy = dy / 2, + i = d3.interpolateZoom( + [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k], + [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k] + ); + return function(t) { + var l = i(t), k = dx / l[2]; + this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k}; + zoomed(event_); + }; + }) + .each("end.zoom", function() { + zoomended(event_); + }); + } else { + this.__chart__ = view; + zoomstarted(event_); + zoomed(event_); + zoomended(event_); + } + }); + } + + zoom.translate = function(_) { + if (!arguments.length) return [view.x, view.y]; + view = {x: +_[0], y: +_[1], k: view.k}; // copy-on-write rescale(); return zoom; }; - zoom.scale = function(x) { - if (!arguments.length) return scale; - scale = +x; + zoom.scale = function(_) { + if (!arguments.length) return view.k; + view = {x: view.x, y: view.y, k: +_}; // copy-on-write rescale(); return zoom; }; - zoom.scaleExtent = function(x) { + zoom.scaleExtent = function(_) { if (!arguments.length) return scaleExtent; - scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number); + scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]]; + return zoom; + }; + + zoom.center = function(_) { + if (!arguments.length) return center; + center = _ && [+_[0], +_[1]]; + return zoom; + }; + + zoom.size = function(_) { + if (!arguments.length) return size; + size = _ && [+_[0], +_[1]]; return zoom; }; @@ -1664,8 +1825,7 @@ d3.behavior.zoom = function() { if (!arguments.length) return x1; x1 = z; x0 = z.copy(); - translate = [0, 0]; - scale = 1; + view = {x: 0, y: 0, k: 1}; // copy-on-write return zoom; }; @@ -1673,37 +1833,44 @@ d3.behavior.zoom = function() { if (!arguments.length) return y1; y1 = z; y0 = z.copy(); - translate = [0, 0]; - scale = 1; + view = {x: 0, y: 0, k: 1}; // copy-on-write return zoom; }; function location(p) { - return [(p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale]; + return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k]; } function point(l) { - return [l[0] * scale + translate[0], l[1] * scale + translate[1]]; + return [l[0] * view.k + view.x, l[1] * view.k + view.y]; } function scaleTo(s) { - scale = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); + view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); } function translateTo(p, l) { l = point(l); - translate[0] += p[0] - l[0]; - translate[1] += p[1] - l[1]; + view.x += p[0] - l[0]; + view.y += p[1] - l[1]; } function rescale() { - if (x1) x1.domain(x0.range().map(function(x) { return (x - translate[0]) / scale; }).map(x0.invert)); - if (y1) y1.domain(y0.range().map(function(y) { return (y - translate[1]) / scale; }).map(y0.invert)); + if (x1) x1.domain(x0.range().map(function(x) { return (x - view.x) / view.k; }).map(x0.invert)); + if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert)); + } + + function zoomstarted(event) { + event({type: "zoomstart"}); } - function dispatch(event) { + function zoomed(event) { rescale(); - event({type: "zoom", scale: scale, translate: translate}); + event({type: "zoom", scale: view.k, translate: [view.x, view.y]}); + } + + function zoomended(event) { + event({type: "zoomend"}); } function mousedowned() { @@ -1715,62 +1882,92 @@ d3.behavior.zoom = function() { l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt.call(target); + zoomstarted(event_); + function moved() { dragged = 1; translateTo(d3.mouse(target), l); - dispatch(event_); + zoomed(event_); } function ended() { w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null); dragRestore(dragged && d3.event.target === eventTarget); + zoomended(event_); } } + // These closures persist for as long as at least one touch is active. function touchstarted() { var target = this, event_ = event.of(target, arguments), - touches = d3.touches(target), - locations = {}, + locations0 = {}, // touchstart locations distance0 = 0, // distance² between initial touches - scale0 = scale, // scale when we started touching - now = Date.now(), - name = "zoom-" + d3.event.changedTouches[0].identifier, - touchmove = "touchmove." + name, - touchend = "touchend." + name, + scale0, // scale when we started touching + eventId = d3.event.changedTouches[0].identifier, + touchmove = "touchmove.zoom-" + eventId, + touchend = "touchend.zoom-" + eventId, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), - t = d3.select(target).on(mousedown, null), // prevent duplicate events + t = d3.select(target).on(mousedown, null).on(touchstart, started), // prevent duplicate events dragRestore = d3_event_dragSuppress(); - touches.forEach(function(t) { locations[t.identifier] = location(t); }); + d3_selection_interrupt.call(target); + started(); + zoomstarted(event_); + + // Updates locations of any touches in locations0. + function relocate() { + var touches = d3.touches(target); + scale0 = view.k; + touches.forEach(function(t) { + if (t.identifier in locations0) locations0[t.identifier] = location(t); + }); + return touches; + } - if (touches.length === 1) { - if (now - touchtime < 500) { // dbltap - var p = touches[0], l = location(touches[0]); - scaleTo(scale * 2); - translateTo(p, l); - d3_eventPreventDefault(); - dispatch(event_); + // Temporarily override touchstart while gesture is active. + function started() { + // Only track touches started on the target element. + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + locations0[changed[i].identifier] = null; + } + + var touches = relocate(), + now = Date.now(); + + if (touches.length === 1) { + if (now - touchtime < 500) { // dbltap + var p = touches[0], l = locations0[p.identifier]; + scaleTo(view.k * 2); + translateTo(p, l); + d3_eventPreventDefault(); + zoomed(event_); + } + touchtime = now; + } else if (touches.length > 1) { + var p = touches[0], q = touches[1], + dx = p[0] - q[0], dy = p[1] - q[1]; + distance0 = dx * dx + dy * dy; } - touchtime = now; - } else if (touches.length > 1) { - var p = touches[0], q = touches[1], - dx = p[0] - q[0], dy = p[1] - q[1]; - distance0 = dx * dx + dy * dy; } function moved() { var touches = d3.touches(target), - p0 = touches[0], - l0 = locations[p0.identifier]; - - if (p1 = touches[1]) { - var p1, l1 = locations[p1.identifier], - scale1 = d3.event.scale; - if (scale1 == null) { - var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1; - scale1 = distance0 && Math.sqrt(distance1 / distance0); + p0, l0, + p1, l1; + for (var i = 0, n = touches.length; i < n; ++i, l1 = null) { + p1 = touches[i]; + if (l1 = locations0[p1.identifier]) { + if (l0) break; + p0 = p1, l0 = l1; } + } + + if (l1) { + var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, + scale1 = distance0 && Math.sqrt(distance1 / distance0); p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; scaleTo(scale1 * scale0); @@ -1778,22 +1975,42 @@ d3.behavior.zoom = function() { touchtime = null; translateTo(p0, l0); - dispatch(event_); + zoomed(event_); } function ended() { + // If there are any globally-active touches remaining, remove the ended + // touches from locations0. + if (d3.event.touches.length) { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + delete locations0[changed[i].identifier]; + } + // If locations0 is not empty, then relocate and continue listening for + // touchmove and touchend. + for (var identifier in locations0) { + return void relocate(); // locations may have detached due to rotation + } + } + // Otherwise, remove touchmove and touchend listeners. w.on(touchmove, null).on(touchend, null); - t.on(mousedown, mousedowned); + t.on(mousedown, mousedowned).on(touchstart, touchstarted); dragRestore(); + zoomended(event_); } } function mousewheeled() { + var event_ = event.of(this, arguments); + if (mousewheelTimer) clearTimeout(mousewheelTimer); + else d3_selection_interrupt.call(this), zoomstarted(event_); + mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(event_); }, 50); d3_eventPreventDefault(); - if (!translate0) translate0 = location(d3.mouse(this)); - scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * scale); - translateTo(d3.mouse(this), translate0); - dispatch(event.of(this, arguments)); + var point = center || d3.mouse(this); + if (!translate0) translate0 = location(point); + scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k); + translateTo(point, translate0); + zoomed(event_); } function mousewheelreset() { @@ -1801,10 +2018,15 @@ d3.behavior.zoom = function() { } function dblclicked() { - var p = d3.mouse(this), l = location(p), k = Math.log(scale) / Math.LN2; + var event_ = event.of(this, arguments), + p = d3.mouse(this), + l = location(p), + k = Math.log(view.k) / Math.LN2; + zoomstarted(event_); scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1)); translateTo(p, l); - dispatch(event.of(this, arguments)); + zoomed(event_); + zoomended(event_); } return d3.rebind(zoom, event, "on"); @@ -1837,8 +2059,8 @@ d3.timer = function(callback, delay, then) { if (n < 3) then = Date.now(); // Add the callback to the tail of the queue. - var time = then + delay, timer = {callback: callback, time: time, next: null}; - if (d3_timer_queueTail) d3_timer_queueTail.next = timer; + var time = then + delay, timer = {c: callback, t: time, f: false, n: null}; + if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer; d3_timer_queueTail = timer; @@ -1870,20 +2092,12 @@ d3.timer.flush = function() { d3_timer_sweep(); }; -function d3_timer_replace(callback, delay, then) { - var n = arguments.length; - if (n < 2) delay = 0; - if (n < 3) then = Date.now(); - d3_timer_active.callback = callback; - d3_timer_active.time = then + delay; -} - function d3_timer_mark() { var now = Date.now(); d3_timer_active = d3_timer_queueHead; while (d3_timer_active) { - if (now >= d3_timer_active.time) d3_timer_active.flush = d3_timer_active.callback(now - d3_timer_active.time); - d3_timer_active = d3_timer_active.next; + if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t); + d3_timer_active = d3_timer_active.n; } return now; } @@ -1895,45 +2109,16 @@ function d3_timer_sweep() { t1 = d3_timer_queueHead, time = Infinity; while (t1) { - if (t1.flush) { - t1 = t0 ? t0.next = t1.next : d3_timer_queueHead = t1.next; + if (t1.f) { + t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n; } else { - if (t1.time < time) time = t1.time; - t1 = (t0 = t1).next; + if (t1.t < time) time = t1.t; + t1 = (t0 = t1).n; } } d3_timer_queueTail = t0; return time; } -var Ï = Math.PI, - ε = 1e-6, - ε2 = ε * ε, - d3_radians = Ï / 180, - d3_degrees = 180 / Ï; - -function d3_sgn(x) { - return x > 0 ? 1 : x < 0 ? -1 : 0; -} - -function d3_acos(x) { - return x > 1 ? 0 : x < -1 ? Ï : Math.acos(x); -} - -function d3_asin(x) { - return x > 1 ? Ï / 2 : x < -1 ? -Ï / 2 : Math.asin(x); -} - -function d3_sinh(x) { - return (Math.exp(x) - Math.exp(-x)) / 2; -} - -function d3_cosh(x) { - return (Math.exp(x) + Math.exp(-x)) / 2; -} - -function d3_haversin(x) { - return (x = Math.sin(x / 2)) * x; -} d3.geo = {}; function d3_identity(d) { return d; @@ -1950,13 +2135,13 @@ function d3_geo_spherical(cartesian) { } function d3_geo_sphericalEqual(a, b) { - return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε; + return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε; } // General spherical polygon clipping algorithm: takes a polygon, cuts it into // visible line segments and rejoins the segments by interpolating along the // clip edge. -function d3_geo_clipPolygon(segments, compare, inside, interpolate, listener) { +function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) { var subject = [], clip = []; @@ -1975,14 +2160,14 @@ function d3_geo_clipPolygon(segments, compare, inside, interpolate, listener) { return; } - var a = {point: p0, points: segment, other: null, visited: false, entry: true, subject: true}, - b = {point: p0, points: [p0], other: a, visited: false, entry: false, subject: false}; - a.other = b; + var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), + b = new d3_geo_clipPolygonIntersection(p0, null, a, false); + a.o = b; subject.push(a); clip.push(b); - a = {point: p1, points: [p1], other: null, visited: false, entry: false, subject: true}; - b = {point: p1, points: [p1], other: a, visited: false, entry: true, subject: false}; - a.other = b; + a = new d3_geo_clipPolygonIntersection(p1, segment, null, false); + b = new d3_geo_clipPolygonIntersection(p1, null, a, true); + a.o = b; subject.push(a); clip.push(b); }); @@ -1991,41 +2176,42 @@ function d3_geo_clipPolygon(segments, compare, inside, interpolate, listener) { d3_geo_clipPolygonLinkCircular(clip); if (!subject.length) return; - if (inside) for (var i = 1, e = !inside(clip[0].point), n = clip.length; i < n; ++i) { - clip[i].entry = (e = !e); + for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) { + clip[i].e = entry = !entry; } var start = subject[0], - current, points, point; while (1) { // Find first unvisited intersection. - current = start; - while (current.visited) if ((current = current.next) === start) return; - points = current.points; + var current = start, + isSubject = true; + while (current.v) if ((current = current.n) === start) return; + points = current.z; listener.lineStart(); do { - current.visited = current.other.visited = true; - if (current.entry) { - if (current.subject) { - for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]); + current.v = current.o.v = true; + if (current.e) { + if (isSubject) { + for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]); } else { - interpolate(current.point, current.next.point, 1, listener); + interpolate(current.x, current.n.x, 1, listener); } - current = current.next; + current = current.n; } else { - if (current.subject) { - points = current.prev.points; - for (var i = points.length; --i >= 0;) listener.point((point = points[i])[0], point[1]); + if (isSubject) { + points = current.p.z; + for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]); } else { - interpolate(current.point, current.prev.point, -1, listener); + interpolate(current.x, current.p.x, -1, listener); } - current = current.prev; + current = current.p; } - current = current.other; - points = current.points; - } while (!current.visited); + current = current.o; + points = current.z; + isSubject = !isSubject; + } while (!current.v); listener.lineEnd(); } } @@ -2037,17 +2223,27 @@ function d3_geo_clipPolygonLinkCircular(array) { a = array[0], b; while (++i < n) { - a.next = b = array[i]; - b.prev = a; + a.n = b = array[i]; + b.p = a; a = b; } - a.next = b = array[0]; - b.prev = a; + a.n = b = array[0]; + b.p = a; } -function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) { - return function(listener) { - var line = clipLine(listener); +function d3_geo_clipPolygonIntersection(point, points, other, entry) { + this.x = point; + this.z = points; + this.o = other; // another intersection + this.e = entry; // is an entry? + this.v = false; // visited + this.n = this.p = null; // next & previous +} + +function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) { + return function(rotate, listener) { + var line = clipLine(listener), + rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]); var clip = { point: point, @@ -2067,9 +2263,10 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) { clip.lineEnd = lineEnd; segments = d3.merge(segments); + var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon); if (segments.length) { - d3_geo_clipPolygon(segments, d3_geo_clipSort, null, interpolate, listener); - } else if (polygonContains(polygon)) { + d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener); + } else if (clipStartInside) { listener.lineStart(); interpolate(null, null, 1, listener); listener.lineEnd(); @@ -2086,8 +2283,14 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) { } }; - function point(λ, Ï) { if (pointVisible(λ, Ï)) listener.point(λ, Ï); } - function pointLine(λ, Ï) { line.point(λ, Ï); } + function point(λ, Ï) { + var point = rotate(λ, Ï); + if (pointVisible(λ = point[0], Ï = point[1])) listener.point(λ, Ï); + } + function pointLine(λ, Ï) { + var point = rotate(λ, Ï); + line.point(point[0], point[1]); + } function lineStart() { clip.point = pointLine; line.lineStart(); } function lineEnd() { clip.point = point; line.lineEnd(); } @@ -2099,8 +2302,9 @@ function d3_geo_clip(pointVisible, clipLine, interpolate, polygonContains) { ring; function pointRing(λ, Ï) { - ringListener.point(λ, Ï); ring.push([λ, Ï]); + var point = rotate(λ, Ï); + ringListener.point(point[0], point[1]); } function ringStart() { @@ -2172,8 +2376,8 @@ function d3_geo_clipBufferListener() { // Intersection points are sorted along the clip edge. For both antimeridian // cutting and circle clipping, the same comparison is used. function d3_geo_clipSort(a, b) { - return ((a = a.point)[0] < 0 ? a[1] - Ï / 2 - ε : Ï / 2 - a[1]) - - ((b = b.point)[0] < 0 ? b[1] - Ï / 2 - ε : Ï / 2 - b[1]); + return ((a = a.x)[0] < 0 ? a[1] - halfÏ - ε : halfÏ - a[1]) + - ((b = b.x)[0] < 0 ? b[1] - halfÏ - ε : halfÏ - b[1]); } // Adds floating point numbers with twice the normal precision. // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and @@ -2239,12 +2443,12 @@ var d3_geo_streamGeometryType = { listener.sphere(); }, Point: function(object, listener) { - var coordinate = object.coordinates; - listener.point(coordinate[0], coordinate[1]); + object = object.coordinates; + listener.point(object[0], object[1], object[2]); }, MultiPoint: function(object, listener) { - var coordinates = object.coordinates, i = -1, n = coordinates.length, coordinate; - while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]); + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]); }, LineString: function(object, listener) { d3_geo_streamLine(object.coordinates, listener, 0); @@ -2269,7 +2473,7 @@ var d3_geo_streamGeometryType = { function d3_geo_streamLine(coordinates, listener, closed) { var i = -1, n = coordinates.length - closed, coordinate; listener.lineStart(); - while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]); + while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]); listener.lineEnd(); } @@ -2394,8 +2598,6 @@ function d3_geo_pointInPolygon(point, polygon) { parallel = point[1], meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0], polarAngle = 0, - polar = false, - southPole = false, winding = 0; d3_geo_areaRingSum.reset(); @@ -2418,12 +2620,11 @@ function d3_geo_pointInPolygon(point, polygon) { sinÏ = Math.sin(Ï), cosÏ = Math.cos(Ï), dλ = λ - λ0, - antimeridian = Math.abs(dλ) > Ï, + antimeridian = abs(dλ) > Ï, k = sinÏ0 * sinÏ; d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosÏ0 * cosÏ + k * Math.cos(dλ))); - if (Math.abs(Ï) < ε) southPole = true; - polarAngle += antimeridian ? dλ + (dλ >= 0 ? 2 : -2) * Ï : dλ; + polarAngle += antimeridian ? dλ + (dλ >= 0 ? Ï : -Ï): dλ; // Are the longitudes either side of the point's meridian, and are the // latitudes smaller than the parallel? @@ -2433,34 +2634,34 @@ function d3_geo_pointInPolygon(point, polygon) { var intersection = d3_geo_cartesianCross(meridianNormal, arc); d3_geo_cartesianNormalize(intersection); var Ïarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); - if (parallel > Ïarc) { + if (parallel > Ïarc || parallel === Ïarc && (arc[0] || arc[1])) { winding += antimeridian ^ dλ >= 0 ? 1 : -1; } } if (!j++) break; λ0 = λ, sinÏ0 = sinÏ, cosÏ0 = cosÏ, point0 = point; } - if (Math.abs(polarAngle) > ε) polar = true; } // First, determine whether the South pole is inside or outside: // // It is inside if: - // * the polygon doesn't wind around it, and its area is negative (counter-clockwise). - // * otherwise, if the polygon winds around it in a clockwise direction. + // * the polygon winds around it in a clockwise direction. + // * the polygon does not (cumulatively) wind around it, but has a negative + // (counter-clockwise) area. // // Second, count the (signed) number of times a segment crosses a meridian // from the point to the South pole. If it is zero, then the point is the // same side as the South pole. - return (!southPole && !polar && d3_geo_areaRingSum < 0 || polarAngle < -ε) ^ (winding & 1); + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1); } var d3_geo_clipAntimeridian = d3_geo_clip( d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, - d3_geo_clipAntimeridianPolygonContains); + [-Ï, -Ï / 2]); // Takes a line and cuts into visible segments. Return values: // 0: there were intersections or the line was empty. @@ -2480,9 +2681,9 @@ function d3_geo_clipAntimeridianLine(listener) { }, point: function(λ1, Ï1) { var sλ1 = λ1 > 0 ? Ï : -Ï, - dλ = Math.abs(λ1 - λ0); - if (Math.abs(dλ - Ï) < ε) { // line crosses a pole - listener.point(λ0, Ï0 = (Ï0 + Ï1) / 2 > 0 ? Ï / 2 : -Ï / 2); + dλ = abs(λ1 - λ0); + if (abs(dλ - Ï) < ε) { // line crosses a pole + listener.point(λ0, Ï0 = (Ï0 + Ï1) / 2 > 0 ? halfÏ : -halfÏ); listener.point(sλ0, Ï0); listener.lineEnd(); listener.lineStart(); @@ -2491,8 +2692,8 @@ function d3_geo_clipAntimeridianLine(listener) { clean = 0; } else if (sλ0 !== sλ1 && dλ >= Ï) { // line crosses antimeridian // handle degeneracies - if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; - if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; + if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; + if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; Ï0 = d3_geo_clipAntimeridianIntersect(λ0, Ï0, λ1, Ï1); listener.point(sλ0, Ï0); listener.lineEnd(); @@ -2516,7 +2717,7 @@ function d3_geo_clipAntimeridianIntersect(λ0, Ï0, λ1, Ï1) { var cosÏ0, cosÏ1, sinλ0_λ1 = Math.sin(λ0 - λ1); - return Math.abs(sinλ0_λ1) > ε + return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(Ï0) * (cosÏ1 = Math.cos(Ï1)) * Math.sin(λ1) - Math.sin(Ï1) * (cosÏ0 = Math.cos(Ï0)) * Math.sin(λ0)) / (cosÏ0 * cosÏ1 * sinλ0_λ1)) @@ -2526,7 +2727,7 @@ function d3_geo_clipAntimeridianIntersect(λ0, Ï0, λ1, Ï1) { function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { var Ï; if (from == null) { - Ï = direction * Ï / 2; + Ï = direction * halfÏ; listener.point(-Ï, Ï); listener.point( 0, Ï); listener.point( Ï, Ï); @@ -2536,8 +2737,8 @@ function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { listener.point(-Ï, -Ï); listener.point(-Ï, 0); listener.point(-Ï, Ï); - } else if (Math.abs(from[0] - to[0]) > ε) { - var s = (from[0] < to[0] ? 1 : -1) * Ï; + } else if (abs(from[0] - to[0]) > ε) { + var s = from[0] < to[0] ? Ï : -Ï; Ï = direction * s / 2; listener.point(-s, Ï); listener.point( 0, Ï); @@ -2547,12 +2748,6 @@ function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { } } -var d3_geo_clipAntimeridianPoint = [-Ï, 0]; - -function d3_geo_clipAntimeridianPolygonContains(polygon) { - return d3_geo_pointInPolygon(d3_geo_clipAntimeridianPoint, polygon); -} - function d3_geo_equirectangular(λ, Ï) { return [λ, Ï]; } @@ -2577,17 +2772,23 @@ d3.geo.rotation = function(rotate) { return forward; }; +function d3_geo_identityRotation(λ, Ï) { + return [λ > Ï ? λ - Ï : λ < -Ï ? λ + Ï : λ, Ï]; +} + +d3_geo_identityRotation.invert = d3_geo_equirectangular; + // Note: |δλ| must be < 2Ï function d3_geo_rotation(δλ, δÏ, δγ) { return δλ ? (Î´Ï || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationÏγ(δÏ, δγ)) : d3_geo_rotationλ(δλ)) : (Î´Ï || δγ ? d3_geo_rotationÏγ(δÏ, δγ) - : d3_geo_equirectangular); + : d3_geo_identityRotation); } function d3_geo_forwardRotationλ(δλ) { return function(λ, Ï) { - return λ += δλ, [λ > Ï ? λ - 2 * Ï : λ < -Ï ? λ + 2 * Ï : λ, Ï]; + return λ += δλ, [λ > Ï ? λ - Ï : λ < -Ï ? λ + Ï : λ, Ï]; }; } @@ -2678,16 +2879,16 @@ function d3_geo_circleInterpolate(radius, precision) { var cr = Math.cos(radius), sr = Math.sin(radius); return function(from, to, direction, listener) { + var step = direction * precision; if (from != null) { from = d3_geo_circleAngle(cr, from); to = d3_geo_circleAngle(cr, to); - if (direction > 0 ? from < to: from > to) from += direction * 2 * Ï; + if (direction > 0 ? from < to: from > to) from += direction * Ï; } else { - from = radius + direction * 2 * Ï; - to = radius; + from = radius + direction * Ï; + to = radius - .5 * step; } - var point; - for (var step = direction * precision, t = from; direction > 0 ? t > to : t < to; t -= step) { + for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) { listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), @@ -2710,11 +2911,10 @@ function d3_geo_circleAngle(cr, point) { function d3_geo_clipCircle(radius) { var cr = Math.cos(radius), smallRadius = cr > 0, - point = [radius, 0], - notHemisphere = Math.abs(cr) > ε, // TODO optimise for this common case + notHemisphere = abs(cr) > ε, // TODO optimise for this common case interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); - return d3_geo_clip(visible, clipLine, interpolate, polygonContains); + return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-Ï, radius - Ï]); function visible(λ, Ï) { return Math.cos(λ) * Math.cos(Ï) > cr; @@ -2848,7 +3048,7 @@ function d3_geo_clipCircle(radius) { z; if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z; var δλ = λ1 - λ0, - polar = Math.abs(δλ - Ï) < ε, + polar = abs(δλ - Ï) < ε, meridian = polar || δλ < ε; if (!polar && Ï1 < Ï0) z = Ï0, Ï0 = Ï1, Ï1 = z; @@ -2856,7 +3056,7 @@ function d3_geo_clipCircle(radius) { // Check that the first point is between a and b. if (meridian ? polar - ? Ï0 + Ï1 > 0 ^ q[1] < (Math.abs(q[0] - λ0) < ε ? Ï0 : Ï1) + ? Ï0 + Ï1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? Ï0 : Ï1) : Ï0 <= q[1] && q[1] <= Ï1 : δλ > Ï ^ (λ0 <= q[0] && q[0] <= λ1)) { var q1 = d3_geo_cartesianScale(u, (-w + t) / uu); @@ -2876,18 +3076,101 @@ function d3_geo_clipCircle(radius) { else if (Ï > r) code |= 8; // above return code; } +} - function polygonContains(polygon) { - return d3_geo_pointInPolygon(point, polygon); - } +// LiangâBarsky line clipping. +function d3_geom_clipLine(x0, y0, x1, y1) { + return function(line) { + var a = line.a, + b = line.b, + ax = a.x, + ay = a.y, + bx = b.x, + by = b.y, + t0 = 0, + t1 = 1, + dx = bx - ax, + dy = by - ay, + r; + + r = x0 - ax; + if (!dx && r > 0) return; + r /= dx; + if (dx < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dx > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = x1 - ax; + if (!dx && r < 0) return; + r /= dx; + if (dx < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dx > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + r = y0 - ay; + if (!dy && r > 0) return; + r /= dy; + if (dy < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dy > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = y1 - ay; + if (!dy && r < 0) return; + r /= dy; + if (dy < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dy > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + if (t0 > 0) line.a = {x: ax + t0 * dx, y: ay + t0 * dy}; + if (t1 < 1) line.b = {x: ax + t1 * dx, y: ay + t1 * dy}; + return line; + }; } -var d3_geo_clipViewMAX = 1e9; +var d3_geo_clipExtentMAX = 1e9; + +d3.geo.clipExtent = function() { + var x0, y0, x1, y1, + stream, + clip, + clipExtent = { + stream: function(output) { + if (stream) stream.valid = false; + stream = clip(output); + stream.valid = true; // allow caching by d3.geo.path + return stream; + }, + extent: function(_) { + if (!arguments.length) return [[x0, y0], [x1, y1]]; + clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]); + if (stream) stream.valid = false, stream = null; + return clipExtent; + } + }; + return clipExtent.extent([[0, 0], [960, 500]]); +}; -function d3_geo_clipView(x0, y0, x1, y1) { +function d3_geo_clipExtent(x0, y0, x1, y1) { return function(listener) { var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), + clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring; @@ -2900,28 +3183,30 @@ function d3_geo_clipView(x0, y0, x1, y1) { listener = bufferListener; segments = []; polygon = []; + clean = true; }, polygonEnd: function() { listener = listener_; - if ((segments = d3.merge(segments)).length) { + segments = d3.merge(segments); + var clipStartInside = insidePolygon([x0, y1]), + inside = clean && clipStartInside, + visible = segments.length; + if (inside || visible) { listener.polygonStart(); - d3_geo_clipPolygon(segments, compare, inside, interpolate, listener); + if (inside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + if (visible) { + d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener); + } listener.polygonEnd(); - } else if (insidePolygon([x0, y0])) { - listener.polygonStart(), listener.lineStart(); - interpolate(null, null, 1, listener); - listener.lineEnd(), listener.polygonEnd(); } segments = polygon = ring = null; } }; - function inside(point) { - var a = corner(point, -1), - i = insidePolygon([a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0]); - return i; - } - function insidePolygon(p) { var wn = 0, // the winding number counter n = polygon.length, @@ -2958,17 +3243,18 @@ function d3_geo_clipView(x0, y0, x1, y1) { } } - function visible(x, y) { + function pointVisible(x, y) { return x0 <= x && x <= x1 && y0 <= y && y <= y1; } function point(x, y) { - if (visible(x, y)) listener.point(x, y); + if (pointVisible(x, y)) listener.point(x, y); } var x__, y__, v__, // first point x_, y_, v_, // previous point - first; + first, + clean; function lineStart() { clip.point = linePoint; @@ -2992,9 +3278,9 @@ function d3_geo_clipView(x0, y0, x1, y1) { } function linePoint(x, y) { - x = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, x)); - y = Math.max(-d3_geo_clipViewMAX, Math.min(d3_geo_clipViewMAX, y)); - var v = visible(x, y); + x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x)); + y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y)); + var v = pointVisible(x, y); if (polygon) ring.push([x, y]); if (first) { x__ = x, y__ = y, v__ = v; @@ -3006,18 +3292,19 @@ function d3_geo_clipView(x0, y0, x1, y1) { } else { if (v && v_) listener.point(x, y); else { - var a = [x_, y_], - b = [x, y]; - if (clipLine(a, b)) { + var l = {a: {x: x_, y: y_}, b: {x: x, y: y}}; + if (clipLine(l)) { if (!v_) { listener.lineStart(); - listener.point(a[0], a[1]); + listener.point(l.a.x, l.a.y); } - listener.point(b[0], b[1]); + listener.point(l.b.x, l.b.y); if (!v) listener.lineEnd(); + clean = false; } else if (v) { listener.lineStart(); listener.point(x, y); + clean = false; } } } @@ -3028,14 +3315,14 @@ function d3_geo_clipView(x0, y0, x1, y1) { }; function corner(p, direction) { - return Math.abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 - : Math.abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 - : Math.abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // Math.abs(p[1] - y1) < ε + return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 + : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 + : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 + : direction > 0 ? 3 : 2; // abs(p[1] - y1) < ε } function compare(a, b) { - return comparePoints(a.point, b.point); + return comparePoints(a.x, b.x); } function comparePoints(a, b) { @@ -3047,47 +3334,6 @@ function d3_geo_clipView(x0, y0, x1, y1) { : ca === 2 ? a[1] - b[1] : b[0] - a[0]; } - - // LiangâBarsky line clipping. - function clipLine(a, b) { - var dx = b[0] - a[0], - dy = b[1] - a[1], - t = [0, 1]; - - if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1; - - if (d3_geo_clipViewT(x0 - a[0], dx, t) && - d3_geo_clipViewT(a[0] - x1, -dx, t) && - d3_geo_clipViewT(y0 - a[1], dy, t) && - d3_geo_clipViewT(a[1] - y1, -dy, t)) { - if (t[1] < 1) { - b[0] = a[0] + t[1] * dx; - b[1] = a[1] + t[1] * dy; - } - if (t[0] > 0) { - a[0] += t[0] * dx; - a[1] += t[0] * dy; - } - return true; - } - - return false; - } -} - -function d3_geo_clipViewT(num, denominator, t) { - if (Math.abs(denominator) < ε) return num <= 0; - - var u = num / denominator; - - if (denominator > 0) { - if (u > t[1]) return false; - if (u > t[0]) t[0] = u; - } else { - if (u < t[0]) return false; - if (u < t[1]) t[1] = u; - } - return true; } function d3_geo_compose(a, b) { @@ -3330,7 +3576,7 @@ d3.geo.bounds = (function() { var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, - antimeridian = Math.abs(dλ) > 180; + antimeridian = abs(dλ) > 180; if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) { var Ïi = inflection[1] * d3_degrees; if (Ïi > Ï1) Ï1 = Ïi; @@ -3375,7 +3621,7 @@ d3.geo.bounds = (function() { function ringPoint(λ, Ï) { if (p0) { var dλ = λ - λ_; - dλSum += Math.abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; + dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; } else λ__ = λ, Ï__ = Ï; d3_geo_area.point(λ, Ï); linePoint(λ, Ï); @@ -3388,7 +3634,7 @@ d3.geo.bounds = (function() { function ringEnd() { ringPoint(λ__, Ï__); d3_geo_area.lineEnd(); - if (Math.abs(dλSum) > ε) λ0 = -(λ1 = 180); + if (abs(dλSum) > ε) λ0 = -(λ1 = 180); range[0] = λ0, range[1] = λ1; p0 = null; } @@ -3601,7 +3847,7 @@ var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = { }, polygonEnd: function() { d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop; - d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2); + d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2); } }; @@ -3806,7 +4052,7 @@ function d3_geo_pathContext(context) { function point(x, y) { context.moveTo(x, y); - context.arc(x, y, pointRadius, 0, 2 * Ï); + context.arc(x, y, pointRadius, 0, Ï); } function pointLineStart(x, y) { @@ -3898,7 +4144,7 @@ function d3_geo_resample(project) { c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), Ï2 = Math.asin(c /= m), - λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), + λ2 = abs(abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, Ï2), x2 = p[0], y2 = p[1], @@ -3906,7 +4152,7 @@ function d3_geo_resample(project) { dy2 = y2 - y0, dz = dy * dx2 - dx * dy2; if (dz * dz / d2 > δ2 // perpendicular projected distance - || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 // midpoint close to an end + || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 // midpoint close to an end || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream); stream.point(x2, y2); @@ -3924,6 +4170,29 @@ function d3_geo_resample(project) { return resample; } +d3.geo.transform = function(methods) { + return { + stream: function(stream) { + var transform = new d3_geo_transform(stream); + for (var k in methods) transform[k] = methods[k]; + return transform; + } + }; +}; + +function d3_geo_transform(stream) { + this.stream = stream; +} + +d3_geo_transform.prototype = { + point: function(x, y) { this.stream.point(x, y); }, + sphere: function() { this.stream.sphere(); }, + lineStart: function() { this.stream.lineStart(); }, + lineEnd: function() { this.stream.lineEnd(); }, + polygonStart: function() { this.stream.polygonStart(); }, + polygonEnd: function() { this.stream.polygonEnd(); } +}; + d3.geo.path = function() { var pointRadius = 4.5, projection, @@ -3992,17 +4261,11 @@ d3.geo.path = function() { }; function d3_geo_pathProjectStream(project) { - var resample = d3_geo_resample(function(λ, Ï) { return project([λ * d3_degrees, Ï * d3_degrees]); }); + var resample = d3_geo_resample(function(x, y) { return project([x * d3_degrees, y * d3_degrees]); }); return function(stream) { - stream = resample(stream); - return { - point: function(λ, Ï) { stream.point(λ * d3_radians, Ï * d3_radians); }, - sphere: function() { stream.sphere(); }, - lineStart: function() { stream.lineStart(); }, - lineEnd: function() { stream.lineEnd(); }, - polygonStart: function() { stream.polygonStart(); }, - polygonEnd: function() { stream.polygonEnd(); } - }; + var transform = new d3_geo_transform(stream = resample(stream)); + transform.point = function(x, y) { stream.point(x * d3_radians, y * d3_radians); }; + return transform; }; } @@ -4041,7 +4304,7 @@ function d3_geo_projectionMutator(projectAt) { projection.stream = function(output) { if (stream) stream.valid = false; - stream = d3_geo_projectionRadiansRotate(rotate, preclip(projectResample(postclip(output)))); + stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output)))); stream.valid = true; // allow caching by d3.geo.path return stream; }; @@ -4055,7 +4318,7 @@ function d3_geo_projectionMutator(projectAt) { projection.clipExtent = function(_) { if (!arguments.length) return clipExtent; clipExtent = _; - postclip = _ == null ? d3_identity : d3_geo_clipView(_[0][0], _[0][1], _[1][0], _[1][1]); + postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity; return invalidate(); }; @@ -4098,10 +4361,7 @@ function d3_geo_projectionMutator(projectAt) { } function invalidate() { - if (stream) { - stream.valid = false; - stream = null; - } + if (stream) stream.valid = false, stream = null; return projection; } @@ -4112,18 +4372,12 @@ function d3_geo_projectionMutator(projectAt) { }; } -function d3_geo_projectionRadiansRotate(rotate, stream) { - return { - point: function(x, y) { - y = rotate(x * d3_radians, y * d3_radians), x = y[0]; - stream.point(x > Ï ? x - 2 * Ï : x < -Ï ? x + 2 * Ï : x, y[1]); - }, - sphere: function() { stream.sphere(); }, - lineStart: function() { stream.lineStart(); }, - lineEnd: function() { stream.lineEnd(); }, - polygonStart: function() { stream.polygonStart(); }, - polygonEnd: function() { stream.polygonEnd(); } +function d3_geo_projectionRadians(stream) { + var transform = new d3_geo_transform(stream); + transform.point = function(λ, Ï) { + stream.point(λ * d3_radians, Ï * d3_radians); }; + return transform; } function d3_geo_mercator(λ, Ï) { @@ -4131,7 +4385,7 @@ function d3_geo_mercator(λ, Ï) { } d3_geo_mercator.invert = function(x, y) { - return [x, 2 * Math.atan(Math.exp(y)) - Ï / 2]; + return [x, 2 * Math.atan(Math.exp(y)) - halfÏ]; }; function d3_geo_mercatorProjection(project) { @@ -4303,7 +4557,7 @@ d3.ease = function(name) { m = i >= 0 ? name.substring(i + 1) : "in"; t = d3_ease.get(t) || d3_ease_default; m = d3_ease_mode.get(m) || d3_identity; - return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1)))); + return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1)))); }; function d3_ease_clamp(f) { @@ -4347,7 +4601,7 @@ function d3_ease_poly(e) { } function d3_ease_sin(t) { - return 1 - Math.cos(t * Ï / 2); + return 1 - Math.cos(t * halfÏ); } function d3_ease_exp(t) { @@ -4361,10 +4615,10 @@ function d3_ease_circle(t) { function d3_ease_elastic(a, p) { var s; if (arguments.length < 2) p = 0.45; - if (arguments.length) s = p / (2 * Ï) * Math.asin(1 / a); + if (arguments.length) s = p / Ï * Math.asin(1 / a); else a = 1, s = p / 4; return function(t) { - return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Ï / p); + return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * Ï / p); }; } @@ -5379,7 +5633,7 @@ function d3_transition_text(b) { d3_transitionPrototype.remove = function() { return this.each("end.transition", function() { var p; - if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this); + if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this); }); }; @@ -5393,15 +5647,15 @@ d3_transitionPrototype.ease = function(value) { d3_transitionPrototype.delay = function(value) { var id = this.id; return d3_selection_each(this, typeof value === "function" - ? function(node, i, j) { node.__transition__[id].delay = value.call(node, node.__data__, i, j) | 0; } - : (value |= 0, function(node) { node.__transition__[id].delay = value; })); + ? function(node, i, j) { node.__transition__[id].delay = +value.call(node, node.__data__, i, j); } + : (value = +value, function(node) { node.__transition__[id].delay = value; })); }; d3_transitionPrototype.duration = function(value) { var id = this.id; return d3_selection_each(this, typeof value === "function" - ? function(node, i, j) { node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j) | 0); } - : (value = Math.max(1, value | 0), function(node) { node.__transition__[id].duration = value; })); + ? function(node, i, j) { node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)); } + : (value = Math.max(1, value), function(node) { node.__transition__[id].duration = value; })); }; d3_transitionPrototype.each = function(type, listener) { @@ -5471,10 +5725,12 @@ function d3_transitionNode(node, i, id, inherit) { ease = transition.ease, delay = transition.delay, duration = transition.duration, + timer = d3_timer_active, tweened = []; - if (delay <= elapsed) return start(elapsed); - d3_timer_replace(start, delay, time); + timer.t = delay + time; + if (delay <= elapsed) return start(elapsed - delay); + timer.c = start; function start(elapsed) { if (lock.active > id) return stop(); @@ -5487,14 +5743,16 @@ function d3_transitionNode(node, i, id, inherit) { } }); - if (tick(elapsed)) return 1; - d3_timer_replace(tick, 0, time); + d3.timer(function() { // defer to end of current frame + timer.c = tick(elapsed || 1) ? d3_true : tick; + return 1; + }, 0, time); } function tick(elapsed) { if (lock.active !== id) return stop(); - var t = (elapsed - delay) / duration, + var t = elapsed / duration, e = ease(t), n = tweened.length; @@ -5503,9 +5761,8 @@ function d3_transitionNode(node, i, id, inherit) { } if (t >= 1) { - stop(); transition.event && transition.event.end.call(node, d, i); - return 1; + return stop(); } } @@ -5529,7 +5786,7 @@ function d3_xhrType(response) { function d3_xhr(url, mimeType, response, callback) { var xhr = {}, - dispatch = d3.dispatch("progress", "load", "error"), + dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest, responseType = null; @@ -5611,6 +5868,7 @@ function d3_xhr(url, mimeType, response, callback) { if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); if (responseType != null) request.responseType = responseType; if (callback != null) xhr.on("error", callback).on("load", function(request) { callback(null, request); }); + dispatch.beforesend.call(xhr, request); request.send(data == null ? null : data); return xhr; }; @@ -5665,7 +5923,7 @@ d3.combobox = function() { var fetcher = function(val, cb) { cb(data.filter(function(d) { - return d.title + return d.value .toString() .toLowerCase() .indexOf(val.toLowerCase()) !== -1; @@ -5690,25 +5948,26 @@ d3.combobox = function() { var parent = this.parentNode, sibling = this.nextSibling; - var carat = d3.select(parent).selectAll('.combobox-carat') + var caret = d3.select(parent).selectAll('.combobox-caret') .filter(function(d) { return d === input.node(); }) .data([input.node()]); - carat.enter().insert('div', function() { return sibling; }) - .attr('class', 'combobox-carat'); + caret.enter().insert('div', function() { return sibling; }) + .attr('class', 'combobox-caret'); - carat + caret .on('mousedown', function () { // prevent the form element from blurring. it blurs // on mousedown d3.event.stopPropagation(); d3.event.preventDefault(); input.node().focus(); + fetch('', render); }); }); function focus() { - fetch(render); + fetch(value(), render); } function blur() { @@ -5798,7 +6057,7 @@ d3.combobox = function() { } function change() { - fetch(function() { + fetch(value(), function() { autocomplete(); render(); }); @@ -5823,8 +6082,8 @@ d3.combobox = function() { return value; } - function fetch(cb) { - fetcher.call(input, value(), function(_) { + function fetch(v, cb) { + fetcher.call(input, v, function(_) { suggestions = _; cb(); }); @@ -5849,7 +6108,7 @@ d3.combobox = function() { } function render() { - if (suggestions.length && document.activeElement === input.node()) { + if (suggestions.length > 1 && document.activeElement === input.node()) { show(); } else { hide(); @@ -15119,6 +15378,7 @@ if (typeof exports === 'object') { }).call(function() { return this || (typeof window !== 'undefined' ? window : global); }()); +/* jshint ignore:start */ (function () { 'use strict'; window.iD = function () { @@ -15147,7 +15407,9 @@ window.iD = function () { else storage.setItem(k, v); } catch(e) { // localstorage quota exceeded + /* jshint devel:true */ if (typeof console !== 'undefined') console.error('localStorage quota exceeded'); + /* jshint devel:false */ } }; @@ -15199,11 +15461,6 @@ window.iD = function () { /* History */ context.graph = history.graph; - context.perform = history.perform; - context.replace = history.replace; - context.pop = history.pop; - context.undo = history.undo; - context.redo = history.redo; context.changes = history.changes; context.intersects = history.intersects; @@ -15227,6 +15484,23 @@ window.iD = function () { return context; }; + // Debounce save, since it's a synchronous localStorage write, + // and history changes can happen frequently (e.g. when dragging). + var debouncedSave = _.debounce(context.save, 350); + function withDebouncedSave(fn) { + return function() { + var result = fn.apply(history, arguments); + debouncedSave(); + return result; + }; + } + + context.perform = withDebouncedSave(history.perform); + context.replace = withDebouncedSave(history.replace); + context.pop = withDebouncedSave(history.pop); + context.undo = withDebouncedSave(history.undo); + context.redo = withDebouncedSave(history.redo); + /* Graph */ context.hasEntity = function(id) { return history.graph().hasEntity(id); @@ -15306,9 +15580,52 @@ window.iD = function () { }; /* Projection */ - context.projection = d3.geo.mercator() - .scale(512 / Math.PI) - .precision(0); + function rawMercator() { + var project = d3.geo.mercator.raw, + k = 512 / Math.PI, // scale + x = 0, y = 0, // translate + clipExtent = [[0, 0], [0, 0]]; + + function projection(point) { + point = project(point[0] * Math.PI / 180, point[1] * Math.PI / 180); + return [point[0] * k + x, y - point[1] * k]; + } + + projection.invert = function(point) { + point = project.invert((point[0] - x) / k, (y - point[1]) / k); + return point && [point[0] * 180 / Math.PI, point[1] * 180 / Math.PI]; + }; + + projection.scale = function(_) { + if (!arguments.length) return k; + k = +_; + return projection; + }; + + projection.translate = function(_) { + if (!arguments.length) return [x, y]; + x = +_[0]; + y = +_[1]; + return projection; + }; + + projection.clipExtent = function(_) { + if (!arguments.length) return clipExtent; + clipExtent = _; + return projection; + }; + + projection.stream = d3.geo.transform({ + point: function(x, y) { + x = projection([x, y]); + this.stream.point(x[0], x[1]); + } + }).stream; + + return projection; + } + + context.projection = rawMercator(); /* Background */ var background = iD.Background(context); @@ -15376,13 +15693,13 @@ window.iD = function () { return d3.rebind(context, dispatch, 'on'); }; -iD.version = '1.2.0'; +iD.version = '1.3.2'; (function() { var detected = {}; var ua = navigator.userAgent, - msie = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})"); + msie = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})'); if (msie.exec(ua) !== null) { var rv = parseFloat(RegExp.$1); @@ -15529,7 +15846,12 @@ iD.taginfo = function() { taginfo.docs = function(parameters, callback) { var debounce = parameters.debounce; parameters = clean(setSort(parameters)); - request(endpoint + (parameters.value ? 'tag/wiki_pages?' : 'key/wiki_pages?') + + + var path = 'key/wiki_pages?'; + if (parameters.value) path = 'tag/wiki_pages?'; + else if (parameters.rtype) path = 'relation/wiki_pages?'; + + request(endpoint + path + iD.util.qsString(parameters), debounce, callback); }; @@ -15621,7 +15943,7 @@ iD.util.entityOrMemberSelector = function(ids, graph) { var entity = graph.hasEntity(id); if (entity && entity.type === 'relation') { entity.members.forEach(function(member) { - s += ',.' + member.id + s += ',.' + member.id; }); } }); @@ -15706,7 +16028,7 @@ iD.util.editDistance = function(a, b) { for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; } for (i = 1; i <= b.length; i++) { for (j = 1; j <= a.length; j++) { - if (b.charAt(i-1) == a.charAt(j-1)) { + if (b.charAt(i-1) === a.charAt(j-1)) { matrix[i][j] = matrix[i-1][j-1]; } else { matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution @@ -15734,6 +16056,7 @@ iD.util.fastMouse = function(container) { }; }; +/* jshint -W103 */ iD.util.getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; }; iD.util.asyncMap = function(inputs, func, callback) { @@ -15750,6 +16073,77 @@ iD.util.asyncMap = function(inputs, func, callback) { }); }); }; + +// wraps an index to an interval [0..length-1] +iD.util.wrap = function(index, length) { + if (index < 0) + index += Math.ceil(-index/length)*length; + return index % length; +}; +// A per-domain session mutex backed by a cookie and dead man's +// switch. If the session crashes, the mutex will auto-release +// after 5 seconds. + +iD.util.SessionMutex = function(name) { + var mutex = {}, + intervalID; + + function renew() { + var expires = new Date(); + expires.setSeconds(expires.getSeconds() + 5); + document.cookie = name + '=1; expires=' + expires.toUTCString(); + } + + mutex.lock = function() { + if (intervalID) return true; + var cookie = document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1'); + if (cookie) return false; + renew(); + intervalID = window.setInterval(renew, 4000); + return true; + }; + + mutex.unlock = function() { + if (!intervalID) return; + document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT'; + clearInterval(intervalID); + intervalID = null; + }; + + mutex.locked = function() { + return !!intervalID; + }; + + return mutex; +}; +iD.util.SuggestNames = function(preset, suggestions) { + preset = preset.id.split('/', 2); + var k = preset[0], + v = preset[1]; + + return function(value, callback) { + var result = []; + if (value && value.length > 2) { + if (suggestions[k] && suggestions[k][v]) { + for (var sugg in suggestions[k][v]) { + var dist = iD.util.editDistance(value, sugg.substring(0, value.length)); + if (dist < 3) { + result.push({ + title: sugg, + value: sugg, + dist: dist + }); + } + } + } + result.sort(function(a, b) { + return a.dist - b.dist; + }); + } + result = result.slice(0,3); + callback(result); + }; +}; iD.geo = {}; iD.geo.roundCoords = function(c) { @@ -15762,17 +16156,28 @@ iD.geo.interp = function(p1, p2, t) { }; // http://jsperf.com/id-dist-optimization -iD.geo.dist = function(a, b) { +iD.geo.euclideanDistance = function(a, b) { var x = a[0] - b[0], y = a[1] - b[1]; return Math.sqrt((x * x) + (y * y)); }; +// Equirectangular approximation of spherical distances on Earth +iD.geo.sphericalDistance = function(a, b) { + var x = Math.cos(a[1]*Math.PI/180) * (a[0] - b[0]), + y = a[1] - b[1]; + return 6.3710E6 * Math.sqrt((x * x) + (y * y)) * Math.PI/180; +}; + +iD.geo.edgeEqual = function(a, b) { + return (a[0] === b[0] && a[1] === b[1]) || + (a[0] === b[1] && a[1] === b[0]); +}; // Choose the edge with the minimal distance from `point` to its orthogonal // projection onto that edge, if such a projection exists, or the distance to // the closest vertex on that edge. Returns an object with the `index` of the // chosen edge, the chosen `loc` on that edge, and the `distance` to to it. iD.geo.chooseEdge = function(nodes, point, projection) { - var dist = iD.geo.dist, + var dist = iD.geo.euclideanDistance, points = nodes.map(function(n) { return projection(n.loc); }), min = Infinity, idx, loc; @@ -15831,7 +16236,7 @@ iD.geo.pointInPolygon = function(point, polygon) { var xi = polygon[i][0], yi = polygon[i][1]; var xj = polygon[j][0], yj = polygon[j][1]; - var intersect = ((yi > y) != (yj > y)) && + var intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); if (intersect) inside = !inside; } @@ -15897,7 +16302,7 @@ _.extend(iD.geo.Extent.prototype, { [this[1][0], this[1][1]], [this[1][0], this[0][1]], [this[0][0], this[0][1]] - ] + ]; }, intersects: function(obj) { @@ -16158,7 +16563,7 @@ iD.actions.AddMember = function(relationId, member, memberIndex) { } return graph.replace(relation.addMember(member, memberIndex)); - } + }; }; iD.actions.AddMidpoint = function(midpoint, node) { return function(graph) { @@ -16170,10 +16575,7 @@ iD.actions.AddMidpoint = function(midpoint, node) { parents.forEach(function(way) { for (var i = 0; i < way.nodes.length - 1; i++) { - if ((way.nodes[i] === midpoint.edge[0] && - way.nodes[i + 1] === midpoint.edge[1]) || - (way.nodes[i] === midpoint.edge[1] && - way.nodes[i + 1] === midpoint.edge[0])) { + if (iD.geo.edgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) { graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1)); // Add only one midpoint on doubled-back segments, @@ -16195,7 +16597,7 @@ iD.actions.AddVertex = function(wayId, nodeId, index) { iD.actions.ChangeMember = function(relationId, member, memberIndex) { return function(graph) { return graph.replace(graph.entity(relationId).updateMember(member, memberIndex)); - } + }; }; iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) { return function(graph) { @@ -16215,63 +16617,105 @@ iD.actions.ChangeTags = function(entityId, tags) { return graph.replace(entity.update({tags: tags})); }; }; -iD.actions.Circularize = function(wayId, projection, count) { - count = count || 12; - - function closestIndex(nodes, loc) { - var idx, min = Infinity, dist; - for (var i = 0; i < nodes.length; i++) { - dist = iD.geo.dist(nodes[i].loc, loc); - if (dist < min) { - min = dist; - idx = i; - } - } - return idx; - } +iD.actions.Circularize = function(wayId, projection, maxAngle) { + maxAngle = (maxAngle || 20) * Math.PI / 180; var action = function(graph) { var way = graph.entity(wayId), nodes = _.uniq(graph.childNodes(way)), + keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }), points = nodes.map(function(n) { return projection(n.loc); }), + keyPoints = keyNodes.map(function(n) { return projection(n.loc); }), centroid = d3.geom.polygon(points).centroid(), - radius = d3.median(points, function(p) { - return iD.geo.dist(centroid, p); - }), - ids = [], - sign = d3.geom.polygon(points).area() > 0 ? -1 : 1; - - for (var i = 0; i < count; i++) { - var node, + radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }), + sign = d3.geom.polygon(points).area() > 0 ? 1 : -1, + ids; + + // we need atleast two key nodes for the algorithm to work + if (!keyNodes.length) { + keyNodes = [nodes[0]]; + keyPoints = [points[0]]; + } + + if (keyNodes.length === 1) { + var index = nodes.indexOf(keyNodes[0]), + oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length); + + keyNodes.push(nodes[oppositeIndex]); + keyPoints.push(points[oppositeIndex]); + } + + // key points and nodes are those connected to the ways, + // they are projected onto the circle, inbetween nodes are moved + // to constant internals between key nodes, extra inbetween nodes are + // added if necessary. + for (var i = 0; i < keyPoints.length; i++) { + var nextKeyNodeIndex = (i + 1) % keyNodes.length, + startNodeIndex = nodes.indexOf(keyNodes[i]), + endNodeIndex = nodes.indexOf(keyNodes[nextKeyNodeIndex]), + numberNewPoints = -1, + indexRange = endNodeIndex - startNodeIndex, + distance, totalAngle, eachAngle, startAngle, endAngle, + angle, loc, node, j; + + if (indexRange < 0) { + indexRange += nodes.length; + } + + // position this key node + distance = iD.geo.euclideanDistance(centroid, keyPoints[i]); + keyPoints[i] = [ + centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius, + centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius]; + graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i]))); + + // figure out the between delta angle we want to match to + startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]); + endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]); + totalAngle = endAngle - startAngle; + + // detects looping around -pi/pi + if (totalAngle*sign > 0) { + totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle)); + } + + do { + numberNewPoints++; + eachAngle = totalAngle / (indexRange + numberNewPoints); + } while (Math.abs(eachAngle) > maxAngle); + + // move existing points + for (j = 1; j < indexRange; j++) { + angle = startAngle + j * eachAngle; loc = projection.invert([ - centroid[0] + Math.cos(sign * (i / 12) * Math.PI * 2) * radius, - centroid[1] + Math.sin(sign * (i / 12) * Math.PI * 2) * radius]); + centroid[0] + Math.cos(angle)*radius, + centroid[1] + Math.sin(angle)*radius]); - if (nodes.length) { - var idx = closestIndex(nodes, loc); - node = nodes[idx]; - nodes.splice(idx, 1); - } else { - node = iD.Node(); + node = nodes[(j + startNodeIndex) % nodes.length].move(loc); + graph = graph.replace(node); } - ids.push(node.id); - graph = graph.replace(node.move(loc)); + // add new inbetween nodes if necessary + for (j = 0; j < numberNewPoints; j++) { + angle = startAngle + (indexRange + j) * eachAngle; + loc = projection.invert([ + centroid[0] + Math.cos(angle) * radius, + centroid[1] + Math.sin(angle) * radius]); + + node = iD.Node({loc: loc}); + graph = graph.replace(node); + + nodes.splice(endNodeIndex + j, 0, node); + } } + // update the way to have all the new nodes + ids = nodes.map(function(n) { return n.id; }); ids.push(ids[0]); + way = way.update({nodes: ids}); graph = graph.replace(way); - for (i = 0; i < nodes.length; i++) { - graph.parentWays(nodes[i]).forEach(function(parent) { - graph = graph.replace(parent.replaceNode(nodes[i].id, - ids[closestIndex(graph.childNodes(way), nodes[i].loc)])); - }); - - graph = iD.actions.DeleteNode(nodes[i].id)(graph); - } - return graph; }; @@ -16303,6 +16747,7 @@ iD.actions.Connect = function(nodeIds) { for (var i = 0; i < nodeIds.length - 1; i++) { var node = graph.entity(nodeIds[i]); + /*jshint -W083 */ graph.parentWays(node).forEach(function(parent) { if (!parent.areAdjacent(node.id, survivor.id)) { graph = graph.replace(parent.replaceNode(node.id, survivor.id)); @@ -16312,6 +16757,7 @@ iD.actions.Connect = function(nodeIds) { graph.parentRelations(node).forEach(function(parent) { graph = graph.replace(parent.replaceMember(node, survivor)); }); + /*jshint +W083 */ survivor = survivor.mergeTags(node.tags); graph = iD.actions.DeleteNode(node.id)(graph); @@ -16517,7 +16963,7 @@ iD.actions.DiscardTags = function(difference) { difference.created().forEach(discardTags); return graph; - } + }; }; // Disconect the ways at the given node. // @@ -16543,7 +16989,7 @@ iD.actions.Disconnect = function(nodeId, newNodeId) { replacements.forEach(function(replacement) { var newNode = iD.Node({id: newNodeId, loc: node.loc, tags: node.tags}); graph = graph.replace(newNode); - graph = graph.replace(replacement.way.updateNode(newNode.id, replacement.index)); + graph = graph.replace(graph.entity(replacement.wayID).updateNode(newNode.id, replacement.index)); }); return graph; @@ -16562,7 +17008,7 @@ iD.actions.Disconnect = function(nodeId, newNodeId) { parent.nodes.forEach(function(waynode, index) { if (waynode === nodeId) { - candidates.push({way: parent, index: index}); + candidates.push({wayID: parent.id, index: index}); } }); }); @@ -16756,7 +17202,7 @@ iD.actions.MergePolygon = function(ids, newRelationId) { return _.any(contained[i]); } - function filterContained(d, i) { + function filterContained(d) { return d.filter(isContained); } @@ -16865,20 +17311,24 @@ iD.actions.Noop = function() { */ iD.actions.Orthogonalize = function(wayId, projection) { + var threshold = 7, // degrees within right or straight to alter + lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180), + upperThreshold = Math.cos(threshold * Math.PI / 180); + var action = function(graph) { var way = graph.entity(wayId), nodes = graph.childNodes(way), + points = _.uniq(nodes).map(function(n) { return projection(n.loc); }), corner = {i: 0, dotp: 1}, - points, i, j, score, motions; + epsilon = 1e-4, + i, j, score, motions; if (nodes.length === 4) { - points = _.uniq(nodes).map(function(n) { return projection(n.loc); }); - for (i = 0; i < 1000; i++) { motions = points.map(calcMotion); points[corner.i] = addPoints(points[corner.i],motions[corner.i]); score = corner.dotp; - if (score < 1.0e-8) { + if (score < epsilon) { break; } } @@ -16886,21 +17336,21 @@ iD.actions.Orthogonalize = function(wayId, projection) { graph = graph.replace(graph.entity(nodes[corner.i].id) .move(projection.invert(points[corner.i]))); } else { - var best; - points = _.uniq(nodes).map(function(n) { return projection(n.loc); }); - score = squareness(); + var best, + originalPoints = _.clone(points); + score = Infinity; for (i = 0; i < 1000; i++) { motions = points.map(calcMotion); for (j = 0; j < motions.length; j++) { points[j] = addPoints(points[j],motions[j]); } - var newScore = squareness(); + var newScore = squareness(points); if (newScore < score) { best = _.clone(points); score = newScore; } - if (score < 1.0e-8) { + if (score < epsilon) { break; } } @@ -16908,8 +17358,28 @@ iD.actions.Orthogonalize = function(wayId, projection) { points = best; for (i = 0; i < points.length; i++) { - graph = graph.replace(graph.entity(nodes[i].id) - .move(projection.invert(points[i]))); + // only move the points that actually moved + if (originalPoints[i][0] !== points[i][0] || originalPoints[i][1] !== points[i][1]) { + graph = graph.replace(graph.entity(nodes[i].id) + .move(projection.invert(points[i]))); + } + } + + // remove empty nodes on straight sections + for (i = 0; i < points.length; i++) { + var node = nodes[i]; + + if (graph.parentWays(node).length > 1 || + graph.parentRelations(node).length || + node.hasInterestingTags()) { + + continue; + } + + var dotp = normalizedDotProduct(i, points); + if (dotp < -1 + epsilon) { + graph = iD.actions.DeleteNode(nodes[i].id)(graph); + } } } @@ -16919,78 +17389,91 @@ iD.actions.Orthogonalize = function(wayId, projection) { var a = array[(i - 1 + array.length) % array.length], c = array[(i + 1) % array.length], p = subtractPoints(a, b), - q = subtractPoints(c, b); + q = subtractPoints(c, b), + scale, dotp; - var scale = 2*Math.min(iD.geo.dist(p, [0, 0]), iD.geo.dist(q, [0, 0])); + scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0])); p = normalizePoint(p, 1.0); q = normalizePoint(q, 1.0); - var dotp = p[0] * q[0] + p[1] * q[1]; + dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]); // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270). if (array.length > 3) { if (dotp < -0.707106781186547) { dotp += 1.0; } - } else if (Math.abs(dotp) < corner.dotp) { + } else if (dotp && Math.abs(dotp) < corner.dotp) { corner.i = i; corner.dotp = Math.abs(dotp); } return normalizePoint(addPoints(p, q), 0.1 * dotp * scale); } + }; - function squareness() { - var g = 0.0; - for (var i = 1; i < points.length - 1; i++) { - var score = scoreOfPoints(points[i - 1], points[i], points[i + 1]); - g += score; - } - var startScore = scoreOfPoints(points[points.length - 1], points[0], points[1]); - var endScore = scoreOfPoints(points[points.length - 2], points[points.length - 1], points[0]); - g += startScore; - g += endScore; - return g; - } + function squareness(points) { + return points.reduce(function(sum, val, i, array) { + var dotp = normalizedDotProduct(i, array); - function scoreOfPoints(a, b, c) { - var p = subtractPoints(a, b), - q = subtractPoints(c, b); + dotp = filterDotProduct(dotp); + return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1))); + }, 0); + } - p = normalizePoint(p, 1.0); - q = normalizePoint(q, 1.0); + function normalizedDotProduct(i, points) { + var a = points[(i - 1 + points.length) % points.length], + b = points[i], + c = points[(i + 1) % points.length], + p = subtractPoints(a, b), + q = subtractPoints(c, b); - var dotp = p[0] * q[0] + p[1] * q[1]; - // score is constructed so that +1, -1 and 0 are all scored 0, any other angle - // is scored higher. - return 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1))); - } + p = normalizePoint(p, 1.0); + q = normalizePoint(q, 1.0); - function subtractPoints(a, b) { - return [a[0] - b[0], a[1] - b[1]]; - } + return p[0] * q[0] + p[1] * q[1]; + } - function addPoints(a, b) { - return [a[0] + b[0], a[1] + b[1]]; + function subtractPoints(a, b) { + return [a[0] - b[0], a[1] - b[1]]; + } + + function addPoints(a, b) { + return [a[0] + b[0], a[1] + b[1]]; + } + + function normalizePoint(point, scale) { + var vector = [0, 0]; + var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]); + if (length !== 0) { + vector[0] = point[0] / length; + vector[1] = point[1] / length; } - function normalizePoint(point, scale) { - var vector = [0, 0]; - var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]); - if (length !== 0) { - vector[0] = point[0] / length; - vector[1] = point[1] / length; - } + vector[0] *= scale; + vector[1] *= scale; - vector[0] *= scale; - vector[1] *= scale; + return vector; + } - return vector; + function filterDotProduct(dotp) { + if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) { + return dotp; } - }; + + return 0; + } action.disabled = function(graph) { - return false; + var way = graph.entity(wayId), + nodes = graph.childNodes(way), + points = _.uniq(nodes).map(function(n) { return projection(n.loc); }); + + if (squareness(points)) { + return false; + } + + return 'not_squarish'; }; return action; @@ -17041,9 +17524,9 @@ iD.actions.Reverse = function(wayId) { } function reverseValue(key, value) { - if (key === "incline" && numeric.test(value)) { + if (key === 'incline' && numeric.test(value)) { return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; }); - } else if (key === "incline" || key === "direction") { + } else if (key === 'incline' || key === 'direction') { return {up: 'down', down: 'up'}[value] || value; } else { return {left: 'right', right: 'left'}[value] || value; @@ -17114,19 +17597,70 @@ iD.actions.RotateWay = function(wayId, pivot, angle, projection) { iD.actions.Split = function(nodeId, newWayIds) { var wayIds; + // if the way is closed, we need to search for a partner node + // to split the way at. + // + // The following looks for a node that is both far away from + // the initial node in terms of way segment length and nearby + // in terms of beeline-distance. This assures that areas get + // split on the most "natural" points (independent of the number + // of nodes). + // For example: bone-shaped areas get split across their waist + // line, circles across the diameter. + function splitArea(nodes, idxA, graph) { + var lengths = new Array(nodes.length), + length, + i, + best = 0, + idxB; + + function wrap(index) { + return iD.util.wrap(index, nodes.length); + } + + function dist(nA, nB) { + return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc); + } + + // calculate lengths + length = 0; + for (i = wrap(idxA+1); i !== idxA; i = wrap(i+1)) { + length += dist(nodes[i], nodes[wrap(i-1)]); + lengths[i] = length; + } + + length = 0; + for (i = wrap(idxA-1); i !== idxA; i = wrap(i-1)) { + length += dist(nodes[i], nodes[wrap(i+1)]); + if (length < lengths[i]) + lengths[i] = length; + } + + // determine best opposite node to split + for (i = 0; i < nodes.length; i++) { + var cost = lengths[i] / dist(nodes[idxA], nodes[i]); + if (cost > best) { + idxB = i; + best = cost; + } + } + + return idxB; + } + function split(graph, wayA, newWayId) { var wayB = iD.Way({id: newWayId, tags: wayA.tags}), nodesA, nodesB, - isArea = wayA.isArea(); + isArea = wayA.isArea(), + isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph); if (wayA.isClosed()) { var nodes = wayA.nodes.slice(0, -1), idxA = _.indexOf(nodes, nodeId), - idxB = idxA + Math.floor(nodes.length / 2); + idxB = splitArea(nodes, idxA, graph); - if (idxB >= nodes.length) { - idxB %= nodes.length; + if (idxB < idxA) { nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1)); nodesB = nodes.slice(idxB, idxA + 1); } else { @@ -17153,24 +17687,23 @@ iD.actions.Split = function(nodeId, newWayIds) { graph = graph.replace(relation); } } else { - var role = relation.memberById(wayA.id).role, - last = wayB.last(), - i = relation.memberById(wayA.id).index, - j; - - for (j = 0; j < relation.members.length; j++) { - var entity = graph.hasEntity(relation.members[j].id); - if (entity && entity.type === 'way' && entity.contains(last)) { - break; - } + if (relation === isOuter) { + graph = graph.replace(relation.mergeTags(wayA.tags)); + graph = graph.replace(wayA.update({tags: {}})); + graph = graph.replace(wayB.update({tags: {}})); } - relation = relation.addMember({id: wayB.id, type: 'way', role: role}, i <= j ? i + 1 : i); - graph = graph.replace(relation); + var member = { + id: wayB.id, + type: 'way', + role: relation.memberById(wayA.id).role + }; + + graph = iD.actions.AddMember(relation.id, member)(graph); } }); - if (isArea) { + if (!isOuter && isArea) { var multipolygon = iD.Relation({ tags: _.extend({}, wayA.tags, {type: 'multipolygon'}), members: [ @@ -17196,12 +17729,16 @@ iD.actions.Split = function(nodeId, newWayIds) { action.ways = function(graph) { var node = graph.entity(nodeId), - parents = graph.parentWays(node); + parents = graph.parentWays(node), + hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; }); return parents.filter(function(parent) { if (wayIds && wayIds.indexOf(parent.id) === -1) return false; + if (!wayIds && hasLines && parent.geometry(graph) !== 'line') + return false; + if (parent.isClosed()) { return true; } @@ -17250,19 +17787,22 @@ iD.actions.Straighten = function(wayId, projection) { i; for (i = 1; i < points.length-1; i++) { - var node = nodes[i], + var node = nodes[i], point = points[i]; - if (graph.parentWays(node).length > 1 || (node.tags && Object.keys(node.tags).length)) { + if (graph.parentWays(node).length > 1 || + graph.parentRelations(node).length || + node.hasInterestingTags()) { + var u = positionAlongWay(point, startPoint, endPoint), p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]), - p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]), + p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]); graph = graph.replace(graph.entity(node.id) .move(projection.invert([p0, p1]))); } else { // safe to delete - if (toDelete.indexOf(node) == -1) { + if (toDelete.indexOf(node) === -1) { toDelete.push(node); } } @@ -17286,7 +17826,7 @@ iD.actions.Straighten = function(wayId, projection) { i; for (i = 1; i < points.length-1; i++) { - var point = points[i], + var point = points[i], u = positionAlongWay(point, startPoint, endPoint), p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]), p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]), @@ -17360,7 +17900,7 @@ iD.behavior.drag = function() { d3.event.preventDefault(); } - var event = d3.dispatch("start", "move", "end"), + var event = d3.dispatch('start', 'move', 'end'), origin = null, selector = '', filter = null, @@ -17368,10 +17908,10 @@ iD.behavior.drag = function() { event.of = function(thiz, argumentz) { return function(e1) { + var e0 = e1.sourceEvent = d3.event; + e1.target = drag; + d3.event = e1; try { - var e0 = e1.sourceEvent = d3.event; - e1.target = drag; - d3.event = e1; event[e1.type].apply(thiz, argumentz); } finally { d3.event = e0; @@ -17379,7 +17919,7 @@ iD.behavior.drag = function() { }; }; - var d3_event_userSelectProperty = iD.util.prefixCSSProperty("UserSelect"), + var d3_event_userSelectProperty = iD.util.prefixCSSProperty('UserSelect'), d3_event_userSelectSuppress = d3_event_userSelectProperty ? function () { var selection = d3.selection(), @@ -17390,9 +17930,9 @@ iD.behavior.drag = function() { }; } : function (type) { - var w = d3.select(window).on("selectstart." + type, d3_eventCancel); + var w = d3.select(window).on('selectstart.' + type, d3_eventCancel); return function () { - w.on("selectstart." + type, null); + w.on('selectstart.' + type, null); }; }; @@ -17403,12 +17943,12 @@ iD.behavior.drag = function() { touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), - moved = 0, - selectEnable = d3_event_userSelectSuppress(touchId != null ? "drag-" + touchId : "drag"); + started = false, + selectEnable = d3_event_userSelectSuppress(touchId !== null ? 'drag-' + touchId : 'drag'); var w = d3.select(window) - .on(touchId !== null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove) - .on(touchId !== null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true); + .on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', dragmove) + .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', dragend, true); if (origin) { offset = origin.apply(target, arguments); @@ -17432,41 +17972,41 @@ iD.behavior.drag = function() { dx = p[0] - origin_[0], dy = p[1] - origin_[1]; - if (!moved) { + if (!started) { + started = true; event_({ - type: "start" + type: 'start' }); } - moved |= dx | dy; origin_ = p; d3_eventCancel(); event_({ - type: "move", + type: 'move', point: [p[0] + offset[0], p[1] + offset[1]], delta: [dx, dy] }); } function dragend() { - if (moved) { + if (started) { event_({ - type: "end" + type: 'end' }); d3_eventCancel(); - if (d3.event.target === eventTarget) w.on("click.drag", click, true); + if (d3.event.target === eventTarget) w.on('click.drag', click, true); } - w.on(touchId !== null ? "touchmove.drag-" + touchId : "mousemove.drag", null) - .on(touchId !== null ? "touchend.drag-" + touchId : "mouseup.drag", null); + w.on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', null) + .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', null); selectEnable(); } function click() { d3_eventCancel(); - w.on("click.drag", null); + w.on('click.drag', null); } } @@ -17487,13 +18027,13 @@ iD.behavior.drag = function() { }; } - selection.on("mousedown.drag" + selector, delegate) - .on("touchstart.drag" + selector, delegate); + selection.on('mousedown.drag' + selector, delegate) + .on('touchstart.drag' + selector, delegate); } drag.off = function(selection) { - selection.on("mousedown.drag" + selector, null) - .on("touchstart.drag" + selector, null); + selection.on('mousedown.drag' + selector, null) + .on('touchstart.drag' + selector, null); }; drag.delegate = function(_) { @@ -17516,8 +18056,8 @@ iD.behavior.drag = function() { drag.cancel = function() { d3.select(window) - .on("mousemove.drag", null) - .on("mouseup.drag", null); + .on('mousemove.drag', null) + .on('mouseup.drag', null); return drag; }; @@ -17534,7 +18074,7 @@ iD.behavior.drag = function() { return drag; }; - return d3.rebind(drag, event, "on"); + return d3.rebind(drag, event, 'on'); }; iD.behavior.Draw = function(context) { var event = d3.dispatch('move', 'click', 'clickWay', @@ -17562,8 +18102,7 @@ iD.behavior.Draw = function(context) { })[0] : d3.mouse(p); } - var eventTarget = d3.event.target, - element = d3.select(this), + var element = d3.select(this), touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, time = +new Date(), pos = point(); @@ -17572,8 +18111,8 @@ iD.behavior.Draw = function(context) { d3.select(window).on('mouseup.draw', function() { element.on('mousemove.draw', mousemove); - if (iD.geo.dist(pos, point()) < closeTolerance || - (iD.geo.dist(pos, point()) < tolerance && + if (iD.geo.euclideanDistance(pos, point()) < closeTolerance || + (iD.geo.euclideanDistance(pos, point()) < tolerance && (+new Date() - time) < 500)) { // Prevent a quick second click @@ -17805,12 +18344,13 @@ iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) { // Connect the way to an existing way. drawWay.addWay = function(loc, edge) { + var previousEdge = startIndex ? + [way.nodes[startIndex], way.nodes[startIndex - 1]] : + [way.nodes[0], way.nodes[1]]; // Avoid creating duplicate segments - if (!isArea) { - if (edge[0] === way.nodes[way.nodes.length - 1] || - edge[1] === way.nodes[way.nodes.length - 1]) return; - } + if (!isArea && iD.geo.edgeEqual(edge, previousEdge)) + return; var newNode = iD.Node({ loc: loc }); @@ -17897,7 +18437,7 @@ iD.behavior.Hash = function(context) { var parser = function(map, s) { var q = iD.util.stringQs(s); - var args = (q.map || '').split("/").map(Number); + var args = (q.map || '').split('/').map(Number); if (args.length < 3 || args.some(isNaN)) { return true; // replace bogus hash } else if (s !== formatter(map).slice(1)) { @@ -17952,7 +18492,7 @@ iD.behavior.Hash = function(context) { d3.select(window) .on('hashchange.hash', null); - location.hash = ""; + location.hash = ''; }; return hash; @@ -17966,7 +18506,7 @@ iD.behavior.Hash = function(context) { Only one of these elements can have the :hover pseudo-class, but all of them will have the .hover class. */ -iD.behavior.Hover = function(context) { +iD.behavior.Hover = function() { var dispatch = d3.dispatch('hover'), selection, altDisables, @@ -18040,7 +18580,7 @@ iD.behavior.Hover = function(context) { function mousedown() { down = true; d3.select(window) - .on('mouseup.hover', mouseup) + .on('mouseup.hover', mouseup); } function mouseup() { @@ -18073,7 +18613,7 @@ iD.behavior.Hover = function(context) { d3.select(window) .on('keydown.hover', null) .on('keyup.hover', null) - .on('mouseup.hover', null) + .on('mouseup.hover', null); }; hover.altDisables = function(_) { @@ -18221,25 +18761,25 @@ iD.behavior.Tail = function() { var text, container, xmargin = 25, - tooltip_size = [0, 0], - selection_size = [0, 0], + tooltipSize = [0, 0], + selectionSize = [0, 0], transformProp = iD.util.prefixCSSProperty('Transform'); function tail(selection) { if (!text) return; d3.select(window) - .on('resize.tail', function() { selection_size = selection.dimensions(); }); + .on('resize.tail', function() { selectionSize = selection.dimensions(); }); function show() { container.style('display', 'block'); - tooltip_size = container.dimensions(); + tooltipSize = container.dimensions(); } function mousemove() { if (container.style('display') === 'none') show(); - var xoffset = ((d3.event.clientX + tooltip_size[0] + xmargin) > selection_size[0]) ? - -tooltip_size[0] - xmargin : xmargin; + var xoffset = ((d3.event.clientX + tooltipSize[0] + xmargin) > selectionSize[0]) ? + -tooltipSize[0] - xmargin : xmargin; container.classed('left', xoffset > 0); container.style(transformProp, 'translate(' + (~~d3.event.clientX + xoffset) + 'px,' + @@ -18274,8 +18814,8 @@ iD.behavior.Tail = function() { container .on('mousemove.tail', mousemove); - tooltip_size = container.dimensions(); - selection_size = selection.dimensions(); + tooltipSize = container.dimensions(); + selectionSize = selection.dimensions(); } tail.off = function(selection) { @@ -18462,7 +19002,7 @@ iD.modes.AddPoint = function(context) { .newFeature(true)); } - function addWay(loc, edge) { + function addWay(loc) { add(loc); } @@ -18501,14 +19041,12 @@ iD.modes.Browse = function(context) { iD.modes.DragNode(context).behavior]; mode.enter = function() { - context.save(); - behaviors.forEach(function(behavior) { context.install(behavior); }); // Get focus on the body. - if (document.activeElement) { + if (document.activeElement && document.activeElement.blur) { document.activeElement.blur(); } @@ -18578,8 +19116,8 @@ iD.modes.DragNode = function(context) { return t('operations.move.annotation.' + entity.geometry(context.graph())); } - function connectAnnotation(datum) { - return t('operations.connect.annotation.' + datum.geometry(context.graph())); + function connectAnnotation(entity) { + return t('operations.connect.annotation.' + entity.geometry(context.graph())); } function origin(entity) { @@ -18642,13 +19180,13 @@ iD.modes.DragNode = function(context) { var d = datum(); if (d.type === 'node' && d.id !== entity.id) { loc = d.loc; - } else if (d.type === 'way') { + } else if (d.type === 'way' && !d3.select(d3.event.sourceEvent.target).classed('fill')) { loc = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection).loc; } context.replace( iD.actions.MoveNode(entity.id, loc), - t('operations.move.annotation.' + entity.geometry(context.graph()))); + moveAnnotation(entity)); } function end(entity) { @@ -18702,7 +19240,7 @@ iD.modes.DragNode = function(context) { } var behavior = iD.behavior.drag() - .delegate("g.node, g.point, g.midpoint") + .delegate('g.node, g.point, g.midpoint') .surface(context.surface().node()) .origin(origin) .on('start', start) @@ -19029,18 +19567,12 @@ iD.modes.RotateWay = function(context, wayId) { iD.modes.Save = function(context) { var ui = iD.ui.Commit(context) .on('cancel', cancel) - .on('fix', fix) .on('save', save); function cancel() { context.enter(iD.modes.Browse(context)); } - function fix(d) { - context.map().zoomTo(d.entity); - context.enter(iD.modes.Select(context, [d.entity.id])); - } - function save(e) { var loading = iD.ui.Loading(context) .message(t('save.uploading')) @@ -19099,7 +19631,7 @@ iD.modes.Save = function(context) { context.install(behavior); }); - context.connection().authenticate(function(err) { + context.connection().authenticate(function() { context.ui().sidebar.show(ui); }); }; @@ -19186,8 +19718,6 @@ iD.modes.Select = function(context, selectedIDs) { }; mode.enter = function() { - context.save(); - behaviors.forEach(function(behavior) { context.install(behavior); }); @@ -19289,6 +19819,11 @@ iD.modes.Select = function(context, selectedIDs) { context.surface() .on('dblclick.select', dblclick); }, 200); + + if (selectedIDs.length > 1) { + var entities = iD.ui.SelectionList(context, selectedIDs); + context.ui().sidebar.show(entities); + } }; mode.exit = function() { @@ -19312,10 +19847,11 @@ iD.modes.Select = function(context, selectedIDs) { context.surface() .call(radialMenu.close) .on('dblclick.select', null) - .selectAll(".selected") + .selectAll('.selected') .classed('selected', false); context.map().on('drawn.select', null); + context.ui().sidebar.hide(); }; return mode; @@ -19347,7 +19883,7 @@ iD.operations.Circularize = function(selectedIDs, context) { t('operations.circularize.description.' + geometry); }; - operation.id = "circularize"; + operation.id = 'circularize'; operation.keys = [t('operations.circularize.key')]; operation.title = t('operations.circularize.title'); @@ -19396,7 +19932,7 @@ iD.operations.Continue = function(selectedIDs, context) { t('operations.continue.description'); }; - operation.id = "continue"; + operation.id = 'continue'; operation.keys = [t('operations.continue.key')]; operation.title = t('operations.continue.title'); @@ -19431,8 +19967,8 @@ iD.operations.Delete = function(selectedIDs, context) { } else if (i === nodes.length - 1) { i--; } else { - var a = iD.geo.dist(entity.loc, context.entity(nodes[i - 1]).loc), - b = iD.geo.dist(entity.loc, context.entity(nodes[i + 1]).loc); + var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc), + b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc); i = a < b ? i - 1 : i + 1; } @@ -19466,7 +20002,7 @@ iD.operations.Delete = function(selectedIDs, context) { t('operations.delete.description'); }; - operation.id = "delete"; + operation.id = 'delete'; operation.keys = [iD.ui.cmd('ââ«'), iD.ui.cmd('ââ¦')]; operation.title = t('operations.delete.title'); @@ -19503,7 +20039,7 @@ iD.operations.Disconnect = function(selectedIDs, context) { t('operations.disconnect.description'); }; - operation.id = "disconnect"; + operation.id = 'disconnect'; operation.keys = [t('operations.disconnect.key')]; operation.title = t('operations.disconnect.title'); @@ -19555,7 +20091,7 @@ iD.operations.Merge = function(selectedIDs, context) { return t('operations.merge.description'); }; - operation.id = "merge"; + operation.id = 'merge'; operation.keys = [t('operations.merge.key')]; operation.title = t('operations.merge.title'); @@ -19583,7 +20119,7 @@ iD.operations.Move = function(selectedIDs, context) { t('operations.move.description'); }; - operation.id = "move"; + operation.id = 'move'; operation.keys = [t('operations.move.key')]; operation.title = t('operations.move.title'); @@ -19618,7 +20154,7 @@ iD.operations.Orthogonalize = function(selectedIDs, context) { t('operations.orthogonalize.description.' + geometry); }; - operation.id = "orthogonalize"; + operation.id = 'orthogonalize'; operation.keys = [t('operations.orthogonalize.key')]; operation.title = t('operations.orthogonalize.title'); @@ -19646,7 +20182,7 @@ iD.operations.Reverse = function(selectedIDs, context) { return t('operations.reverse.description'); }; - operation.id = "reverse"; + operation.id = 'reverse'; operation.keys = [t('operations.reverse.key')]; operation.title = t('operations.reverse.title'); @@ -19673,7 +20209,7 @@ iD.operations.Rotate = function(selectedIDs, context) { return t('operations.rotate.description'); }; - operation.id = "rotate"; + operation.id = 'rotate'; operation.keys = [t('operations.rotate.key')]; operation.title = t('operations.rotate.title'); @@ -19727,7 +20263,7 @@ iD.operations.Split = function(selectedIDs, context) { } }; - operation.id = "split"; + operation.id = 'split'; operation.keys = [t('operations.split.key')]; operation.title = t('operations.split.title'); @@ -19761,7 +20297,7 @@ iD.operations.Straighten = function(selectedIDs, context) { t('operations.straighten.description'); }; - operation.id = "straighten"; + operation.id = 'straighten'; operation.keys = [t('operations.straighten.key')]; operation.title = t('operations.straighten.title'); @@ -19803,7 +20339,7 @@ iD.Connection = function() { }; connection.userURL = function(username) { - return url + "/user/" + username; + return url + '/user/' + username; }; connection.loadFromURL = function(url, callback) { @@ -19821,7 +20357,7 @@ iD.Connection = function() { url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''), function(err, entities) { event.load(err, {data: entities}); - if (callback) callback(err, entities && entities[id]); + if (callback) callback(err, entities && _.find(entities, function(e) { return e.id === id; })); }); }; @@ -19906,15 +20442,13 @@ iD.Connection = function() { var root = dom.childNodes[0], children = root.childNodes, - entities = {}; + entities = []; - var i, o, l; - for (i = 0, l = children.length; i < l; i++) { + for (var i = 0, l = children.length; i < l; i++) { var child = children[i], parser = parsers[child.nodeName]; if (parser) { - o = parser(child); - entities[o.id] = o; + entities.push(parser(child)); } } @@ -20084,7 +20618,7 @@ iD.Connection = function() { extent: iD.geo.Extent( projection.invert([x, y + ts]), projection.invert([x + ts, y])) - } + }; }); function bboxUrl(tile) { @@ -20251,13 +20785,53 @@ iD.Difference = function(base, head) { return result; }; - difference.addParents = function(entities) { + difference.summary = function() { + var relevant = {}; - for (var i in entities) { - addParents(head.parentWays(entities[i]), entities); - addParents(head.parentRelations(entities[i]), entities); + function addEntity(entity, graph, changeType) { + relevant[entity.id] = { + entity: entity, + graph: graph, + changeType: changeType + }; } - return entities; + + function addParents(entity) { + var parents = head.parentWays(entity); + for (var j = parents.length - 1; j >= 0; j--) { + var parent = parents[j]; + if (!(parent.id in relevant)) addEntity(parent, head, 'modified'); + } + } + + _.each(changes, function(change) { + if (change.head && change.head.geometry(head) !== 'vertex') { + addEntity(change.head, head, change.base ? 'modified' : 'created'); + + } else if (change.base && change.base.geometry(base) !== 'vertex') { + addEntity(change.base, base, 'deleted'); + + } else if (change.base && change.head) { // modified vertex + var moved = !_.isEqual(change.base.loc, change.head.loc), + retagged = !_.isEqual(change.base.tags, change.head.tags); + + if (moved) { + addParents(change.head); + } + + if (retagged || (moved && change.head.hasInterestingTags())) { + addEntity(change.head, head, 'modified'); + } + + } else if (change.head && change.head.hasInterestingTags()) { // created vertex + addEntity(change.head, head, 'created'); + + } else if (change.base && change.base.hasInterestingTags()) { // deleted vertex + addEntity(change.base, base, 'deleted'); + } + }); + + return d3.values(relevant); }; difference.complete = function(extent) { @@ -20406,18 +20980,12 @@ iD.Entity.prototype = { resolver.parentRelations(this).length > 0; }, - area: function(resolver) { - return resolver.transient(this, 'area', function() { - return d3.geo.area(this.asGeoJSON(resolver, true)); - }); - }, - hasInterestingTags: function() { return _.keys(this.tags).some(function(key) { - return key != 'attribution' && - key != 'created_by' && - key != 'source' && - key != 'odbl' && + return key !== 'attribution' && + key !== 'created_by' && + key !== 'source' && + key !== 'odbl' && key.indexOf('tiger:') !== 0; }); }, @@ -20429,8 +20997,8 @@ iD.Entity.prototype = { iD.data.deprecated.forEach(function(d) { var match = _.pairs(d.old)[0]; tags.forEach(function(t) { - if (t[0] == match[0] && - (t[1] == match[1] || match[1] == '*')) { + if (t[0] === match[0] && + (t[1] === match[1] || match[1] === '*')) { deprecated[t[0]] = t[1]; } }); @@ -20450,17 +21018,10 @@ iD.Graph = function(other, mutable) { this.inherited = true; } else { - if (Array.isArray(other)) { - var entities = {}; - for (var i = 0; i < other.length; i++) { - entities[other[i].id] = other[i]; - } - other = entities; - } this.entities = Object.create({}); this._parentWays = Object.create({}); this._parentRels = Object.create({}); - this.rebase(other || {}); + this.rebase(other || []); } this.transients = {}; @@ -20549,11 +21110,12 @@ iD.Graph.prototype = { // Merging of data only needed if graph is the base graph if (!this.inherited) { - for (i in entities) { - if (!base.entities[i]) { - base.entities[i] = entities[i]; - this._updateCalculated(undefined, entities[i], - base.parentWays, base.parentRels); + for (i = 0; i < entities.length; i++) { + var entity = entities[i]; + if (!base.entities[entity.id]) { + base.entities[entity.id] = entity; + this._updateCalculated(undefined, entity, + base.parentWays, base.parentRels); } } } @@ -20621,7 +21183,6 @@ iD.Graph.prototype = { ways.push(entity.id); parentWays[added[i]] = ways; } - } else if (type === 'node') { } else if (type === 'relation') { @@ -20684,24 +21245,6 @@ iD.Graph.prototype = { return this; }, - hasAllChildren: function(entity) { - // we're only checking changed entities, since we assume fetched data - // must have all children present - var i; - if (this.entities.hasOwnProperty(entity.id)) { - if (entity.type === 'way') { - for (i = 0; i < entity.nodes.length; i++) { - if (!this.entities[entity.nodes[i]]) return false; - } - } else if (entity.type === 'relation') { - for (i = 0; i < entity.members.length; i++) { - if (!this.entities[entity.members[i].id]) return false; - } - } - } - return true; - }, - // Obliterates any existing entities load: function(entities) { var base = this.base(); @@ -20719,7 +21262,7 @@ iD.History = function(context) { var stack, index, tree, imageryUsed = ['Bing'], dispatch = d3.dispatch('change', 'undone', 'redone'), - lock = false; + lock = iD.util.SessionMutex('lock'); function perform(actions) { actions = Array.prototype.slice.call(actions); @@ -20759,17 +21302,11 @@ iD.History = function(context) { }, merge: function(entities, extent) { - - var base = stack[0].graph.base(), - newentities = Object.keys(entities).filter(function(i) { - return !base.entities[i]; - }); - for (var i = 0; i < stack.length; i++) { stack[i].graph.rebase(entities); } - tree.rebase(newentities); + tree.rebase(entities); dispatch.change(undefined, extent); }, @@ -20875,10 +21412,6 @@ iD.History = function(context) { return this.difference().length() > 0; }, - numChanges: function() { - return this.difference().length(); - }, - imageryUsed: function(sources) { if (sources) { imageryUsed = sources; @@ -20954,14 +21487,18 @@ iD.History = function(context) { stack = h.stack.map(function(d) { var entities = {}, entity; - d.modified && d.modified.forEach(function(key) { - entity = allEntities[key]; - entities[entity.id] = entity; - }); + if (d.modified) { + d.modified.forEach(function(key) { + entity = allEntities[key]; + entities[entity.id] = entity; + }); + } - d.deleted && d.deleted.forEach(function(id) { - entities[id] = undefined; - }); + if (d.deleted) { + d.deleted.forEach(function(id) { + entities[id] = undefined; + }); + } return { graph: iD.Graph(stack[0].graph).load(entities), @@ -20990,39 +21527,37 @@ iD.History = function(context) { }, save: function() { - if (!lock) return history; - context.storage(getKey('lock'), null); - context.storage(getKey('saved_history'), this.toJSON() || null); + if (lock.locked()) context.storage(getKey('saved_history'), history.toJSON() || null); return history; }, clearSaved: function() { - if (!lock) return; - context.storage(getKey('saved_history'), null); + if (lock.locked()) context.storage(getKey('saved_history'), null); + return history; }, lock: function() { - if (context.storage(getKey('lock'))) return false; - context.storage(getKey('lock'), true); - lock = true; - return lock; + return lock.lock(); + }, + + unlock: function() { + lock.unlock(); }, // is iD not open in another window and it detects that // there's a history stored in localStorage that's recoverable? restorableChanges: function() { - return lock && !!context.storage(getKey('saved_history')); + return lock.locked() && !!context.storage(getKey('saved_history')); }, // load history from a version stored in localStorage restore: function() { - if (!lock) return; + if (!lock.locked()) return; var json = context.storage(getKey('saved_history')); - if (json) this.fromJSON(json); + if (json) history.fromJSON(json); context.storage(getKey('saved_history', null)); - }, _getKey: getKey @@ -21044,7 +21579,7 @@ iD.Node = iD.Entity.node = function iD_Node() { iD.Node.prototype = Object.create(iD.Entity.prototype); _.extend(iD.Node.prototype, { - type: "node", + type: 'node', extent: function() { return new iD.geo.Extent(this.loc); @@ -21090,12 +21625,8 @@ _.extend(iD.Node.prototype, { asGeoJSON: function() { return { - type: 'Feature', - properties: this.tags, - geometry: { - type: 'Point', - coordinates: this.loc - } + type: 'Point', + coordinates: this.loc }; } }); @@ -21110,7 +21641,7 @@ iD.Relation = iD.Entity.relation = function iD_Relation() { iD.Relation.prototype = Object.create(iD.Entity.prototype); _.extend(iD.Relation.prototype, { - type: "relation", + type: 'relation', members: [], extent: function(resolver) { @@ -21141,7 +21672,7 @@ _.extend(iD.Relation.prototype, { indexedMembers: function() { var result = new Array(this.members.length); for (var i = 0; i < this.members.length; i++) { - result[i] = _.extend({}, this.members[i], {index: i}) + result[i] = _.extend({}, this.members[i], {index: i}); } return result; }, @@ -21242,12 +21773,8 @@ _.extend(iD.Relation.prototype, { return resolver.transient(this, 'GeoJSON', function () { if (this.isMultipolygon()) { return { - type: 'Feature', - properties: this.tags, - geometry: { - type: 'MultiPolygon', - coordinates: this.multipolygon(resolver) - } + type: 'MultiPolygon', + coordinates: this.multipolygon(resolver) }; } else { return { @@ -21261,6 +21788,12 @@ _.extend(iD.Relation.prototype, { }); }, + area: function(resolver) { + return resolver.transient(this, 'area', function() { + return d3.geo.area(this.asGeoJSON(resolver)); + }); + }, + isMultipolygon: function() { return this.tags.type === 'multipolygon'; }, @@ -21337,14 +21870,9 @@ _.extend(iD.Relation.prototype, { return result; } }); -iD.Tree = function(graph) { - +iD.Tree = function(head) { var rtree = rbush(), - head = graph, - queuedCreated = [], - queuedModified = [], - rectangles = {}, - rebased; + rectangles = {}; function extentRectangle(extent) { return [ @@ -21362,90 +21890,69 @@ iD.Tree = function(graph) { return rect; } - function remove(entity) { - rtree.remove(rectangles[entity.id]); - delete rectangles[entity.id]; - } - - function bulkInsert(entities) { - for (var i = 0, rects = []; i < entities.length; i++) { - rects.push(entityRectangle(entities[i])); - } - rtree.load(rects); - } - - function bulkReinsert(entities) { - entities.forEach(remove); - bulkInsert(entities); - } - - var tree = { - - rebase: function(entities) { - for (var i = 0, inserted = []; i < entities.length; i++) { - if (!graph.entities.hasOwnProperty(entities[i])) { - inserted.push(graph.entity(entities[i])); - } + function updateParents(entity, insertions) { + head.parentWays(entity).forEach(function(parent) { + if (rectangles[parent.id]) { + rtree.remove(rectangles[parent.id]); + insertions.push(entityRectangle(parent)); } - bulkInsert(inserted); - rebased = true; - return tree; - }, + }); - intersects: function(extent, g) { + head.parentRelations(entity).forEach(function(parent) { + if (rectangles[parent.id]) { + rtree.remove(rectangles[parent.id]); + insertions.push(entityRectangle(parent)); + } + updateParents(parent, insertions); + }); + } - head = g; + var tree = {}; - if (graph !== head || rebased) { - var diff = iD.Difference(graph, head), - modified = {}; + tree.rebase = function(entities) { + var insertions = []; - diff.modified().forEach(function(d) { - var loc = graph.entities[d.id].loc; - if (!loc || loc[0] !== d.loc[0] || loc[1] !== d.loc[1]) { - modified[d.id] = d; - } - }); + entities.forEach(function(entity) { + if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) + return; - var created = diff.created().concat(queuedCreated); - modified = d3.values(diff.addParents(modified)) - // some parents might be created, not modified - .filter(function(d) { return !!graph.hasEntity(d.id); }) - .concat(queuedModified); - queuedCreated = []; - queuedModified = []; + insertions.push(entityRectangle(entity)); + updateParents(entity, insertions); + }); - var reinserted = [], - inserted = []; + rtree.load(insertions); - modified.forEach(function(d) { - if (head.hasAllChildren(d)) reinserted.push(d); - else queuedModified.push(d); - }); + return tree; + }; - created.forEach(function(d) { - if (head.hasAllChildren(d)) inserted.push(d); - else queuedCreated.push(d); - }); + tree.intersects = function(extent, graph) { + if (graph !== head) { + var diff = iD.Difference(head, graph), + insertions = []; - bulkReinsert(reinserted); - bulkInsert(inserted); + head = graph; - diff.deleted().forEach(remove); + diff.deleted().forEach(function(entity) { + rtree.remove(rectangles[entity.id]); + delete rectangles[entity.id]; + }); - graph = head; - rebased = false; - } + diff.modified().forEach(function(entity) { + rtree.remove(rectangles[entity.id]); + insertions.push(entityRectangle(entity)); + updateParents(entity, insertions); + }); - return rtree.search(extentRectangle(extent)).map(function (rect) { - return graph.entities[rect.id]; + diff.created().forEach(function(entity) { + insertions.push(entityRectangle(entity)); }); - }, - graph: function() { - return graph; + rtree.load(insertions); } + return rtree.search(extentRectangle(extent)).map(function(rect) { + return head.entity(rect.id); + }); }; return tree; @@ -21461,13 +21968,18 @@ iD.Way = iD.Entity.way = function iD_Way() { iD.Way.prototype = Object.create(iD.Entity.prototype); _.extend(iD.Way.prototype, { - type: "way", + type: 'way', nodes: [], extent: function(resolver) { return resolver.transient(this, 'extent', function() { return this.nodes.reduce(function(extent, id) { - return extent.extend(resolver.entity(id).extent(resolver)); + var node = resolver.hasEntity(id); + if (node) { + return extent.extend(node.extent()); + } else { + return extent; + } }, iD.geo.Extent()); }); }, @@ -21563,13 +22075,13 @@ _.extend(iD.Way.prototype, { for (var i = 0; i < this.nodes.length; i++) { var node = this.nodes[i]; - if (node != id && nodes[nodes.length - 1] != node) { + if (node !== id && nodes[nodes.length - 1] !== node) { nodes.push(node); } } // Preserve circularity - if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] != nodes[0]) { + if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] !== nodes[0]) { nodes.push(nodes[0]); } @@ -21593,41 +22105,46 @@ _.extend(iD.Way.prototype, { return r; }, - asGeoJSON: function(resolver, polygon) { + asGeoJSON: function(resolver) { return resolver.transient(this, 'GeoJSON', function() { + var coordinates = _.pluck(resolver.childNodes(this), 'loc'); + if (this.isArea() && this.isClosed()) { + return { + type: 'Polygon', + coordinates: [coordinates] + }; + } else { + return { + type: 'LineString', + coordinates: coordinates + }; + } + }); + }, + + area: function(resolver) { + return resolver.transient(this, 'area', function() { var nodes = resolver.childNodes(this); - if (this.isArea() && polygon && nodes.length >= 4) { - if (!this.isClosed()) { - nodes = nodes.concat([nodes[0]]); - } + if (!this.isClosed() && nodes.length) { + nodes = nodes.concat([nodes[0]]); + } - var json = { - type: 'Feature', - properties: this.tags, - geometry: { - type: 'Polygon', - coordinates: [_.pluck(nodes, 'loc')] - } - }; + var json = { + type: 'Polygon', + coordinates: [_.pluck(nodes, 'loc')] + }; - // Heuristic for detecting counterclockwise winding order. Assumes - // that OpenStreetMap polygons are not hemisphere-spanning. - if (d3.geo.area(json) > 2 * Math.PI) { - json.geometry.coordinates[0] = json.geometry.coordinates[0].reverse(); - } + var area = d3.geo.area(json); - return json; - } else { - return { - type: 'Feature', - properties: this.tags, - geometry: { - type: 'LineString', - coordinates: _.pluck(nodes, 'loc') - } - }; + // Heuristic for detecting counterclockwise winding order. Assumes + // that OpenStreetMap polygons are not hemisphere-spanning. + if (d3.geo.area(json) > 2 * Math.PI) { + json.coordinates[0] = json.coordinates[0].reverse(); + area = d3.geo.area(json); } + + return isNaN(area) ? 0 : area; }); } }); @@ -21636,23 +22153,26 @@ _.extend(iD.Way.prototype, { // of the following keys, and the value is _not_ one of the associated // values for the respective key. iD.Way.areaKeys = { + aeroway: { taxiway: true}, + amenity: {}, area: {}, + 'area:highway': {}, building: {}, - leisure: {}, - tourism: {}, - ruins: {}, + 'building:part': {}, historic: {}, landuse: {}, + leisure: {}, + man_made: { cutline: true, embankment: true, pipeline: true}, military: {}, natural: { coastline: true }, - amenity: {}, - shop: {}, - man_made: {}, - public_transport: {}, + office: {}, place: {}, - aeroway: {}, - waterway: {}, - power: {} + power: {}, + public_transport: {}, + ruins: {}, + shop: {}, + tourism: {}, + waterway: {} }; iD.Background = function(context) { var dispatch = d3.dispatch('change'), @@ -21670,6 +22190,8 @@ iD.Background = function(context) { } }); + backgroundSources.unshift(iD.BackgroundSource.None()); + function findSource(id) { return _.find(backgroundSources, function(d) { return d.id && d.id === id; @@ -21682,7 +22204,7 @@ iD.Background = function(context) { q = iD.util.stringQs(location.hash.substring(1)); var id = b.id; - if (!id && b.name === 'Custom') { + if (id === 'custom') { id = 'custom:' + b.template; } @@ -21700,17 +22222,12 @@ iD.Background = function(context) { location.replace('#' + iD.util.qsString(q, true)); - var imageryUsed = []; - if (b.name === 'Custom') { - imageryUsed.push('Custom (' + b.template + ')'); - } else { - imageryUsed.push(b.id || b.name); - } + var imageryUsed = [b.imageryUsed()]; overlayLayers.forEach(function (d) { var source = d.source(); if (!source.isLocatorOverlay()) { - imageryUsed.push(source.id || source.name); + imageryUsed.push(source.imageryUsed()); } }); @@ -21739,7 +22256,7 @@ iD.Background = function(context) { gpx.call(gpxLayer); var overlays = selection.selectAll('.overlay-layer') - .data(overlayLayers, function(d) { return d.source().name }); + .data(overlayLayers, function(d) { return d.source().name(); }); overlays.enter().insert('div', '.layer-data') .attr('class', 'layer-layer overlay-layer'); @@ -21778,7 +22295,7 @@ iD.Background = function(context) { }; background.bing = function() { - background.baseLayerSource(findSource("Bing")); + background.baseLayerSource(findSource('Bing')); }; background.hasGpxLayer = function() { @@ -21789,6 +22306,23 @@ iD.Background = function(context) { return background.hasGpxLayer() && gpxLayer.enable(); }; + function toDom(x) { + return (new DOMParser()).parseFromString(x, 'text/xml'); + } + + background.gpxLayerFiles = function(fileList) { + var f = fileList[0], + reader = new FileReader(); + + reader.onload = function(e) { + gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result))); + dispatch.change(); + context.map().pan([0, 0]); + }; + + reader.readAsText(f); + }; + background.zoomToGpxLayer = function() { if (background.hasGpxLayer()) { context.map() @@ -21803,10 +22337,14 @@ iD.Background = function(context) { background.showsLayer = function(d) { return d === baseLayer.source() || - (d.name === 'Custom' && baseLayer.source().name === 'Custom') || + (d.id === 'custom' && baseLayer.source().id === 'custom') || overlayLayers.some(function(l) { return l.source() === d; }); }; + background.overlayLayerSources = function() { + return overlayLayers.map(function (l) { return l.source(); }); + }; + background.toggleOverlayLayer = function(d) { var layer; @@ -21847,12 +22385,9 @@ iD.Background = function(context) { chosen = q.background || q.layer; if (chosen && chosen.indexOf('custom:') === 0) { - background.baseLayerSource(iD.BackgroundSource({ - template: chosen.replace(/^custom:/, ''), - name: 'Custom' - })); + background.baseLayerSource(iD.BackgroundSource.Custom(chosen.replace(/^custom:/, ''))); } else { - background.baseLayerSource(findSource(chosen) || findSource("Bing")); + background.baseLayerSource(findSource(chosen) || findSource('Bing')); } var locator = _.find(backgroundSources, function(d) { @@ -21873,7 +22408,8 @@ iD.Background = function(context) { }; iD.BackgroundSource = function(data) { var source = _.clone(data), - offset = [0, 0]; + offset = [0, 0], + name = source.name; source.scaleExtent = data.scaleExtent || [0, 20]; @@ -21889,6 +22425,14 @@ iD.BackgroundSource = function(data) { return source; }; + source.name = function() { + return name; + }; + + source.imageryUsed = function() { + return source.id || name; + }; + source.url = function(coord) { return data.template .replace('{x}', coord[0]) @@ -21915,7 +22459,7 @@ iD.BackgroundSource = function(data) { }; source.isLocatorOverlay = function() { - return source.name === 'Locator Overlay'; + return name === 'Locator Overlay'; }; source.copyrightNotices = function() {}; @@ -21948,7 +22492,7 @@ iD.BackgroundSource.Bing = function(data, dispatch) { dispatch.change(); }); - var template = "http://ecn.t{t}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z", + var template = 'http://ecn.t{t}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z', subdomains = [0, 1, 2, 3]; bing.url = function(coord) { @@ -21980,12 +22524,40 @@ iD.BackgroundSource.Bing = function(data, dispatch) { }).join(', '); }; - bing.logo = "bing_maps.png"; - bing.terms_url = "http://opengeodata.org/microsoft-imagery-details"; + bing.logo = 'bing_maps.png'; + bing.terms_url = 'http://opengeodata.org/microsoft-imagery-details'; return bing; }; -iD.GpxLayer = function(context, dispatch) { + +iD.BackgroundSource.None = function() { + var source = iD.BackgroundSource({id: 'none', template: ''}); + + source.name = function() { + return t('background.none'); + }; + + source.imageryUsed = function() { + return 'None'; + }; + + return source; +}; + +iD.BackgroundSource.Custom = function(template) { + var source = iD.BackgroundSource({id: 'custom', template: template}); + + source.name = function() { + return t('background.custom'); + }; + + source.imageryUsed = function() { + return 'Custom (' + template + ')'; + }; + + return source; +}; +iD.GpxLayer = function(context) { var projection, gj = {}, enable = true, @@ -22040,10 +22612,6 @@ iD.GpxLayer = function(context, dispatch) { } } - function toDom(x) { - return (new DOMParser()).parseFromString(x, 'text/xml'); - } - render.projection = function(_) { if (!arguments.length) return projection; projection = _; @@ -22082,16 +22650,7 @@ iD.GpxLayer = function(context, dispatch) { d3.event.stopPropagation(); d3.event.preventDefault(); if (!iD.detect().filedrop) return; - var f = d3.event.dataTransfer.files[0], - reader = new FileReader(); - - reader.onload = function(e) { - render.geojson(toGeoJSON.gpx(toDom(e.target.result))); - dispatch.change(); - context.map().pan([0, 0]); - }; - - reader.readAsText(f); + context.background().gpxLayerFiles(d3.event.dataTransfer.files); }) .on('dragenter.localgpx', over) .on('dragexit.localgpx', over) @@ -22117,9 +22676,9 @@ iD.Map = function(context) { points = iD.svg.Points(roundedProjection, context), vertices = iD.svg.Vertices(roundedProjection, context), lines = iD.svg.Lines(projection), - areas = iD.svg.Areas(roundedProjection), + areas = iD.svg.Areas(projection), midpoints = iD.svg.Midpoints(roundedProjection, context), - labels = iD.svg.Labels(roundedProjection, context), + labels = iD.svg.Labels(projection, context), supersurface, surface, mouse, mousemove; @@ -22144,7 +22703,7 @@ iD.Map = function(context) { map.surface = surface = dataLayer.append('svg') .on('mousedown.zoom', function() { - if (d3.event.button == 2) { + if (d3.event.button === 2) { d3.event.stopPropagation(); } }, true) @@ -22315,7 +22874,8 @@ iD.Map = function(context) { var zoom = String(~~map.zoom()); if (surface.attr('data-zoom') !== zoom) { - surface.attr('data-zoom', zoom); + surface.attr('data-zoom', zoom) + .classed('low-zoom', zoom <= 16); } if (!difference) { @@ -22356,7 +22916,7 @@ iD.Map = function(context) { map.mouse = function() { var e = mousemove || d3.event, s; - while (s = e.sourceEvent) e = s; + while ((s = e.sourceEvent)) e = s; return mouse(e); }; @@ -22370,10 +22930,10 @@ iD.Map = function(context) { return map; }; - function setZoom(z, force) { - if (z === map.zoom() && !force) + function setZoom(_, force) { + if (_ === map.zoom() && !force) return false; - var scale = 256 * Math.pow(2, z), + var scale = 256 * Math.pow(2, _), center = pxCenter(), l = pointLocation(center); scale = Math.max(1024, Math.min(256 * Math.pow(2, 24), scale)); @@ -22388,15 +22948,16 @@ iD.Map = function(context) { return true; } - function setCenter(loc) { - var t = projection.translate(), - c = pxCenter(), - ll = projection(loc); - if (ll[0] === c[0] && ll[1] === c[1]) + function setCenter(_) { + var c = map.center(); + if (_[0] === c[0] && _[1] === c[1]) return false; + var t = projection.translate(), + pxC = pxCenter(), + ll = projection(_); projection.translate([ - t[0] - ll[0] + c[0], - t[1] - ll[1] + c[1]]); + t[0] - ll[0] + pxC[0], + t[1] - ll[1] + pxC[1]]); zoom.translate(projection.translate()); return true; } @@ -22480,7 +23041,7 @@ iD.Map = function(context) { d3.timer(function() { if (stop) return true; map.center(iD.geo.interp(from, loc, (t += 1) / 10)); - return t == 10; + return t === 10; }, 20); return map; }; @@ -22592,6 +23153,7 @@ iD.TileLayer = function() { if (source.validZoom(z)) { tile().forEach(function(d) { addSource(d); + if (d[3] === '') return; requests.push(d); if (cache[d[3]] === false && lookUp(d)) { requests.push(addSource(lookUp(d))); @@ -22700,29 +23262,27 @@ iD.svg = { }; }, + Round: function () { + return d3.geo.transform({ + point: function(x, y) { return this.stream.point(Math.floor(x), Math.floor(y)); } + }); + }, + Path: function(projection, graph, polygon) { var cache = {}, - path = d3.geo.path().projection(projection); + round = iD.svg.Round().stream, + clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream, + project = projection.stream, + path = d3.geo.path() + .projection({stream: function(output) { return polygon ? project(round(output)) : project(clip(round(output))); }}); - function result(entity) { - if (entity.id in cache) return cache[entity.id]; - - var buffer = ''; - - path.context({ - beginPath: function() {}, - moveTo: function(x, y) { buffer += 'M' + Math.floor(x) + ',' + Math.floor(y); }, - lineTo: function(x, y) { buffer += 'L' + Math.floor(x) + ',' + Math.floor(y); }, - arc: function() {}, - closePath: function() { buffer += 'Z'; } - }); - - path(entity.asGeoJSON(graph, polygon)); - - return cache[entity.id] = buffer; - } - - return result; + return function(entity) { + if (entity.id in cache) { + return cache[entity.id]; + } else { + return cache[entity.id] = path(entity.asGeoJSON(graph)); // jshint ignore:line + } + }; }, OneWaySegments: function(projection, graph, dt) { @@ -22750,7 +23310,7 @@ iD.svg = { b = [x, y]; if (a) { - var span = iD.geo.dist(a, b) - offset; + var span = iD.geo.euclideanDistance(a, b) - offset; if (span >= 0) { var angle = Math.atan2(b[1] - a[1], b[0] - a[0]), @@ -22797,7 +23357,8 @@ iD.svg = { } }; iD.svg.Areas = function(projection) { - // Patterns only work in Firefox when set directly on element + // Patterns only work in Firefox when set directly on element. + // (This is not a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=750632) var patterns = { wetland: 'wetland', beach: 'beach', @@ -22832,7 +23393,8 @@ iD.svg.Areas = function(projection) { var entity = entities[i]; if (entity.geometry(graph) !== 'area') continue; - if (multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph)) { + multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph); + if (multipolygon) { areas[multipolygon.id] = { entity: multipolygon.mergeTags(entity.tags), area: Math.abs(entity.area(graph)) @@ -22859,23 +23421,28 @@ iD.svg.Areas = function(projection) { fill: areas }; + var paths = surface.selectAll('.layer-shadow, .layer-stroke, .layer-fill') + .selectAll('path.area') + .filter(filter) + .data(function(layer) { return data[layer]; }, iD.Entity.key); + + // Remove exiting areas first, so they aren't included in the `fills` + // array used for sorting below (https://github.com/systemed/iD/issues/1903). + paths.exit() + .remove(); + + var fills = surface.selectAll('.layer-fill path.area')[0]; + var bisect = d3.bisector(function(node) { return -node.__data__.area(graph); }).left; - var fills = surface.selectAll('.layer-fill path.area')[0]; - function sortedByArea(entity) { if (this.__data__ === 'fill') { return fills[bisect(fills, -entity.area(graph))]; } } - var paths = surface.selectAll('.layer-shadow, .layer-stroke, .layer-fill') - .selectAll('path.area') - .filter(filter) - .data(function(layer) { return data[layer]; }, iD.Entity.key); - paths.enter() .insert('path', sortedByArea) .each(function(entity) { @@ -22891,12 +23458,10 @@ iD.svg.Areas = function(projection) { paths .attr('d', path); - - paths.exit() - .remove(); }; }; iD.svg.Labels = function(projection, context) { + var path = d3.geo.path().projection(projection); // Replace with dict and iterate over entities tags instead? var label_stack = [ @@ -22931,11 +23496,11 @@ iD.svg.Labels = function(projection, context) { var font_sizes = label_stack.map(function(d) { var style = iD.util.getStyle('text.' + d[0] + '.tag-' + d[1]), - m = style && style.cssText.match("font-size: ([0-9]{1,2})px;"); + m = style && style.cssText.match('font-size: ([0-9]{1,2})px;'); if (m) return parseInt(m[1], 10); style = iD.util.getStyle('text.' + d[0]); - m = style && style.cssText.match("font-size: ([0-9]{1,2})px;"); + m = style && style.cssText.match('font-size: ([0-9]{1,2})px;'); if (m) return parseInt(m[1], 10); return default_size; @@ -22988,19 +23553,18 @@ iD.svg.Labels = function(projection, context) { } function drawLineLabels(group, entities, filter, classes, labels) { - var texts = group.selectAll('text.' + classes) .filter(filter) .data(entities, iD.Entity.key); - var tp = texts.enter() + texts.enter() .append('text') .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; }) .append('textPath') .attr('class', 'textpath'); - var tps = texts.selectAll('.textpath') + texts.selectAll('.textpath') .filter(filter) .data(entities, iD.Entity.key) .attr({ @@ -23010,11 +23574,9 @@ iD.svg.Labels = function(projection, context) { .text(iD.util.displayName); texts.exit().remove(); - } function drawLinePaths(group, entities, filter, classes, labels) { - var halos = group.selectAll('path') .filter(filter) .data(entities, iD.Entity.key); @@ -23266,8 +23828,7 @@ iD.svg.Labels = function(projection, context) { } function getAreaLabel(entity, width, height) { - var path = d3.geo.path().projection(projection), - centroid = path.centroid(entity.asGeoJSON(graph, true)), + var centroid = path.centroid(entity.asGeoJSON(graph, true)), extent = entity.extent(graph), entitywidth = projection(extent[1])[0] - projection(extent[0])[0], rect; @@ -23468,7 +24029,7 @@ iD.svg.Midpoints = function(projection, context) { // If neither of the nodes changed, no need to redraw midpoint if (!midpoints[id] && (filter(a) || filter(b))) { var loc = iD.geo.interp(a.loc, b.loc, 0.5); - if (extent.intersects(loc) && iD.geo.dist(projection(a.loc), projection(b.loc)) > 40) { + if (extent.intersects(loc) && iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) { midpoints[id] = { type: 'midpoint', id: id, @@ -23604,7 +24165,7 @@ iD.svg.Restrictions = function(context) { } drawRestrictions.turns = function (graph, selectedIDs) { - if (selectedIDs.length != 1) + if (selectedIDs.length !== 1) return []; var from = graph.entity(selectedIDs[0]); @@ -23645,7 +24206,7 @@ iD.svg.Restrictions = function(context) { to: to, restriction: restriction, angle: Math.atan2(b[1] - a[1], b[0] - a[0]) - } + }; }; return drawRestrictions; @@ -23673,7 +24234,7 @@ iD.svg.Surface = function(context) { .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('transform', function(d) { return 'translate(-' + d.value[0] + ',-' + d.value[1] + ')'; }) .attr('xlink:href', '#' + id); }; } @@ -23769,11 +24330,15 @@ iD.svg.Surface = function(context) { }; }; iD.svg.TagClasses = function() { - var keys = d3.set([ - 'highway', 'railway', 'waterway', 'power', 'motorway', 'amenity', - 'natural', 'landuse', 'building', 'oneway', 'bridge', 'boundary', - 'tunnel', 'leisure', 'construction', 'place', 'aeroway' - ]), tagClassRe = /^tag-/, + var primary = [ + 'highway', 'railway', 'waterway', 'aeroway', 'motorway', + 'boundary', 'power', 'amenity', 'natural', 'landuse', + 'building', 'leisure', 'place' + ], + secondary = [ + 'oneway', 'bridge', 'tunnel', 'construction' + ], + tagClassRe = /^tag-/, tags = function(entity) { return entity.tags; }; var tagClasses = function(selection) { @@ -23786,10 +24351,21 @@ iD.svg.TagClasses = function() { return name.length && !tagClassRe.test(name); }).join(' '); - var t = tags(entity); - for (var k in t) { - if (!keys.has(k) || t[k] === 'no') continue; - classes += ' tag-' + k + ' tag-' + k + '-' + t[k]; + var t = tags(entity), i, k, v; + + for (i = 0; i < primary.length; i++) { + k = primary[i]; + v = t[k]; + if (!v || v === 'no') continue; + classes += ' tag-' + k + ' tag-' + k + '-' + v; + break; + } + + for (i = 0; i < secondary.length; i++) { + k = secondary[i]; + v = t[k]; + if (!v || v === 'no') continue; + classes += ' tag-' + k + ' tag-' + k + '-' + v; } classes = classes.trim(); @@ -23870,9 +24446,10 @@ iD.svg.Vertices = function(projection, context) { var icons = {}; function icon(entity) { if (entity.id in icons) return icons[entity.id]; - return icons[entity.id] = (zoom !== 0 && + icons[entity.id] = zoom !== 0 && entity.hasInterestingTags() && - context.presets().match(entity, graph).icon); + context.presets().match(entity, graph).icon; + return icons[entity.id]; } function circle(klass) { @@ -23885,7 +24462,7 @@ iD.svg.Vertices = function(projection, context) { this.setAttribute('cx', c); this.setAttribute('cy', -c); this.setAttribute('r', r); - } + }; } var enter = groups.enter().append('g') @@ -23930,7 +24507,7 @@ iD.svg.Vertices = function(projection, context) { if (entity.id in selected || entity.hasInterestingTags() || entity.isIntersection(graph)) { - vertices.push(entity) + vertices.push(entity); } } @@ -23959,8 +24536,7 @@ iD.svg.Vertices = function(projection, context) { }; iD.ui = function(context) { function render(container) { - var history = context.history(), - map = context.map(); + var map = context.map(); if (iD.detect().opera) container.classed('opera', true); @@ -23988,7 +24564,7 @@ iD.ui = function(context) { .attr('id', 'map') .call(map); - var spacer = bar.append('div') + bar.append('div') .attr('class', 'spacer col4'); var limiter = bar.append('div') @@ -24010,14 +24586,12 @@ iD.ui = function(context) { .attr('class', 'spinner') .call(iD.ui.Spinner(context)); - content.append('div') - .attr('class', 'attribution') - .attr('tabindex', -1) + content .call(iD.ui.Attribution(context)); content.append('div') .style('display', 'none') - .attr('class', 'help-wrap fillL col5 content'); + .attr('class', 'help-wrap map-overlay fillL col5 content'); var controls = bar.append('div') .attr('class', 'map-controls'); @@ -24085,6 +24659,10 @@ iD.ui = function(context) { return context.save(); }; + window.onunload = function() { + context.history().unlock(); + }; + d3.select(window).on('resize.editor', function() { map.dimensions(m.dimensions()); }); @@ -24198,20 +24776,28 @@ iD.ui.Account = function(context) { iD.ui.Attribution = function(context) { var selection; - function update() { - if (!context.background().baseLayerSource()) { - selection.html(''); - return; - } + function attribution(data, klass) { + var div = selection.selectAll('.' + klass) + .data([0]); + + div.enter() + .append('div') + .attr('class', klass); - var attribution = selection.selectAll('.provided-by') - .data([context.background().baseLayerSource()], function(d) { return d.name; }); + var background = div.selectAll('.attribution') + .data(data, function(d) { return d.name(); }); - attribution.enter() + background.enter() .append('span') - .attr('class', 'provided-by') + .attr('class', 'attribution') .each(function(d) { - var source = d.terms_text || d.id || d.name; + if (d.terms_html) { + d3.select(this) + .html(d.terms_html); + return; + } + + var source = d.terms_text || d.id || d.name(); if (d.logo) { source = ''; @@ -24229,10 +24815,10 @@ iD.ui.Attribution = function(context) { } }); - attribution.exit() + background.exit() .remove(); - var copyright = attribution.selectAll('.copyright-notice') + var copyright = background.selectAll('.copyright-notice') .data(function(d) { var notice = d.copyrightNotices(context.map().zoom(), context.map().extent()); return notice ? [notice] : []; @@ -24248,6 +24834,13 @@ iD.ui.Attribution = function(context) { .remove(); } + function update() { + attribution([context.background().baseLayerSource()], 'base-layer-attribution'); + attribution(context.background().overlayLayerSources().filter(function (s) { + return s.validZoom(context.map().zoom()); + }), 'overlay-layer-attribution'); + } + return function(select) { selection = select; @@ -24262,15 +24855,18 @@ iD.ui.Attribution = function(context) { }; iD.ui.Background = function(context) { var key = 'b', - opacities = [1, 0.5, 0], + opacities = [1, 0.75, 0.5, 0.25], directions = [ ['left', [1, 0]], ['top', [0, -1]], ['right', [-1, 0]], ['bottom', [0, 1]]], - opacityDefault = (context.storage('background-opacity') != undefined) ? + opacityDefault = (context.storage('background-opacity') !== null) ? (+context.storage('background-opacity')) : 0.5; + // Can be 0 from <1.3.0 use or due to issue #1923. + if (opacityDefault === 0) opacityDefault = 0.5; + function background(selection) { function setOpacity(d) { @@ -24290,7 +24886,7 @@ iD.ui.Background = function(context) { return context.background().showsLayer(d); } - content.selectAll('label.layer, label.custom_layer') + content.selectAll('.layer, .custom_layer') .classed('active', active) .selectAll('input') .property('checked', active); @@ -24305,14 +24901,13 @@ iD.ui.Background = function(context) { function clickCustom() { d3.event.preventDefault(); var template = window.prompt(t('background.custom_prompt')); - if (!template) { + if (!template || template.indexOf('google.com') !== -1 || + template.indexOf('googleapis.com') !== -1 || + template.indexOf('google.ru') !== -1) { selectLayer(); return; } - context.background().baseLayerSource(iD.BackgroundSource({ - template: template, - name: 'Custom' - })); + context.background().baseLayerSource(iD.BackgroundSource.Custom(template)); selectLayer(); } @@ -24332,33 +24927,33 @@ iD.ui.Background = function(context) { .sources(context.map().extent()) .filter(filter); - var layerLinks = layerList.selectAll('label.layer') - .data(sources, function(d) { return d.name; }); + var layerLinks = layerList.selectAll('li.layer') + .data(sources, function(d) { return d.name(); }); - var layerInner = layerLinks.enter() - .insert('label', '.custom_layer') + var enter = layerLinks.enter() + .insert('li', '.custom_layer') .attr('class', 'layer'); // only set tooltips for layers with tooltips - layerInner - .filter(function(d) { return d.description; }) + enter.filter(function(d) { return d.description; }) .call(bootstrap.tooltip() .title(function(d) { return d.description; }) - .placement('left')); + .placement('top')); - layerInner.append('input') + var label = enter.append('label'); + + label.append('input') .attr('type', type) .attr('name', 'layers') - .attr('value', function(d) { return d.name; }) .on('change', change); - layerInner.append('span') - .text(function(d) { return d.name; }); + label.append('span') + .text(function(d) { return d.name(); }); layerLinks.exit() .remove(); - layerList.style('display', layerList.selectAll('label.layer').data().length > 0 ? 'block' : 'none'); + layerList.style('display', layerList.selectAll('li.layer').data().length > 0 ? 'block' : 'none'); } function update() { @@ -24399,7 +24994,7 @@ iD.ui.Background = function(context) { } var content = selection.append('div') - .attr('class', 'fillL map-overlay content hide'), + .attr('class', 'fillL map-overlay col3 content hide'), tooltip = bootstrap.tooltip() .placement('left') .html(true) @@ -24410,9 +25005,7 @@ iD.ui.Background = function(context) { function toggle() { if (d3.event) d3.event.preventDefault(); tooltip.hide(button); - var visible = !button.classed('active'); - setVisible(visible); - if (visible) content.selectAll('.toggle-list label:first-child').node().focus(); + setVisible(!button.classed('active')); } function setVisible(show) { @@ -24425,16 +25018,16 @@ iD.ui.Background = function(context) { return d3.event.stopPropagation(); }); content.style('display', 'block') - .style('left', '0px') + .style('right', '-300px') .transition() .duration(200) - .style('left', '-260px'); + .style('right', '0px'); } else { content.style('display', 'block') - .style('left', '-260px') + .style('right', '0px') .transition() .duration(200) - .style('left', '0px') + .style('right', '-300px') .each('end', function() { d3.select(this).style('display', 'none'); }); @@ -24469,66 +25062,82 @@ iD.ui.Background = function(context) { return t('background.percent_brightness', { opacity: (d * 100) }); }) .on('click.set-opacity', setOpacity) - .html("
") + .html('') .call(bootstrap.tooltip() - .placement('top')) + .placement('left')) .append('div') .attr('class', 'opacity') .style('opacity', String); - var backgroundList = content - .append('div') - .attr('class', 'toggle-list layer-list'); + var backgroundList = content.append('ul') + .attr('class', 'layer-list'); - var custom = backgroundList - .append('label') + var custom = backgroundList.append('li') .attr('class', 'custom_layer') - .datum({name: 'Custom'}); + .datum(iD.BackgroundSource.Custom()); + + var label = custom.append('label'); - custom.append('input') + label.append('input') .attr('type', 'radio') .attr('name', 'layers') .on('change', clickCustom); - custom.append('span') + label.append('span') .text(t('background.custom')); - var overlayList = content - .append('div') - .attr('class', 'toggle-list layer-list'); + var overlayList = content.append('ul') + .attr('class', 'layer-list'); - var gpxLayerItem = content - .append('div') + var gpxLayerItem = content.append('ul') .style('display', iD.detect().filedrop ? 'block' : 'none') - .attr('class', 'toggle-list layer-list') - .append('label') + .attr('class', 'layer-list') + .append('li') .classed('layer-toggle-gpx', true); - gpxLayerItem.call(bootstrap.tooltip() - .title(t('gpx.drag_drop')) - .placement('left')); - - gpxLayerItem.append('input') - .attr('type', 'checkbox') - .property('disabled', true) - .on('change', clickGpx); - - gpxLayerItem.append('span') - .text(t('gpx.local_layer')); - - gpxLayerItem - .append('button') - .attr('class', 'minor layer-extent') + gpxLayerItem.append('button') + .attr('class', 'layer-extent') + .call(bootstrap.tooltip() + .title(t('gpx.zoom')) + .placement('left')) .on('click', function() { d3.event.preventDefault(); d3.event.stopPropagation(); context.background().zoomToGpxLayer(); }) .append('span') - .attr('class', 'icon geocode' ); + .attr('class', 'icon geolocate'); - var adjustments = content - .append('div') + gpxLayerItem.append('button') + .attr('class', 'layer-browse') + .call(bootstrap.tooltip() + .title(t('gpx.browse')) + .placement('left')) + .on('click', function() { + d3.select(document.createElement('input')) + .attr('type', 'file') + .on('change', function() { + context.background().gpxLayerFiles(d3.event.target.files); + }) + .node().click(); + }) + .append('span') + .attr('class', 'icon geocode'); + + label = gpxLayerItem.append('label') + .call(bootstrap.tooltip() + .title(t('gpx.drag_drop')) + .placement('top')); + + label.append('input') + .attr('type', 'checkbox') + .property('disabled', true) + .on('change', clickGpx); + + label.append('span') + .text(t('gpx.local_layer')); + + var adjustments = content.append('div') .attr('class', 'adjustments'); adjustments.append('a') @@ -24543,8 +25152,7 @@ iD.ui.Background = function(context) { d3.event.preventDefault(); }); - var nudgeContainer = adjustments - .append('div') + var nudgeContainer = adjustments.append('div') .attr('class', 'nudge-container cf') .style('display', 'none'); @@ -24564,10 +25172,6 @@ iD.ui.Background = function(context) { resetButton.append('div') .attr('class', 'icon undo'); - resetButton.call(bootstrap.tooltip() - .title(t('background.reset')) - .placement('bottom')); - context.map() .on('move.background-update', _.debounce(update, 1000)); update(); @@ -24614,33 +25218,22 @@ iD.ui.cmd = function(code) { return keys.join('+'); }; iD.ui.Commit = function(context) { - var event = d3.dispatch('cancel', 'save', 'fix'), - presets = context.presets(); - - function zipSame(d) { - var c = {}, n = -1; - for (var i = 0; i < d.length; i++) { - var desc = { - name: d[i].tags.name || presets.match(d[i], context.graph()).name(), - geometry: d[i].geometry(context.graph()), - count: 1, - tagText: iD.util.tagText(d[i]) - }; + var event = d3.dispatch('cancel', 'save'); - var fingerprint = desc.name + desc.tagText; - if (c[fingerprint]) { - c[fingerprint].count++; - } else { - c[fingerprint] = desc; + function commit(selection) { + var changes = context.history().changes(), + summary = context.history().difference().summary(); + + function zoomToEntity(change) { + var entity = change.entity; + if (change.changeType !== 'deleted' && + context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') { + context.map().zoomTo(entity); + context.surface().selectAll( + iD.util.entityOrMemberSelector([entity.id], context.graph())) + .classed('hover', true); } } - return _.values(c); - } - - function commit(selection) { - var changes = context.history().changes(); - - function changesLength(d) { return changes[d].length; } var header = selection.append('div') .attr('class', 'header fillL'); @@ -24705,7 +25298,7 @@ iD.ui.Commit = function(context) { // Confirm Button var saveButton = saveSection.append('button') - .attr('class', 'action col3 button') + .attr('class', 'action col4 button') .on('click.save', function() { event.save({ comment: commentField.node().value @@ -24716,11 +25309,13 @@ iD.ui.Commit = function(context) { .attr('class', 'label') .text(t('commit.save')); + // Warnings var warnings = body.selectAll('div.warning-section') - .data(iD.validate(changes, context.graph())) + .data([iD.validate(changes, context.graph())]) .enter() .append('div') - .attr('class', 'modal-section warning-section fillL2'); + .attr('class', 'modal-section warning-section fillL2') + .style('display', function(d) { return _.isEmpty(d) ? 'none' : null; }); warnings.append('h3') .text(t('commit.warnings')); @@ -24730,52 +25325,90 @@ iD.ui.Commit = function(context) { .selectAll('li') .data(function(d) { return d; }) .enter() - .append('li'); + .append('li') + .on('mouseover', mouseover) + .on('mouseout', mouseout) + .on('click', warningClick); - // only show the fix icon when an entity is given - warningLi.filter(function(d) { return d.entity; }) - .append('button') - .attr('class', 'minor') - .on('click', event.fix) - .append('span') - .attr('class', 'icon warning'); + warningLi.append('span') + .attr('class', 'alert icon icon-pre-text'); warningLi.append('strong').text(function(d) { return d.message; }); - var section = body.selectAll('div.commit-section') - .data(['modified', 'deleted', 'created'].filter(changesLength)) + var changeSection = body.selectAll('div.commit-section') + .data([0]) .enter() .append('div') .attr('class', 'commit-section modal-section fillL2'); - section.append('h3') - .text(function(d) { return t('commit.' + d); }) - .append('small') - .attr('class', 'count') - .text(changesLength); + changeSection.append('h3') + .text(summary.length + ' Changes'); - var li = section.append('ul') + var li = changeSection.append('ul') .attr('class', 'changeset-list') .selectAll('li') - .data(function(d) { return zipSame(changes[d]); }) + .data(summary) .enter() - .append('li'); + .append('li') + .on('mouseover', mouseover) + .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.append('span') + .attr('class', 'change-type') + .text(function(d) { + return d.changeType + ' '; + }); li.append('strong') + .attr('class', 'entity-type') .text(function(d) { - return d.geometry + ' '; + return context.presets().match(d.entity, d.graph).name(); }); li.append('span') - .text(function(d) { return d.name; }) - .attr('title', function(d) { return d.tagText; }); + .attr('class', 'entity-name') + .text(function(d) { + var name = iD.util.displayName(d.entity) || '', + string = ''; + if (name !== '') string += ':'; + return string += ' ' + name; + }); - li.filter(function(d) { return d.count > 1; }) - .append('span') - .attr('class', 'count') - .text(function(d) { return d.count; }); + li.style('opacity', 0) + .transition() + .style('opacity', 1); + + li.style('opacity', 0) + .transition() + .style('opacity', 1); + + function mouseover(d) { + if (d.entity) { + context.surface().selectAll( + iD.util.entityOrMemberSelector([d.entity.id], context.graph()) + ).classed('hover', true); + } + } + + function mouseout() { + context.surface().selectAll('.hover') + .classed('hover', false); + } + + function warningClick(d) { + if (d.entity) { + context.map().zoomTo(d.entity); + context.enter(iD.modes.Select(context, [d.entity.id])); + } + } } return d3.rebind(commit, event, 'on'); @@ -24788,16 +25421,16 @@ iD.ui.confirm = function(selection) { var section = modal.select('.content'); - var modalHeader = section.append('div') + section.append('div') .attr('class', 'modal-section header'); - var description = section.append('div') + section.append('div') .attr('class', 'modal-section message-text'); var buttonwrap = section.append('div') .attr('class', 'modal-section buttons cf'); - var okbutton = buttonwrap.append('button') + buttonwrap.append('button') .attr('class', 'col2 action') .on('click.confirm', function() { modal.remove(); @@ -25097,7 +25730,7 @@ iD.ui.EntityEditor = function(context) { if (!arguments.length) return preset; if (_ !== preset) { preset = _; - reference = iD.ui.TagReference(preset.reference()) + reference = iD.ui.TagReference(preset.reference(context.geometry(id))) .showing(false); } return entityEditor; @@ -25191,15 +25824,18 @@ iD.ui.FeatureList = function(context) { } (geocodeResults || []).forEach(function(d) { - result.push({ - id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id), - geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point', - type: (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' '), - name: d.display_name, - extent: new iD.geo.Extent( - [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])], - [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])]) - }) + // https://github.com/systemed/iD/issues/1890 + if (d.osm_type && d.osm_id) { + result.push({ + id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id), + geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point', + type: (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' '), + name: d.display_name, + extent: new iD.geo.Extent( + [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])], + [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])]) + }); + } }); return result; @@ -25509,9 +26145,6 @@ iD.ui.Help = function(context) { return d3.event.stopPropagation(); }); - selection.on('mousedown.help-inside', function() { - return d3.event.stopPropagation(); - }); } return help; @@ -25630,13 +26263,13 @@ iD.ui.intro = function(context) { // Load semi-real data used in intro context.connection().toggle(false).flush(); - context.history().save().reset(); + context.history().reset(); introGraph = JSON.parse(iD.introGraph); for (var key in introGraph) { introGraph[key] = iD.Entity(introGraph[key]); } - context.history().merge(iD.Graph().load(introGraph).entities); + context.history().merge(d3.values(iD.Graph().load(introGraph).entities)); context.background().bing(); // Block saving @@ -25672,7 +26305,7 @@ iD.ui.intro = function(context) { navwrap.remove(); d3.select('.background-layer').style('opacity', opacity); context.connection().toggle(true).flush().loadedTiles(loadedTiles); - context.history().reset().merge(baseEntities); + context.history().reset().merge(d3.values(baseEntities)); context.background().baseLayerSource(background); if (history) context.history().fromJSON(history); window.location.replace(hash); @@ -25886,7 +26519,7 @@ iD.ui.modal = function(selection, blocking) { .attr('class', 'modal fillL col6'); shaded.on('click.remove-modal', function() { - if (d3.event.target == this && !blocking) shaded.close(); + if (d3.event.target === this && !blocking) shaded.close(); }); modal.append('button') @@ -25959,12 +26592,12 @@ iD.ui.Modes = function(context) { context.on('enter.editor', function(entered) { buttons.classed('active', function(mode) { return entered.button === mode.button; }); context.container() - .classed("mode-" + entered.id, true); + .classed('mode-' + entered.id, true); }); context.on('exit.editor', function(exited) { context.container() - .classed("mode-" + exited.id, false); + .classed('mode-' + exited.id, false); }); var keybinding = d3.keybinding('mode-buttons'); @@ -26021,11 +26654,7 @@ iD.ui.preset = function(context) { field.input = iD.ui.preset[field.type](field, context) .on('change', event.change); - if (field.type === 'address' || - field.type === 'wikipedia' || - field.type === 'maxspeed') { - field.input.entity(entity); - } + if (field.input.entity) field.input.entity(entity); field.keys = field.keys || [field.key]; @@ -26051,6 +26680,20 @@ iD.ui.preset = function(context) { return t; }; + field.present = function() { + return _.any(field.keys, function(key) { + return tags[key]; + }); + }; + + field.remove = function() { + var t = {}; + field.keys.forEach(function(key) { + t[key] = undefined; + }); + return t; + }; + return field; } @@ -26103,21 +26746,35 @@ iD.ui.preset = function(context) { .attr('for', function(field) { return 'preset-input-' + field.id; }) .text(function(field) { return field.label(); }); - $label.append('button') - .attr('class', 'modified-icon minor') + var wrap = $label.append('div') + .attr('class', 'form-label-button-wrap'); + + wrap.append('button') + .attr('class', 'remove-icon') + .append('span').attr('class', 'icon delete'); + + wrap.append('button') + .attr('class', 'modified-icon') .attr('tabindex', -1) .append('div') .attr('class', 'icon undo'); // Update + $fields.select('.form-label-button-wrap .remove-icon') + .on('click', remove); + $fields.select('.modified-icon') .on('click', revert); $fields + .order() .classed('modified', function(field) { return field.modified(); }) + .classed('present', function(field) { + return field.present(); + }) .each(function(field) { var reference = iD.ui.TagReference({key: field.key}); @@ -26128,7 +26785,7 @@ iD.ui.preset = function(context) { d3.select(this) .call(field.input) .call(reference.body) - .select('.form-label') + .select('.form-label-button-wrap') .call(reference.button); field.input.tags(tags); @@ -26171,6 +26828,12 @@ iD.ui.preset = function(context) { d3.event.preventDefault(); event.change(field.revert()); } + + function remove(field) { + d3.event.stopPropagation(); + d3.event.preventDefault(); + event.change(field.remove()); + } } presets.preset = function(_) { @@ -26367,7 +27030,7 @@ iD.ui.PresetList = function(context) { function drawList(list, presets) { var collection = presets.collection.map(function(preset) { - return preset.members ? CategoryItem(preset) : PresetItem(preset) + return preset.members ? CategoryItem(preset) : PresetItem(preset); }); var items = list.selectAll('.preset-list-item') @@ -26477,7 +27140,7 @@ iD.ui.PresetList = function(context) { }; item.preset = preset; - item.reference = iD.ui.TagReference(preset.reference()); + item.reference = iD.ui.TagReference(preset.reference(context.geometry(id))); return item; } @@ -26524,7 +27187,7 @@ iD.ui.RadialMenu = function(context, operations) { menu = selection.append('g') .attr('class', 'radial-menu') - .attr('transform', "translate(" + center + ")") + .attr('transform', 'translate(' + center + ')') .attr('opacity', 0); menu.transition() @@ -26558,6 +27221,7 @@ iD.ui.RadialMenu = function(context, operations) { .attr('r', 15) .classed('disabled', function(d) { return d.disabled(); }) .on('click', click) + .on('mousedown', mousedown) .on('mouseover', mouseover) .on('mouseout', mouseout); @@ -26570,6 +27234,10 @@ iD.ui.RadialMenu = function(context, operations) { .append('div') .attr('class', 'tooltip-inner radial-menu-tooltip'); + function mousedown() { + d3.event.stopPropagation(); // https://github.com/systemed/iD/issues/1869 + } + function mouseover(d, i) { var rect = context.surfaceRect(), angle = a0 + i * a, @@ -26630,6 +27298,7 @@ iD.ui.RawMemberEditor = function(context) { var id; function selectMember(d) { + d3.event.preventDefault(); context.enter(iD.modes.Select(context, [d.id])); } @@ -26686,7 +27355,8 @@ iD.ui.RawMemberEditor = function(context) { }); var $enter = $items.enter().append('li') - .attr('class', 'member-row form-field'); + .attr('class', 'member-row form-field') + .classed('member-incomplete', function(d) { return !d.member; }); $enter.each(function(d) { if (d.member) { @@ -26706,7 +27376,7 @@ iD.ui.RawMemberEditor = function(context) { } else { d3.select(this).append('label') - .attr('class', 'form-label member-incomplete') + .attr('class', 'form-label') .text(t('inspector.incomplete')); } }); @@ -26743,6 +27413,7 @@ iD.ui.RawMembershipEditor = function(context) { var id, showBlank; function selectRelation(d) { + d3.event.preventDefault(); context.enter(iD.modes.Select(context, [d.relation.id])); } @@ -26787,7 +27458,7 @@ iD.ui.RawMembershipEditor = function(context) { graph = context.graph(); context.intersects(context.extent()).forEach(function(entity) { - if (entity.type !== 'relation') + if (entity.type !== 'relation' || entity.id === id) return; var presetName = context.presets().match(entity, graph).name(), @@ -26815,7 +27486,7 @@ iD.ui.RawMembershipEditor = function(context) { if (member.id === entity.id) { memberships.push({relation: relation, member: member, index: index}); } - }) + }); }); selection.call(iD.ui.Disclosure() @@ -27175,12 +27846,12 @@ iD.ui.Restore = function(context) { introModal.append('div') .attr('class', 'modal-section') .append('h3') - .text(t('restore.heading')); + .text(t('restore.heading')); introModal.append('div') .attr('class','modal-section') .append('p') - .text(t('restore.description')); + .text(t('restore.description')); var buttonWrap = introModal.append('div') .attr('class', 'modal-actions cf'); @@ -27203,8 +27874,6 @@ iD.ui.Restore = function(context) { restore.node().focus(); }; - modal.select('button.close').attr('class','hide'); - }; iD.ui.Save = function(context) { var history = context.history(), @@ -27250,13 +27919,13 @@ iD.ui.Save = function(context) { var numChanges = 0; context.history().on('change.save', function() { - var _ = history.numChanges(); + var _ = history.difference().summary().length; if (_ === numChanges) return; numChanges = _; tooltip.title(iD.ui.tooltipHtml(t(numChanges > 0 ? - 'save.help' : 'save.no_changes'), key)) + 'save.help' : 'save.no_changes'), key)); button .classed('disabled', numChanges === 0) @@ -27272,6 +27941,75 @@ iD.ui.Save = function(context) { }); }; }; +iD.ui.SelectionList = function(context, selectedIDs) { + + function selectionList(selection) { + selection.classed('selection-list-pane', true); + + var header = selection.append('div') + .attr('class', 'header fillL cf'); + + header.append('h3') + .text(t('inspector.multiselect')); + + var listWrap = selection.append('div') + .attr('class', 'inspector-body'); + + var list = listWrap.append('div') + .attr('class', 'feature-list cf'); + + context.history().on('change.selection-list', drawList); + drawList(); + + function drawList() { + var entities = selectedIDs + .map(function(id) { return context.hasEntity(id); }) + .filter(function(entity) { return entity; }); + + var items = list.selectAll('.feature-list-item') + .data(entities, iD.Entity.key); + + var enter = items.enter().append('button') + .attr('class', 'feature-list-item') + .on('click', function(entity) { + context.enter(iD.modes.Select(context, [entity.id])); + }); + + // Enter + + var label = enter.append('div') + .attr('class', 'label'); + + label.append('span') + .attr('class', 'icon icon-pre-text'); + + label.append('span') + .attr('class', 'entity-type'); + + label.append('span') + .attr('class', 'entity-name'); + + // Update + + items.selectAll('.icon') + .attr('class', function(entity) { return context.geometry(entity.id) + ' icon icon-pre-text'; }); + + items.selectAll('.entity-type') + .text(function(entity) { return context.presets().match(entity, context.graph()).name(); }); + + items.selectAll('.entity-name') + .text(function(entity) { return iD.util.displayName(entity); }); + + // Exit + + items.exit() + .remove(); + } + } + + return selectionList; + +}; iD.ui.Sidebar = function(context) { var inspector = iD.ui.Inspector(context), current; @@ -27506,13 +28244,13 @@ iD.ui.Success = function(context) { .attr('class', 'fr') .append('span') .attr('class', 'icon close') - .on('click', function() { event.cancel(success) }); + .on('click', function() { event.cancel(success); }); header.append('h3') .text(t('success.just_edited')); var body = selection.append('div') - .attr('class', 'body save-success'); + .attr('class', 'body save-success fillL'); body.append('p') .html(t('success.help_html')); @@ -27603,7 +28341,7 @@ iD.ui.TagReference = function(tag) { body .append('img') .attr('class', 'wiki-image') - .attr('src', docs.image.thumb_url_prefix + "100" + docs.image.thumb_url_suffix) + .attr('src', docs.image.thumb_url_prefix + '100' + docs.image.thumb_url_suffix) .on('load', function() { show(); }) .on('error', function() { d3.select(this).remove(); show(); }); } else { @@ -27656,7 +28394,7 @@ iD.ui.TagReference = function(tag) { var enter = button.enter().append('button') .attr('tabindex', -1) - .attr('class', 'tag-reference-button minor'); + .attr('class', 'tag-reference-button'); enter.append('span') .attr('class', 'icon inspect'); @@ -27847,9 +28585,8 @@ iD.ui.Zoom = function(context) { .call(keybinding); }; }; -iD.ui.preset.access = function(field, context) { +iD.ui.preset.access = function(field) { var event = d3.dispatch('change'), - entity, items; function access(selection) { @@ -27877,7 +28614,6 @@ iD.ui.preset.access = function(field, context) { .attr('class', 'col6 preset-input-access-wrap') .append('input') .attr('type', 'text') - .attr('placeholder', field.placeholder()) .attr('class', 'preset-input-access') .attr('id', function(d) { return 'preset-input-access-' + d; }) .each(function(d) { @@ -27902,7 +28638,7 @@ iD.ui.preset.access = function(field, context) { access.options = function(type) { var options = ['no', 'permissive', 'private', 'designated', 'destination']; - if (type != 'access') { + if (type !== 'access') { options.unshift('yes'); } @@ -27914,15 +28650,84 @@ iD.ui.preset.access = function(field, context) { }); }; - access.entity = function(_) { - if (!arguments.length) return entity; - entity = _; - return access; + var placeholders = { + footway: { + foot: 'yes', + motor_vehicle: 'no' + }, + steps: { + foot: 'yes', + motor_vehicle: 'no' + }, + pedestrian: { + foot: 'yes', + motor_vehicle: 'no' + }, + cycleway: { + bicycle: 'yes', + motor_vehicle: 'no' + }, + bridleway: { + horse: 'yes' + }, + path: { + motor_vehicle: 'no' + }, + motorway: { + motor_vehicle: 'yes' + }, + trunk: { + motor_vehicle: 'yes' + }, + primary: { + motor_vehicle: 'yes' + }, + secondary: { + motor_vehicle: 'yes' + }, + tertiary: { + motor_vehicle: 'yes' + }, + residential: { + motor_vehicle: 'yes' + }, + unclassified: { + motor_vehicle: 'yes' + }, + service: { + motor_vehicle: 'yes' + }, + motorway_link: { + motor_vehicle: 'yes' + }, + trunk_link: { + motor_vehicle: 'yes' + }, + primary_link: { + motor_vehicle: 'yes' + }, + secondary_link: { + motor_vehicle: 'yes' + }, + tertiary_link: { + motor_vehicle: 'yes' + } }; access.tags = function(tags) { items.selectAll('.preset-input-access') - .value(function(d) { return tags[d] || ''; }); + .value(function(d) { return tags[d] || ''; }) + .attr('placeholder', function() { + return tags.access ? tags.access : field.placeholder(); + }); + + items.selectAll('#preset-input-access-access') + .attr('placeholder', 'yes'); + + _.forEach(placeholders[tags.highway], function(value, key) { + items.selectAll('#preset-input-access-' + key) + .attr('placeholder', value); + }); }; access.focus = function() { @@ -27942,7 +28747,6 @@ iD.ui.preset.address = function(field, context) { entity; function getStreets() { - var extent = entity.extent(context.graph()), l = extent.center(), box = iD.geo.Extent(l).padByMeters(200); @@ -27968,6 +28772,62 @@ iD.ui.preset.address = function(field, context) { } } + function getCities() { + var extent = entity.extent(context.graph()), + l = extent.center(), + box = iD.geo.Extent(l).padByMeters(200); + + return context.intersects(box) + .filter(isAddressable) + .map(function(d) { + return { + title: d.tags['addr:city'] || d.tags.name, + value: d.tags['addr:city'] || d.tags.name, + dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l) + }; + }).sort(function(a, b) { + return a.dist - b.dist; + }); + + function isAddressable(d) { + if (d.tags.name && + (d.tags.admin_level === '8' || d.tags.border_type === 'city')) + return true; + + if (d.tags.place && d.tags.name && ( + d.tags.place === 'city' || + d.tags.place === 'town' || + d.tags.place === 'village')) + return true; + + if (d.tags['addr:city']) return true; + + return false; + } + } + + function getPostCodes() { + var extent = entity.extent(context.graph()), + l = extent.center(), + box = iD.geo.Extent(l).padByMeters(200); + + return context.intersects(box) + .filter(isAddressable) + .map(function(d) { + return { + title: d.tags['addr:postcode'], + value: d.tags['addr:postcode'], + dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l) + }; + }).sort(function(a, b) { + return a.dist - b.dist; + }); + + function isAddressable(d) { + return d.tags['addr:postcode']; + } + } + function address(selection) { var wrap = selection.selectAll('.preset-input-wrap') .data([0]); @@ -28020,6 +28880,18 @@ iD.ui.preset.address = function(field, context) { .fetcher(function(value, callback) { callback(getStreets()); })); + + city + .call(d3.combobox() + .fetcher(function(value, callback) { + callback(getCities()); + })); + + postcode + .call(d3.combobox() + .fetcher(function(value, callback) { + callback(getPostCodes()); + })); } function change() { @@ -28093,7 +28965,7 @@ iD.ui.preset.check = function(field) { value = tags[field.key]; box.property('indeterminate', !value); box.property('checked', value === 'yes'); - text.text(value || t('inspector.unknown')); + text.text(value ? t('inspector.check.' + value, {default: value}) : t('inspector.unknown')); label.classed('set', !!value); }; @@ -28103,7 +28975,8 @@ iD.ui.preset.check = function(field) { return d3.rebind(check, event, 'on'); }; -iD.ui.preset.combo = function(field) { +iD.ui.preset.combo = +iD.ui.preset.typeCombo = function(field) { var event = d3.dispatch('change'), input; @@ -28148,13 +29021,18 @@ iD.ui.preset.combo = function(field) { } function change() { + var value = input.value().replace(' ', '_'); + if (field.type === 'typeCombo' && !value) value = 'yes'; + var t = {}; - t[field.key] = input.value().replace(' ', '_') || undefined; + t[field.key] = value || undefined; event.change(t); } combo.tags = function(tags) { - input.value(tags[field.key] || ''); + var value = tags[field.key] || ''; + if (field.type === 'typeCombo' && value === 'yes') value = ''; + input.value(value); }; combo.focus = function() { @@ -28215,7 +29093,7 @@ iD.ui.preset.url = function(field) { .on('blur', change) .on('change', change); - if (field.type == 'number') { + if (field.type === 'number') { input.attr('type', 'text'); var spinControl = selection.selectAll('.spin-control') @@ -28262,7 +29140,8 @@ iD.ui.preset.localized = function(field, context) { var event = d3.dispatch('change'), wikipedia = iD.wikipedia(), - input, localizedInputs, wikiTitles; + input, localizedInputs, wikiTitles, + entity; function i(selection) { input = selection.selectAll('.localized-main') @@ -28278,6 +29157,13 @@ iD.ui.preset.localized = function(field, context) { .on('blur', change) .on('change', change); + if (field.id === 'name') { + var preset = context.presets().match(entity, context.graph()); + input.call(d3.combobox().fetcher( + iD.util.SuggestNames(preset, iD.data.suggestions) + )); + } + var translateButton = selection.selectAll('.localized-add') .data([0]); @@ -28315,35 +29201,38 @@ iD.ui.preset.localized = function(field, context) { function key(lang) { return field.key + ':' + lang; } function changeLang(d) { - var value = d3.select(this).value(), + var lang = d3.select(this).value(), t = {}, language = _.find(iD.data.wikipedia, function(d) { - return d[0].toLowerCase() === value.toLowerCase() || - d[1].toLowerCase() === value.toLowerCase(); + return d[0].toLowerCase() === lang.toLowerCase() || + d[1].toLowerCase() === lang.toLowerCase(); }); - if (language) value = language[2]; + if (language) lang = language[2]; - if (d.lang) { - t[key(d.lang)] = ''; + if (d.lang && d.lang !== lang) { + t[key(d.lang)] = undefined; } - if (d.value) { - t[key(value)] = d.value; - } else if (wikiTitles && wikiTitles[d.lang]) { - t[key(value)] = wikiTitles[d.lang]; + var value = d3.select(this.parentNode) + .selectAll('.localized-value') + .value(); + + if (lang && value) { + t[key(lang)] = value; + } else if (lang && wikiTitles && wikiTitles[d.lang]) { + t[key(lang)] = wikiTitles[d.lang]; } + d.lang = lang; event.change(t); - - d.lang = value; } function changeValue(d) { + if (!d.lang) return; var t = {}; - t[key(d.lang)] = d3.select(this).value() || ''; + t[key(d.lang)] = d3.select(this).value() || undefined; event.change(t); - } function fetcher(value, cb) { @@ -28370,11 +29259,28 @@ iD.ui.preset.localized = function(field, context) { var wrap = d3.select(this); var langcombo = d3.combobox().fetcher(fetcher); - wrap.append('label') + var label = wrap.append('label') .attr('class','form-label') .text(t('translate.localized_translation_label')) .attr('for','localized-lang'); + label.append('button') + .attr('class', 'minor remove') + .on('click', function(d){ + d3.event.preventDefault(); + var t = {}; + t[key(d.lang)] = undefined; + event.change(t); + d3.select(this.parentNode.parentNode) + .style('top','0') + .style('max-height','240px') + .transition() + .style('opacity', '0') + .style('max-height','0px') + .remove(); + }) + .append('span').attr('class', 'icon delete'); + wrap.append('input') .attr('class', 'localized-lang') .attr('type', 'text') @@ -28389,23 +29295,6 @@ iD.ui.preset.localized = function(field, context) { .attr('type', 'text') .attr('placeholder', t('translate.localized_translation_name')) .attr('class', 'localized-value'); - - wrap.append('button') - .attr('class', 'minor button-input-action remove') - .on('click', function(d) { - d3.event.preventDefault(); - var t = {}; - t[key(d.lang)] = undefined; - event.change(t); - d3.select(this.parentNode) - .style('top','0') - .style('max-height','240px') - .transition() - .style('opacity', '0') - .style('max-height','0px') - .remove(); - }) - .append('span').attr('class', 'icon delete'); }); innerWrap @@ -28431,16 +29320,16 @@ iD.ui.preset.localized = function(field, context) { .style('top','-10px') .remove(); - selection.selectAll('.entry').select('.localized-lang').value(function(d) { - var lang = _.find(iD.data.wikipedia, function(lang) { - return lang[2] === d.lang; + var entry = selection.selectAll('.entry'); + + entry.select('.localized-lang') + .value(function(d) { + var lang = _.find(iD.data.wikipedia, function(lang) { return lang[2] === d.lang; }); + return lang ? lang[1] : d.lang; }); - return lang ? lang[1] : d.lang; - }); - selection.selectAll('.entry').select('.localized-value').value(function(d) { - return d.value; - }); + entry.select('.localized-value') + .value(function(d) { return d.value; }); } i.tags = function(tags) { @@ -28470,7 +29359,11 @@ iD.ui.preset.localized = function(field, context) { }; i.focus = function() { - title.node().focus(); + input.node().focus(); + }; + + i.entity = function(_) { + entity = _; }; return d3.rebind(i, event, 'on'); @@ -28589,7 +29482,7 @@ iD.ui.preset.maxspeed = function(field, context) { iD.ui.preset.radio = function(field) { var event = d3.dispatch('change'), - labels, radios; + labels, radios, placeholder; function radio(selection) { selection.classed('preset-radio', true); @@ -28600,6 +29493,11 @@ iD.ui.preset.radio = function(field) { var buttonWrap = wrap.enter().append('div') .attr('class', 'preset-input-wrap toggle-list'); + buttonWrap.append('span') + .attr('class', 'placeholder'); + + placeholder = selection.selectAll('.placeholder'); + labels = wrap.selectAll('label') .data(field.options || field.keys); @@ -28616,29 +29514,6 @@ iD.ui.preset.radio = function(field) { radios = labels.selectAll('input') .on('change', change); - - buttonWrap.append('span') - .attr('class', 'placeholder') - .text(field.placeholder()); - - var remove = wrap.selectAll('label.remove') - .data([0]); - - var removeButton = remove.enter().append('label') - .attr('class', 'remove'); - - removeButton.append('span') - .attr('class', 'icon remove'); - - removeButton.append('span') - .text(t('inspector.remove')); - - remove - .on('click', function() { - d3.event.preventDefault(); - radios.property('checked', false); - change(); - }); } function change() { @@ -28666,6 +29541,12 @@ iD.ui.preset.radio = function(field) { labels.classed('active', checked); radios.property('checked', checked); + var selection = radios.filter(function() { return this.checked; }); + if (selection.empty()) { + placeholder.text(t('inspector.none')); + } else { + placeholder.text(selection.attr('value')); + } }; radio.focus = function() { @@ -28713,7 +29594,6 @@ iD.ui.preset.wikipedia = function(field, context) { var event = d3.dispatch('change'), wikipedia = iD.wikipedia(), - language = iD.data.wikipedia[0], link, entity, lang, title; function i(selection) { @@ -28737,7 +29617,7 @@ iD.ui.preset.wikipedia = function(field, context) { if (!value) value = context.entity(entity.id).tags.name || ''; var searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions; - searchfn(language && language[2], value, function(query, data) { + searchfn(language()[2], value, function(query, data) { cb(data.map(function(d) { return { value: d }; })); @@ -28749,7 +29629,8 @@ iD.ui.preset.wikipedia = function(field, context) { lang.enter().append('input') .attr('type', 'text') - .attr('class', 'wiki-lang'); + .attr('class', 'wiki-lang') + .value('English'); lang .on('blur', changeLang) @@ -28779,63 +29660,53 @@ iD.ui.preset.wikipedia = function(field, context) { .attr('class', 'icon out-link'); } - function changeLang() { + function language() { var value = lang.value().toLowerCase(); - language = _.find(iD.data.wikipedia, function(d) { + return _.find(iD.data.wikipedia, function(d) { return d[0].toLowerCase() === value || d[1].toLowerCase() === value || d[2].toLowerCase() === value; }) || iD.data.wikipedia[0]; + } - if (value !== language[0]) { - lang.value(language[1]); - } - + function changeLang() { + lang.value(language()[1]); change(); } function change() { - var t = {}; - - var value = title.value(); - - var m = value.match('http://([a-z]+)\\.wikipedia.org/wiki/(.*)'), - newlanguage = m && m[1] && m[2] && _.find(iD.data.wikipedia, function(d) { - return m[1] === d[2]; - }); + var value = title.value(), + m = value.match(/https?:\/\/([a-z]+)\.wikipedia\.org\/wiki\/(.+)/), + l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }); - if (newlanguage) { + if (l) { // Normalize title http://www.mediawiki.org/wiki/API:Query#Title_normalization value = m[2].replace(/_/g, ' '); value = value.slice(0, 1).toUpperCase() + value.slice(1); - language = newlanguage; - lang.value(language[0]); + lang.value(l[1]); + title.value(value); } - t[field.key] = value ? language[2] + ':' + value : undefined; + var t = {}; + t[field.key] = value ? language()[2] + ':' + value : undefined; event.change(t); - link.attr('href', 'http://' + language[2] + '.wikipedia.org/wiki/' + (value || '')); } i.tags = function(tags) { - var m = tags[field.key] ? tags[field.key].match(/([^:]+):(.+)/) : null; - - var language = m && m[1] && m[2] && _.find(iD.data.wikipedia, function(d) { - return m[1] === d[2]; - }); + var value = tags[field.key] || '', + m = value.match(/([^:]+):(.+)/), + l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }); // value in correct format - if (language) { - lang.value(language[1]); + if (l) { + lang.value(l[1]); title.value(m[2]); link.attr('href', 'http://' + m[1] + '.wikipedia.org/wiki/' + m[2]); // unrecognized value format } else { - lang.value('English'); - title.value(tags[field.key] || ''); - language = iD.data.wikipedia[0]; - link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + tags[field.key]); + title.value(value); + link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + value); } }; @@ -28943,10 +29814,6 @@ iD.ui.intro.line = function(context, reveal) { title: 'intro.lines.title' }; - function one(target, e, f) { - d3.selection.prototype.one.call(target, e, f); - } - function timeout(f, t) { timeouts.push(window.setTimeout(f, t)); } @@ -29055,7 +29922,7 @@ iD.ui.intro.line = function(context, reveal) { } // selected wrong road type - function retryPreset(mode) { + function retryPreset() { timeout(function() { var preset = d3.select('.entity-editor-pane .preset-list-button'); reveal(preset.node(), t('intro.lines.wrong_preset')); @@ -29651,14 +30518,17 @@ iD.presets.Preset = function(id, preset, fields) { return Object.keys(preset.tags).length === 0; }; - preset.reference = function() { - var reference = {key: Object.keys(preset.tags)[0]}; + preset.reference = function(geometry) { + var key = Object.keys(preset.tags)[0], + value = preset.tags[key]; - if (preset.tags[reference.key] !== '*') { - reference.value = preset.tags[reference.key]; + if (geometry === 'relation' && key === 'type') { + return { rtype: value }; + } else if (value === '*') { + return { key: key }; + } else { + return { key: key, value: value }; } - - return reference; }; var removeTags = preset.removeTags || preset.tags; @@ -29675,7 +30545,7 @@ iD.presets.Preset = function(id, preset, fields) { return tags; }; - var applyTags = preset.applyTags || preset.tags; + var applyTags = preset.addTags || preset.tags; preset.applyTags = function(tags, geometry) { tags = _.clone(tags); @@ -29700,7 +30570,7 @@ iD.presets.Preset = function(id, preset, fields) { return preset; }; iD.validate = function(changes, graph) { - var warnings = [], change; + var warnings = []; // https://github.com/openstreetmap/josm/blob/mirror/src/org/ // openstreetmap/josm/data/validation/tests/UnclosedWays.java#L80 @@ -29723,20 +30593,16 @@ iD.validate = function(changes, graph) { } for (var i = 0; i < changes.created.length; i++) { - change = changes.created[i]; + var change = changes.created[i], + geometry = change.geometry(graph); - if (change.geometry(graph) === 'point' && _.isEmpty(change.tags)) { + if ((geometry === 'point' || geometry === 'line' || geometry === 'area') && !change.isUsed(graph)) { warnings.push({ - message: t('validations.untagged_point'), + message: t('validations.untagged_' + geometry), entity: change }); } - if (change.geometry(graph) === 'line' && _.isEmpty(change.tags) && - graph.parentRelations(change).length === 0) { - warnings.push({ message: t('validations.untagged_line'), entity: change }); - } - var deprecatedTags = change.deprecatedTags(); if (!_.isEmpty(deprecatedTags)) { warnings.push({ @@ -29745,11 +30611,7 @@ iD.validate = function(changes, graph) { }), entity: change }); } - if (change.geometry(graph) === 'area' && _.isEmpty(change.tags)) { - warnings.push({ message: t('validations.untagged_area'), entity: change }); - } - - if (change.geometry(graph) === 'line' && tagSuggestsArea(change)) { + if (geometry === 'line' && tagSuggestsArea(change)) { warnings.push({ message: t('validations.tag_suggests_area', {tag: tagSuggestsArea(change)}), entity: change @@ -29757,8 +30619,9 @@ iD.validate = function(changes, graph) { } } - return warnings.length ? [warnings] : []; + return warnings; }; +/* jshint ignore:start */ })(); window.locale = { _current: 'en' }; @@ -32699,21178 +33562,21999 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "terms_text": "Fugro Aerial Mapping" }, { - "name": "Imagerie Drone (Haiti)", + "name": "Geoimage.at MaxRes", "type": "tms", - "template": "http://wms.openstreetmap.fr/tms/1.0.0/iomhaiti/{zoom}/{x}/{y}", + "template": "http://geoimage.openstreetmap.at/4d80de696cd562a63ce463a58a61488d/{zoom}/{x}/{y}.jpg", "polygon": [ [ [ - -72.1547401, - 19.6878969 + 16.5073284, + 46.9929304 ], [ - -72.162234, - 19.689011 + 16.283417, + 46.9929304 ], [ - -72.164995, - 19.6932445 + 16.135839, + 46.8713046 ], [ - -72.1657838, - 19.6979977 + 15.9831722, + 46.8190947 ], [ - -72.161603, - 19.7035677 + 16.0493278, + 46.655175 ], [ - -72.1487449, - 19.7028993 + 15.8610387, + 46.7180116 ], [ - -72.1477194, - 19.7026765 + 15.7592608, + 46.6900933 ], [ - -72.1485082, - 19.7001514 + 15.5607938, + 46.6796202 ], [ - -72.1436963, - 19.7011169 + 15.5760605, + 46.6342132 ], [ - -72.1410143, - 19.7000029 + 15.4793715, + 46.6027553 ], [ - -72.139476, - 19.6973664 + 15.4335715, + 46.6516819 ], [ - -72.1382533, - 19.6927617 + 15.2249267, + 46.6342132 ], [ - -72.1386872, - 19.6923161 + 15.0468154, + 46.6481886 ], [ - -72.1380561, - 19.6896423 + 14.9908376, + 46.5887681 ], [ - -72.1385294, - 19.6894938 + 14.9603042, + 46.6237293 ], [ - -72.1388055, - 19.6901251 + 14.8534374, + 46.6027553 ], [ - -72.1388844, - 19.6876741 + 14.8330818, + 46.5012666 ], [ - -72.1378195, - 19.6872656 + 14.7516595, + 46.4977636 ], [ - -72.13778, - 19.6850003 + 14.6804149, + 46.4381781 ], [ - -72.1369517, - 19.6855945 + 14.6142593, + 46.4381781 ], [ - -72.136794, - 19.6840719 + 14.578637, + 46.3785275 ], [ - -72.135729, - 19.6835148 + 14.4412369, + 46.4311638 ], [ - -72.1355713, - 19.6740817 + 14.1613476, + 46.4276563 ], [ - -72.1366362, - 19.6708133 + 14.1257253, + 46.4767409 ], [ - -72.1487843, - 19.6710733 + 14.0188585, + 46.4767409 ], [ - -72.1534779, - 19.6763843 + 13.9119917, + 46.5257813 ], [ - -72.1530835, - 19.6769414 + 13.8254805, + 46.5047694 ], [ - -72.1533251, - 19.6769768 + 13.4438134, + 46.560783 ], [ - -72.1532807, - 19.6796525 + 13.3064132, + 46.5502848 ], [ - -72.1523834, - 19.6797175 + 13.1283019, + 46.5887681 ], [ - -72.1522749, - 19.6803488 + 12.8433237, + 46.6132433 ], [ - -72.1519101, - 19.6803395 + 12.7262791, + 46.6412014 ], [ - -72.1518608, - 19.6805067 + 12.5125455, + 46.6656529 ], [ - -72.1528173, - 19.6806552 + 12.3598787, + 46.7040543 ], [ - -72.1522299, - 19.6833011 + 12.3649676, + 46.7703197 ], [ - -72.1507801, - 19.6831499 + 12.2886341, + 46.7772902 ], [ - -72.1504457, - 19.6847862 + 12.2733674, + 46.8852187 ], [ - -72.1508591, - 19.6843492 + 12.2072118, + 46.8747835 ], [ - -72.1530087, - 19.6849898 + 12.1308784, + 46.9026062 ], [ - -72.1546258, - 19.6854354 + 12.1156117, + 46.9998721 ], [ - -72.1543103, - 19.6870694 + 12.2530119, + 47.0657733 ], [ - -72.1547244, - 19.6868466 + 12.2123007, + 47.0934969 ], [ - -72.1548501, - 19.6877564 + 11.9833004, + 47.0449712 ], [ - -72.1545814, - 19.6877982 - ] - ], - [ + 11.7339445, + 46.9616816 + ], [ - -72.1310601, - 19.6718929 + 11.6321666, + 47.010283 ], [ - -72.1259842, - 19.6772765 + 11.5405665, + 46.9755722 ], [ - -72.1255379, - 19.6776179 + 11.4998553, + 47.0068129 ], [ - -72.1216891, - 19.6776442 + 11.418433, + 46.9651546 ], [ - -72.1149677, - 19.672602 + 11.2555884, + 46.9755722 ], [ - -72.1152745, - 19.6687152 + 11.1130993, + 46.913036 ], [ - -72.1198205, - 19.6627535 + 11.0418548, + 46.7633482 ], [ - -72.1227768, - 19.6625696 + 10.8891879, + 46.7598621 ], [ - -72.1248965, - 19.662701 + 10.7416099, + 46.7842599 ], [ - -72.1285779, - 19.6645394 + 10.7059877, + 46.8643462 ], [ - -72.1308091, - 19.6661677 + 10.5787653, + 46.8399847 ], [ - -72.1316737, - 19.668794 + 10.4566318, + 46.8504267 ], [ - -72.1315621, - 19.671 - ] - ], - [ + 10.4769874, + 46.9269392 + ], [ - -71.845795, - 19.6709758 + 10.3853873, + 46.9894592 ], [ - -71.8429354, - 19.6759525 + 10.2327204, + 46.8643462 ], [ - -71.8410027, - 19.6759525 + 10.1207647, + 46.8330223 ], [ - -71.8380249, - 19.6755254 + 9.8663199, + 46.9408389 ], [ - -71.8378671, - 19.6745041 + 9.9019422, + 47.0033426 ], [ - -71.8390504, - 19.6743927 + 9.6831197, + 47.0588402 ], [ - -71.8390109, - 19.6741141 + 9.6118752, + 47.0380354 ], [ - -71.8398392, - 19.673947 + 9.6322307, + 47.128131 ], [ - -71.8389123, - 19.6736127 + 9.5813418, + 47.1662025 ], [ - -71.8380249, - 19.67209 + 9.5406306, + 47.2664422 ], [ - -71.8380052, - 19.6726285 + 9.6067863, + 47.3492559 ], [ - -71.8376699, - 19.6727214 + 9.6729419, + 47.369939 ], [ - -71.8376305, - 19.672545 + 9.6424085, + 47.4457079 ], [ - -71.8354414, - 19.6732135 + 9.5660751, + 47.4801122 ], [ - -71.835333, - 19.6729999 + 9.7136531, + 47.5282405 ], [ - -71.8331242, - 19.6734642 + 9.7848976, + 47.5969187 ], [ - -71.8326706, - 19.6716815 + 9.8357866, + 47.5454185 ], [ - -71.8321579, - 19.67209 + 9.9477423, + 47.538548 ], [ - -71.8307183, - 19.6694902 + 10.0902313, + 47.4491493 ], [ - -71.8306009, - 19.6697594 + 10.1105869, + 47.3664924 ], [ - -71.8302174, - 19.6698907 + 10.2428982, + 47.3871688 ], [ - -71.8291833, - 19.6672095 + 10.1869203, + 47.2698953 ], [ - -71.8290749, - 19.6672095 + 10.3243205, + 47.2975125 ], [ - -71.8289122, - 19.6667916 + 10.4820763, + 47.4491493 ], [ - -71.8289516, - 19.6666199 + 10.4311873, + 47.4869904 ], [ - -71.8288333, - 19.6663506 + 10.4413651, + 47.5900549 ], [ - -71.8285572, - 19.6664759 + 10.4871652, + 47.5522881 ], [ - -71.8288678, - 19.6672466 + 10.5482319, + 47.5351124 ], [ - -71.8287593, - 19.6674138 + 10.5991209, + 47.5660246 ], [ - -71.8277979, - 19.6678177 + 10.7568766, + 47.5316766 ], [ - -71.8277112, - 19.6678586 + 10.8891879, + 47.5454185 ], [ - -71.8278263, - 19.6679637 + 10.9400769, + 47.4869904 ], [ - -71.8271831, - 19.6681212 + 10.9960547, + 47.3906141 ], [ - -71.8271761, - 19.6680917 + 11.2352328, + 47.4422662 ], [ - -71.8264405, - 19.6683921 + 11.2810328, + 47.3975039 ], [ - -71.8264074, - 19.6683231 + 11.4235219, + 47.5144941 ], [ - -71.8261954, - 19.6684253 + 11.5761888, + 47.5076195 ], [ - -71.8261806, - 19.6683556 + 11.6067221, + 47.5900549 ], [ - -71.8258946, - 19.6684206 + 11.8357224, + 47.5866227 ], [ - -71.8258897, - 19.6686574 + 12.003656, + 47.6243647 ], [ - -71.8251551, - 19.6687549 + 12.2072118, + 47.6037815 ], [ - -71.8254509, - 19.6691588 + 12.1614117, + 47.6963421 ], [ - -71.8229332, - 19.6695739 + 12.2581008, + 47.7442718 ], [ - -71.822713, - 19.6696658 + 12.2530119, + 47.6792136 ], [ - -71.8227688, - 19.6697577 + 12.4311232, + 47.7100408 ], [ - -71.8201751, - 19.6709855 + 12.4921899, + 47.631224 ], [ - -71.8198474, - 19.6704537 + 12.5685234, + 47.6277944 ], [ - -71.8197985, - 19.6706014 + 12.6295901, + 47.6894913 ], [ - -71.8194674, - 19.6707557 + 12.7720792, + 47.6689338 ], [ - -71.8182472, - 19.6713433 + 12.8331459, + 47.5419833 ], [ - -71.8181426, - 19.6711431 + 12.975635, + 47.4732332 ], [ - -71.8175813, - 19.6714254 + 13.0417906, + 47.4938677 ], [ - -71.816959, - 19.6707672 + 13.0367017, + 47.5557226 ], [ - -71.8176388, - 19.6718965 + 13.0977685, + 47.6415112 ], [ - -71.8171403, - 19.6720376 + 13.0316128, + 47.7100408 ], [ - -71.8158225, - 19.6718045 + 12.9043905, + 47.7203125 ], [ - -71.8138354, - 19.6711874 + 13.0061684, + 47.84683 ], [ - -71.8123259, - 19.6706982 + 12.9451016, + 47.9355501 ], [ - -71.8121759, - 19.6704258 + 12.8636793, + 47.9594103 ], [ - -71.8124304, - 19.6701467 + 12.8636793, + 48.0036929 ], [ - -71.8119184, - 19.6700141 + 12.7517236, + 48.0989418 ], [ - -71.8118765, - 19.6705828 + 12.8738571, + 48.2109733 ], [ - -71.811169, - 19.6703483 + 12.9603683, + 48.2109733 ], [ - -71.8095938, - 19.6698516 + 13.0417906, + 48.2652035 ], [ - -71.8077992, - 19.6692829 + 13.1842797, + 48.2990682 ], [ - -71.8056028, - 19.668612 + 13.2606131, + 48.2922971 ], [ - -71.8051443, - 19.6668942 + 13.3980133, + 48.3565867 ], [ - -71.8051196, - 19.6652322 + 13.4438134, + 48.417418 ], [ - -71.8052315, - 19.661979 + 13.4387245, + 48.5523383 ], [ - -71.8065603, - 19.6523921 + 13.509969, + 48.5860123 ], [ - -71.8073412, - 19.6482946 + 13.6117469, + 48.5725454 ], [ - -71.8099686, - 19.6468292 + 13.7287915, + 48.5118999 ], [ - -71.8147517, - 19.6454502 + 13.7847694, + 48.5725454 ], [ - -71.8147726, - 19.6455619 + 13.8203916, + 48.6263915 ], [ - -71.8150027, - 19.6455093 + 13.7949471, + 48.7171267 ], [ - -71.8149469, - 19.6453846 + 13.850925, + 48.7741724 ], [ - -71.8159928, - 19.6450234 + 14.0595697, + 48.6633774 ], [ - -71.8158882, - 19.6448855 + 14.0137696, + 48.6331182 ], [ - -71.8165854, - 19.6446097 + 14.0748364, + 48.5927444 ], [ - -71.8190119, - 19.643802 + 14.2173255, + 48.5961101 ], [ - -71.8211524, - 19.643454 + 14.3649034, + 48.5489696 ], [ - -71.8221564, - 19.6433292 + 14.4666813, + 48.6499311 ], [ - -71.8269046, - 19.643211 + 14.5582815, + 48.5961101 ], [ - -71.8280481, - 19.6432241 + 14.5989926, + 48.6263915 ], [ - -71.8304466, - 19.6440778 + 14.7211261, + 48.5759124 ], [ - -71.8306419, - 19.6448592 + 14.7211261, + 48.6868997 ], [ - -71.8295263, - 19.6450365 + 14.822904, + 48.7271983 ], [ - -71.8296064, - 19.6456111 + 14.8178151, + 48.777526 ], [ - -71.8299411, - 19.6455651 + 14.9647227, + 48.7851754 ], [ - -71.8303699, - 19.6451744 + 14.9893637, + 49.0126611 ], [ - -71.830471, - 19.6453452 + 15.1485933, + 48.9950306 ], [ - -71.8308092, - 19.6451974 + 15.1943934, + 48.9315502 ], [ - -71.8310184, - 19.6451088 + 15.3063491, + 48.9850128 ], [ - -71.8312519, - 19.6458541 + 15.3928603, + 48.9850128 ], [ - -71.8311125, - 19.6458245 + 15.4844604, + 48.9282069 ], [ - -71.831367, - 19.6465862 + 15.749083, + 48.8545973 ], [ - -71.8328939, - 19.646189 + 15.8406831, + 48.8880697 ], [ - -71.8344566, - 19.6457062 + 16.0086166, + 48.7808794 ], [ - -71.8344664, - 19.6463052 + 16.2070835, + 48.7339115 ], [ - -71.834215, - 19.6461938 + 16.3953727, + 48.7372678 ], [ - -71.8342002, - 19.6465513 + 16.4920617, + 48.8110498 ], [ - -71.8346702, - 19.6463 + 16.6905286, + 48.7741724 ], [ - -71.8349118, - 19.6463905 + 16.7057953, + 48.7339115 ], [ - -71.8347984, - 19.6462187 + 16.8991733, + 48.713769 ], [ - -71.8354393, - 19.6458496 + 16.9755067, + 48.515271 ], [ - -71.8355034, - 19.6458032 + 16.8482844, + 48.4511817 ], [ - -71.8364747, - 19.6461328 + 16.8533733, + 48.3464411 ], [ - -71.8376382, - 19.6472658 + 16.9551512, + 48.2516513 ], [ - -71.8379143, - 19.647888 + 16.9907734, + 48.1498955 ], [ - -71.8390483, - 19.6508039 + 17.0925513, + 48.1397088 ], [ - -71.8456942, - 19.6696203 - ] - ], - [ + 17.0823736, + 48.0241182 + ], [ - -72.098878, - 18.54843 + 17.1739737, + 48.0207146 ], [ - -72.096993, - 18.5501994 + 17.0823736, + 47.8741447 ], [ - -72.0972888, - 18.5503209 + 16.9856845, + 47.8673174 ], [ - -72.0968451, - 18.5503489 + 17.0823736, + 47.8092489 ], [ - -72.0955632, - 18.551854 + 17.0925513, + 47.7031919 ], [ - -72.0956428, - 18.5526742 + 16.7414176, + 47.6792136 ], [ - -72.0959914, - 18.5533748 + 16.7057953, + 47.7511153 ], [ - -72.0962145, - 18.553203 + 16.5378617, + 47.7545368 ], [ - -72.0962842, - 18.5535665 + 16.5480395, + 47.7066164 ], [ - -72.0964446, - 18.5535533 + 16.4208172, + 47.6689338 ], [ - -72.0965352, - 18.5539764 + 16.573484, + 47.6175045 ], [ - -72.0965056, - 18.554173 + 16.670173, + 47.631224 ], [ - -72.0966085, - 18.5541747 + 16.7108842, + 47.538548 ], [ - -72.0965178, - 18.5542127 + 16.6599952, + 47.4491493 ], [ - -72.0968769, - 18.5546588 + 16.5429506, + 47.3940591 ], [ - -72.0979018, - 18.5552141 + 16.4615283, + 47.3940591 ], [ - -72.1006211, - 18.5555875 + 16.4920617, + 47.276801 ], [ - -72.1014926, - 18.5556206 + 16.425906, + 47.1973317 ], [ - -72.1024339, - 18.5555016 + 16.4717061, + 47.1489007 ], [ - -72.103417, - 18.5543515 + 16.5480395, + 47.1489007 ], [ - -72.1034798, - 18.5516215 + 16.476795, + 47.0796369 ], [ - -72.1030789, - 18.5516149 - ], + 16.527684, + 47.0588402 + ] + ] + ], + "terms_text": "geoimage.at", + "id": "geoimage.at" + }, + { + "name": "Imagerie Drone (Haiti)", + "type": "tms", + "template": "http://wms.openstreetmap.fr/tms/1.0.0/iomhaiti/{zoom}/{x}/{y}", + "polygon": [ + [ [ - -72.1033752, - 18.5515224 + -72.1547401, + 19.6878969 ], [ - -72.1035042, - 18.5515224 + -72.162234, + 19.689011 ], [ - -72.1035239, - 18.5502417 + -72.164995, + 19.6932445 ], [ - -72.1028701, - 18.5503062 + -72.1657838, + 19.6979977 ], [ - -72.1029015, - 18.55025 + -72.161603, + 19.7035677 ], [ - -72.1028457, - 18.5501773 + -72.1487449, + 19.7028993 ], [ - -72.1035081, - 18.5500252 + -72.1477194, + 19.7026765 ], [ - -72.103491, - 18.5497396 + -72.1485082, + 19.7001514 ], [ - -72.1035181, - 18.5497361 + -72.1436963, + 19.7011169 ], [ - -72.1035398, - 18.5489039 + -72.1410143, + 19.7000029 ], [ - -72.1034317, - 18.5487056 + -72.139476, + 19.6973664 ], [ - -72.102717, - 18.5481437 + -72.1382533, + 19.6927617 ], [ - -72.1025601, - 18.5481536 + -72.1386872, + 19.6923161 ], [ - -72.10229, - 18.5482751 + -72.1380561, + 19.6896423 ], [ - -72.1022891, - 18.5482569 + -72.1385294, + 19.6894938 ], [ - -72.1025201, - 18.5481396 + -72.1388055, + 19.6901251 ], [ - -72.1023388, - 18.5481321 + -72.1388844, + 19.6876741 ], [ - -72.0999082, - 18.5480901 + -72.1378195, + 19.6872656 ], [ - -72.09907, - 18.5483799 - ] - ], - [ - [ - -72.2542503, - 18.568262 + -72.13778, + 19.6850003 ], [ - -72.2560252, - 18.5717765 + -72.1369517, + 19.6855945 ], [ - -72.2557886, - 18.5748049 + -72.136794, + 19.6840719 ], [ - -72.2535009, - 18.5755526 + -72.135729, + 19.6835148 ], [ - -72.2522782, - 18.5755526 + -72.1355713, + 19.6740817 ], [ - -72.2499906, - 18.5740945 + -72.1366362, + 19.6708133 ], [ - -72.2473874, - 18.5698323 + -72.1487843, + 19.6710733 ], [ - -72.2460069, - 18.566729 + -72.1534779, + 19.6763843 ], [ - -72.2458492, - 18.5629527 + -72.1530835, + 19.6769414 ], [ - -72.2479396, - 18.5625414 + -72.1533251, + 19.6769768 ], [ - -72.2501483, - 18.5628031 + -72.1532807, + 19.6796525 ], [ - -72.2519232, - 18.5650839 - ] - ], - [ - [ - -72.303145, - 18.5332749 + -72.1523834, + 19.6797175 ], [ - -72.3031275, - 18.5331799 + -72.1522749, + 19.6803488 ], [ - -72.3048311, - 18.5311081 + -72.1519101, + 19.6803395 ], [ - -72.3097397, - 18.5311081 + -72.1518608, + 19.6805067 ], [ - -72.3164332, - 18.5324302 + -72.1528173, + 19.6806552 ], [ - -72.3234056, - 18.5366083 + -72.1522299, + 19.6833011 ], [ - -72.3261388, - 18.5387765 + -72.1507801, + 19.6831499 ], [ - -72.3261946, - 18.5426371 + -72.1504457, + 19.6847862 ], [ - -72.3170468, - 18.5540596 + -72.1508591, + 19.6843492 ], [ - -72.3130864, - 18.5540596 + -72.1530087, + 19.6849898 ], [ - -72.2987511, - 18.5453342 + -72.1546258, + 19.6854354 ], [ - -72.2988627, - 18.5407333 + -72.1543103, + 19.6870694 ], [ - -72.2962969, - 18.5404689 + -72.1547244, + 19.6868466 ], [ - -72.2954602, - 18.5395169 + -72.1548501, + 19.6877564 ], [ - -72.2961853, - 18.5338582 + -72.1545814, + 19.6877982 + ] + ], + [ + [ + -72.1310601, + 19.6718929 ], [ - -72.2971893, - 18.5332235 + -72.1259842, + 19.6772765 ], [ - -72.3007034, - 18.5332764 + -72.1255379, + 19.6776179 ], [ - -72.3022652, - 18.5342284 + -72.1216891, + 19.6776442 ], [ - -72.3028486, - 18.5335189 + -72.1149677, + 19.672602 ], [ - -72.303104, - 18.5333361 + -72.1152745, + 19.6687152 ], [ - -72.303181, - 18.5334007 + -72.1198205, + 19.6627535 ], [ - -72.3035793, - 18.5335614 + -72.1227768, + 19.6625696 ], [ - -72.3030793, - 18.5346463 + -72.1248965, + 19.662701 ], [ - -72.303715, - 18.5339873 + -72.1285779, + 19.6645394 ], [ - -72.3045286, - 18.5344052 + -72.1308091, + 19.6661677 ], [ - -72.3044015, - 18.5345097 + -72.1316737, + 19.668794 ], [ - -72.3062747, - 18.5352571 + -72.1315621, + 19.671 + ] + ], + [ + [ + -71.845795, + 19.6709758 ], [ - -72.3063107, - 18.5352741 + -71.8429354, + 19.6759525 ], [ - -72.3061219, - 18.5357628 + -71.8410027, + 19.6759525 ], [ - -72.3061219, - 18.5358196 + -71.8380249, + 19.6755254 ], [ - -72.30637, - 18.5358928 + -71.8378671, + 19.6745041 ], [ - -72.3062726, - 18.5354869 + -71.8390504, + 19.6743927 ], [ - -72.3066688, - 18.5350891 + -71.8390109, + 19.6741141 ], [ - -72.3061963, - 18.5349706 + -71.8398392, + 19.673947 ], [ - -72.3058869, - 18.5349385 + -71.8389123, + 19.6736127 ], [ - -72.3055373, - 18.5346833 + -71.8380249, + 19.67209 ], [ - -72.3054864, - 18.534613 + -71.8380052, + 19.6726285 ], [ - -72.3055585, - 18.5345065 + -71.8376699, + 19.6727214 ], [ - -72.3046749, - 18.5342293 + -71.8376305, + 19.672545 ], [ - -72.3047617, - 18.5338817 + -71.8354414, + 19.6732135 ], [ - -72.3043252, - 18.5337511 + -71.835333, + 19.6729999 ], [ - -72.3042595, - 18.5336346 - ] - ], - [ + -71.8331242, + 19.6734642 + ], [ - -72.2981405, - 18.477502 + -71.8326706, + 19.6716815 ], [ - -72.2935652, - 18.4948587 + -71.8321579, + 19.67209 ], [ - -72.2922242, - 18.4964297 + -71.8307183, + 19.6694902 ], [ - -72.2931708, - 18.4972526 + -71.8306009, + 19.6697594 ], [ - -72.2892266, - 18.5057058 + -71.8302174, + 19.6698907 ], [ - -72.2878067, - 18.5080996 + -71.8291833, + 19.6672095 ], [ - -72.2850458, - 18.5119893 + -71.8290749, + 19.6672095 ], [ - -72.2840203, - 18.5113161 + -71.8289122, + 19.6667916 ], [ - -72.2808649, - 18.515879 + -71.8289516, + 19.6666199 ], [ - -72.2773151, - 18.5175994 + -71.8288333, + 19.6663506 ], [ - -72.2723454, - 18.5175246 + -71.8285572, + 19.6664759 ], [ - -72.2662714, - 18.5144578 + -71.8288678, + 19.6672466 ], [ - -72.2665869, - 18.5066783 + -71.8287593, + 19.6674138 ], [ - -72.2692643, - 18.5046154 + -71.8277979, + 19.6678177 ], [ - -72.2661965, - 18.5029756 + -71.8277112, + 19.6678586 ], [ - -72.2688181, - 18.4965222 + -71.8278263, + 19.6679637 ], [ - -72.2691528, - 18.4959403 + -71.8271831, + 19.6681212 ], [ - -72.2702684, - 18.4961519 + -71.8271761, + 19.6680917 ], [ - -72.2702684, - 18.4955964 + -71.8264405, + 19.6683921 ], [ - -72.2690691, - 18.49557 + -71.8264074, + 19.6683231 ], [ - -72.2692922, - 18.4937714 + -71.8261954, + 19.6684253 ], [ - -72.2736988, - 18.4859951 + -71.8261806, + 19.6683556 ], [ - -72.2746749, - 18.4850429 + -71.8258946, + 19.6684206 ], [ - -72.2751769, - 18.483403 + -71.8258897, + 19.6686574 ], [ - -72.2765435, - 18.4813398 + -71.8251551, + 19.6687549 ], [ - -72.2773523, - 18.4814985 + -71.8254509, + 19.6691588 ], [ - -72.2783006, - 18.4809694 + -71.8229332, + 19.6695739 ], [ - -72.2778544, - 18.4807049 + -71.822713, + 19.6696658 ], [ - -72.2771013, - 18.480123 + -71.8227688, + 19.6697577 ], [ - -72.2789978, - 18.4775836 + -71.8201751, + 19.6709855 ], [ - -72.279723, - 18.4772927 + -71.8198474, + 19.6704537 ], [ - -72.2806433, - 18.4776365 + -71.8197985, + 19.6706014 ], [ - -72.2813685, - 18.4771604 + -71.8194674, + 19.6707557 ], [ - -72.2808386, - 18.4769752 + -71.8182472, + 19.6713433 ], [ - -72.2812848, - 18.4758378 + -71.8181426, + 19.6711431 ], [ - -72.2823167, - 18.4751765 + -71.8175813, + 19.6714254 ], [ - -72.2851615, - 18.4750971 + -71.816959, + 19.6707672 ], [ - -72.2849941, - 18.4763668 + -71.8176388, + 19.6718965 ], [ - -72.2854404, - 18.4769752 + -71.8171403, + 19.6720376 ], [ - -72.286277, - 18.4756262 + -71.8158225, + 19.6718045 ], [ - -72.2869325, - 18.4754675 + -71.8138354, + 19.6711874 ], [ - -72.2865978, - 18.4751897 + -71.8123259, + 19.6706982 ], [ - -72.2865978, - 18.4750046 + -71.8121759, + 19.6704258 ], [ - -72.2909765, - 18.4747268 + -71.8124304, + 19.6701467 ], [ - -72.2946579, - 18.4749384 + -71.8119184, + 19.6700141 ], [ - -72.2973911, - 18.476843 - ] - ], - [ - [ - -72.3466657, - 18.5222375 - ], - [ - -72.346833, - 18.5244325 - ], - [ - -72.3475303, - 18.5277645 + -71.8118765, + 19.6705828 ], [ - -72.3455501, - 18.5291131 + -71.811169, + 19.6703483 ], [ - -72.3403069, - 18.5292189 + -71.8095938, + 19.6698516 ], [ - -72.3383267, - 18.5280289 + -71.8077992, + 19.6692829 ], [ - -72.3369043, - 18.530118 + -71.8056028, + 19.668612 ], [ - -72.3338086, - 18.5296684 + -71.8051443, + 19.6668942 ], [ - -72.3289279, - 18.5270769 + -71.8051196, + 19.6652322 ], [ - -72.328649, - 18.5253316 + -71.8052315, + 19.661979 ], [ - -72.3292068, - 18.5232689 + -71.8065603, + 19.6523921 ], [ - -72.330406, - 18.5220524 + -71.8073412, + 19.6482946 ], [ - -72.3321631, - 18.5221847 + -71.8099686, + 19.6468292 ], [ - -72.3322467, - 18.5191963 + -71.8147517, + 19.6454502 ], [ - -72.3369183, - 18.5183633 + -71.8147726, + 19.6455619 ], [ - -72.3382012, - 18.5184691 + -71.8150027, + 19.6455093 ], [ - -72.3381454, - 18.5181782 + -71.8149469, + 19.6453846 ], [ - -72.3411993, - 18.5177947 + -71.8159928, + 19.6450234 ], [ - -72.3454943, - 18.5171997 + -71.8158882, + 19.6448855 ], [ - -72.3492595, - 18.517279 + -71.8165854, + 19.6446097 ], [ - -72.3504308, - 18.5188922 + -71.8190119, + 19.643802 ], [ - -72.3503472, - 18.5206112 + -71.8211524, + 19.643454 ], [ - -72.3496778, - 18.5220392 - ] - ], - [ - [ - -72.3303078, - 18.5486462 + -71.8221564, + 19.6433292 ], [ - -72.3429687, - 18.5508149 + -71.8269046, + 19.643211 ], [ - -72.3433236, - 18.5530585 + -71.8280481, + 19.6432241 ], [ - -72.3413121, - 18.5614341 + -71.8304466, + 19.6440778 ], [ - -72.3390639, - 18.5613593 + -71.8306419, + 19.6448592 ], [ - -72.3384723, - 18.5638271 + -71.8295263, + 19.6450365 ], [ - -72.3375257, - 18.5654348 + -71.8296064, + 19.6456111 ], [ - -72.3348436, - 18.5650609 + -71.8299411, + 19.6455651 ], [ - -72.3311755, - 18.5638271 + -71.8303699, + 19.6451744 ], [ - -72.3312149, - 18.5616211 + -71.830471, + 19.6453452 ], [ - -72.3232082, - 18.5606863 + -71.8308092, + 19.6451974 ], [ - -72.3212361, - 18.559602 + -71.8310184, + 19.6451088 ], [ - -72.3208023, - 18.5587046 + -71.8312519, + 19.6458541 ], [ - -72.3208811, - 18.557882 + -71.8311125, + 19.6458245 ], [ - -72.3259493, - 18.5580274 + -71.831367, + 19.6465862 ], [ - -72.3266186, - 18.5581993 + -71.8328939, + 19.646189 ], [ - -72.3259214, - 18.5577498 + -71.8344566, + 19.6457062 ], [ - -72.3250986, - 18.5573797 + -71.8344664, + 19.6463052 ], [ - -72.3233767, - 18.552263 + -71.834215, + 19.6461938 ], [ - -72.3245994, - 18.5478507 + -71.8342002, + 19.6465513 ], [ - -72.3288986, - 18.5483742 + -71.8346702, + 19.6463 ], [ - -72.329979, - 18.5489548 - ] - ], - [ - [ - -72.3231383, - 18.5269828 + -71.8349118, + 19.6463905 ], [ - -72.3223434, - 18.528067 + -71.8347984, + 19.6462187 ], [ - -72.3209629, - 18.5279745 + -71.8354393, + 19.6458496 ], [ - -72.3207816, - 18.5271282 + -71.8355034, + 19.6458032 ], [ - -72.3208513, - 18.5253697 + -71.8364747, + 19.6461328 ], [ - -72.3214649, - 18.5249598 + -71.8376382, + 19.6472658 ], [ - -72.3225666, - 18.5248937 + -71.8379143, + 19.647888 ], [ - -72.3228454, - 18.52533 + -71.8390483, + 19.6508039 ], [ - -72.3232359, - 18.5264804 + -71.8456942, + 19.6696203 ] ], [ [ - -72.2160832, - 18.6457752 + -72.098878, + 18.54843 ], [ - -72.2159649, - 18.6553795 + -72.096993, + 18.5501994 ], [ - -72.2030279, - 18.6558279 + -72.0972888, + 18.5503209 ], [ - -72.1947057, - 18.6553421 + -72.0968451, + 18.5503489 ], [ - -72.1922208, - 18.6545573 + -72.0955632, + 18.551854 ], [ - -72.1920631, - 18.6521283 + -72.0956428, + 18.5526742 ], [ - -72.193483, - 18.6477559 + -72.0959914, + 18.5533748 ], [ - -72.201253, - 18.6385249 + -72.0962145, + 18.553203 ], [ - -72.2069327, - 18.6388239 + -72.0962842, + 18.5535665 ], [ - -72.2120996, - 18.6424117 + -72.0964446, + 18.5535533 ], [ - -72.2118068, - 18.6430591 + -72.0965352, + 18.5539764 ], [ - -72.2121693, - 18.6426892 + -72.0965056, + 18.554173 ], [ - -72.2127968, - 18.6427552 + -72.0966085, + 18.5541747 ], [ - -72.2134662, - 18.6431252 + -72.0965178, + 18.5542127 ], [ - -72.2135638, - 18.6437462 + -72.0968769, + 18.5546588 ], [ - -72.2154176, - 18.6443947 + -72.0979018, + 18.5552141 ], [ - -72.2158909, - 18.6450301 - ] - ], - [ - [ - -72.2867654, - 18.6482017 + -72.1006211, + 18.5555875 ], [ - -72.2900977, - 18.6527446 + -72.1014926, + 18.5556206 ], [ - -72.28981, - 18.6536532 + -72.1024339, + 18.5555016 ], [ - -72.2900738, - 18.6542664 + -72.103417, + 18.5543515 ], [ - -72.290721, - 18.6537667 + -72.1034798, + 18.5516215 ], [ - -72.2910327, - 18.6544709 + -72.1030789, + 18.5516149 ], [ - -72.2912485, - 18.654221 + -72.1033752, + 18.5515224 ], [ - -72.29168, - 18.6558905 + -72.1035042, + 18.5515224 ], [ - -72.2912245, - 18.656606 + -72.1035239, + 18.5502417 ], [ - -72.2922673, - 18.65597 + -72.1028701, + 18.5503062 ], [ - -72.2926869, - 18.6567536 + -72.1029015, + 18.55025 ], [ - -72.2930705, - 18.6567309 + -72.1028457, + 18.5501773 ], [ - -72.2941253, - 18.6581846 + -72.1035081, + 18.5500252 ], [ - -72.2960192, - 18.6608421 + -72.103491, + 18.5497396 ], [ - -72.2959713, - 18.6619096 + -72.1035181, + 18.5497361 ], [ - -72.2932862, - 18.664567 + -72.1035398, + 18.5489039 ], [ - -72.2906731, - 18.6659979 + -72.1034317, + 18.5487056 ], [ - -72.2895943, - 18.6661342 + -72.102717, + 18.5481437 ], [ - -72.2895943, - 18.6665657 + -72.1025601, + 18.5481536 ], [ - -72.2877004, - 18.6664749 + -72.10229, + 18.5482751 ], [ - -72.2875805, - 18.6676559 + -72.1022891, + 18.5482569 ], [ - -72.2831214, - 18.6697227 + -72.1025201, + 18.5481396 ], [ - -72.2796453, - 18.6696546 + -72.1023388, + 18.5481321 ], [ - -72.2784311, - 18.6690787 + -72.0999082, + 18.5480901 ], [ - -72.2783972, - 18.6687736 - ], + -72.09907, + 18.5483799 + ] + ], + [ [ - -72.277736, - 18.6691671 + -72.2542503, + 18.568262 ], [ - -72.2774394, - 18.669143 + -72.2560252, + 18.5717765 ], [ - -72.2770071, - 18.6683159 + -72.2557886, + 18.5748049 ], [ - -72.2765575, - 18.6681125 + -72.2535009, + 18.5755526 ], [ - -72.2765385, - 18.6680583 + -72.2522782, + 18.5755526 ], [ - -72.2752319, - 18.6685239 + -72.2499906, + 18.5740945 ], [ - -72.2749292, - 18.6674649 + -72.2473874, + 18.5698323 ], [ - -72.2746416, - 18.6674309 + -72.2460069, + 18.566729 ], [ - -72.2734668, - 18.6682145 + -72.2458492, + 18.5629527 ], [ - -72.2732271, - 18.6682712 + -72.2479396, + 18.5625414 ], [ - -72.2726757, - 18.6671583 + -72.2501483, + 18.5628031 ], [ - -72.2719147, - 18.6674288 - ], + -72.2519232, + 18.5650839 + ] + ], + [ [ - -72.2718808, - 18.6673405 + -72.303145, + 18.5332749 ], [ - -72.2688149, - 18.6681868 + -72.3031275, + 18.5331799 ], [ - -72.2688269, - 18.6671761 + -72.3048311, + 18.5311081 ], [ - -72.2690786, - 18.6668241 + -72.3097397, + 18.5311081 ], [ - -72.2688149, - 18.66679 + -72.3164332, + 18.5324302 ], [ - -72.2681077, - 18.6670739 + -72.3234056, + 18.5366083 ], [ - -72.2676282, - 18.6673805 + -72.3261388, + 18.5387765 ], [ - -72.2675563, - 18.6666878 + -72.3261946, + 18.5426371 ], [ - -72.266861, - 18.666949 + -72.3170468, + 18.5540596 ], [ - -72.2655904, - 18.6673578 + -72.3130864, + 18.5540596 ], [ - -72.2654466, - 18.6670058 + -72.2987511, + 18.5453342 ], [ - -72.2647514, - 18.6674146 + -72.2988627, + 18.5407333 ], [ - -72.2629893, - 18.6681868 + -72.2962969, + 18.5404689 ], [ - -72.2628455, - 18.6681754 + -72.2954602, + 18.5395169 ], [ - -72.2626537, - 18.6676076 + -72.2961853, + 18.5338582 ], [ - -72.2623001, - 18.6677098 + -72.2971893, + 18.5332235 ], [ - -72.2624799, - 18.6679199 + -72.3007034, + 18.5332764 ], [ - -72.2624799, - 18.6682322 + -72.3022652, + 18.5342284 ], [ - -72.262306, - 18.6682606 + -72.3028486, + 18.5335189 ], [ - -72.2620963, - 18.6679654 + -72.303104, + 18.5333361 ], [ - -72.2622761, - 18.6689193 + -72.303181, + 18.5334007 ], [ - -72.2601484, - 18.6688966 + -72.3035793, + 18.5335614 ], [ - -72.2542749, - 18.6687944 + -72.3030793, + 18.5346463 ], [ - -72.2505388, - 18.6683476 + -72.303715, + 18.5339873 ], [ - -72.2504371, - 18.669536 + -72.3045286, + 18.5344052 ], [ - -72.2477926, - 18.6698893 + -72.3044015, + 18.5345097 ], [ - -72.2415204, - 18.669793 + -72.3062747, + 18.5352571 ], [ - -72.2414187, - 18.6741933 + -72.3063107, + 18.5352741 ], [ - -72.2389167, - 18.6739759 + -72.3061219, + 18.5357628 ], [ - -72.2387249, - 18.6734649 + -72.3061219, + 18.5358196 ], [ - -72.2383653, - 18.6733059 + -72.30637, + 18.5358928 ], [ - -72.2387009, - 18.6739532 + -72.3062726, + 18.5354869 ], [ - -72.2375502, - 18.6738964 + -72.3066688, + 18.5350891 ], [ - -72.2374183, - 18.6735103 + -72.3061963, + 18.5349706 ], [ - -72.237742, - 18.67334 + -72.3058869, + 18.5349385 ], [ - -72.2375142, - 18.6732605 + -72.3055373, + 18.5346833 ], [ - -72.236843, - 18.6734876 + -72.3054864, + 18.534613 ], [ - -72.2364354, - 18.6724088 + -72.3055585, + 18.5345065 ], [ - -72.2355124, - 18.6726019 + -72.3046749, + 18.5342293 ], [ - -72.2354045, - 18.6724202 + -72.3047617, + 18.5338817 ], [ - -72.2353027, - 18.6729028 + -72.3043252, + 18.5337511 ], [ - -72.2345475, - 18.6726871 - ], + -72.3042595, + 18.5336346 + ] + ], + [ [ - -72.2343077, - 18.6724599 + -72.2981405, + 18.477502 ], [ - -72.2342358, - 18.6734706 + -72.2935652, + 18.4948587 ], [ - -72.2334087, - 18.6734592 + -72.2922242, + 18.4964297 ], [ - -72.2332889, - 18.6733003 + -72.2931708, + 18.4972526 ], [ - -72.2327375, - 18.6732889 + -72.2892266, + 18.5057058 ], [ - -72.2327135, - 18.6735047 + -72.2878067, + 18.5080996 ], [ - -72.227703, - 18.6725281 + -72.2850458, + 18.5119893 ], [ - -72.2265283, - 18.6716537 + -72.2840203, + 18.5113161 ], [ - -72.226804, - 18.6715742 + -72.2808649, + 18.515879 ], [ - -72.2274993, - 18.6715855 + -72.2773151, + 18.5175994 ], [ - -72.2274873, - 18.6714493 + -72.2723454, + 18.5175246 ], [ - -72.2272899, - 18.6714623 + -72.2662714, + 18.5144578 ], [ - -72.2272814, - 18.6712977 + -72.2665869, + 18.5066783 ], [ - -72.2272094, - 18.671358 + -72.2692643, + 18.5046154 ], [ - -72.2261785, - 18.6713693 + -72.2661965, + 18.5029756 ], [ - -72.2256032, - 18.670881 + -72.2688181, + 18.4965222 ], [ - -72.2255073, - 18.6694502 + -72.2691528, + 18.4959403 ], [ - -72.2261066, - 18.6696886 + -72.2702684, + 18.4961519 ], [ - -72.2261785, - 18.6695949 + -72.2702684, + 18.4955964 ], [ - -72.2259837, - 18.6695495 + -72.2690691, + 18.49557 ], [ - -72.225777, - 18.6691379 + -72.2692922, + 18.4937714 ], [ - -72.2253335, - 18.6694643 + -72.2736988, + 18.4859951 ], [ - -72.2249739, - 18.66947 + -72.2746749, + 18.4850429 ], [ - -72.2245783, - 18.6678802 + -72.2751769, + 18.483403 ], [ - -72.2235525, - 18.6677046 + -72.2765435, + 18.4813398 ], [ - -72.2235907, - 18.6675921 + -72.2773523, + 18.4814985 ], [ - -72.2224634, - 18.6676283 + -72.2783006, + 18.4809694 ], [ - -72.2223659, - 18.667022 + -72.2778544, + 18.4807049 ], [ - -72.2223277, - 18.6670943 + -72.2771013, + 18.480123 ], [ - -72.2219209, - 18.667026 + -72.2789978, + 18.4775836 ], [ - -72.2208105, - 18.6669015 + -72.279723, + 18.4772927 ], [ - -72.220809, - 18.6665325 + -72.2806433, + 18.4776365 ], [ - -72.2208705, - 18.6663593 + -72.2813685, + 18.4771604 ], [ - -72.2206023, - 18.6668107 + -72.2808386, + 18.4769752 ], [ - -72.2203895, - 18.6666361 + -72.2812848, + 18.4758378 ], [ - -72.2184341, - 18.6650535 + -72.2823167, + 18.4751765 ], [ - -72.21829, - 18.6640979 + -72.2851615, + 18.4750971 ], [ - -72.2183493, - 18.6608376 + -72.2849941, + 18.4763668 ], [ - -72.2187223, - 18.6606541 + -72.2854404, + 18.4769752 ], [ - -72.2186894, - 18.660603 + -72.286277, + 18.4756262 ], [ - -72.2187253, - 18.6604525 + -72.2869325, + 18.4754675 ], [ - -72.2189771, - 18.6603247 + -72.2865978, + 18.4751897 ], [ - -72.2187823, - 18.6601998 + -72.2865978, + 18.4750046 ], [ - -72.2186984, - 18.6602367 + -72.2909765, + 18.4747268 ], [ - -72.2185815, - 18.6600352 + -72.2946579, + 18.4749384 ], [ - -72.2186085, - 18.6600039 - ], + -72.2973911, + 18.476843 + ] + ], + [ [ - -72.2187823, - 18.6601345 + -72.3466657, + 18.5222375 ], [ - -72.218995, - 18.6600181 + -72.346833, + 18.5244325 ], [ - -72.2189111, - 18.6599131 + -72.3475303, + 18.5277645 ], [ - -72.2189681, - 18.6597938 + -72.3455501, + 18.5291131 ], [ - -72.2183807, - 18.6595837 + -72.3403069, + 18.5292189 ], [ - -72.2184728, - 18.6539662 + -72.3383267, + 18.5280289 ], [ - -72.2201001, - 18.6511554 + -72.3369043, + 18.530118 ], [ - -72.225796, - 18.6469472 + -72.3338086, + 18.5296684 ], [ - -72.2283048, - 18.6457265 + -72.3289279, + 18.5270769 ], [ - -72.2379335, - 18.645855 + -72.328649, + 18.5253316 ], [ - -72.237764, - 18.6446985 + -72.3292068, + 18.5232689 ], [ - -72.2400355, - 18.6432529 + -72.330406, + 18.5220524 ], [ - -72.2455958, - 18.6433493 + -72.3321631, + 18.5221847 ], [ - -72.2482742, - 18.6450358 + -72.3322467, + 18.5191963 ], [ - -72.2487488, - 18.6436705 + -72.3369183, + 18.5183633 ], [ - -72.2511067, - 18.6429775 + -72.3382012, + 18.5184691 ], [ - -72.2512385, - 18.6433409 + -72.3381454, + 18.5181782 ], [ - -72.2512625, - 18.6431592 + -72.3411993, + 18.5177947 ], [ - -72.2514843, - 18.6431365 + -72.3454943, + 18.5171997 ], [ - -72.2513284, - 18.6429718 + -72.3492595, + 18.517279 ], [ - -72.2533602, - 18.6423471 + -72.3504308, + 18.5188922 ], [ - -72.253516, - 18.6426765 + -72.3503472, + 18.5206112 ], [ - -72.2539535, - 18.6425402 - ], + -72.3496778, + 18.5220392 + ] + ], + [ [ - -72.2541453, - 18.642932 + -72.3303078, + 18.5486462 ], [ - -72.2543851, - 18.6428696 + -72.3429687, + 18.5508149 ], [ - -72.2543791, - 18.6427503 + -72.3433236, + 18.5530585 ], [ - -72.2564168, - 18.6423244 + -72.3413121, + 18.5614341 ], [ - -72.2566925, - 18.6431365 + -72.3390639, + 18.5613593 ], [ - -72.2568783, - 18.6428582 + -72.3384723, + 18.5638271 ], [ - -72.2568184, - 18.6425288 + -72.3375257, + 18.5654348 ], [ - -72.258843, - 18.6420991 + -72.3348436, + 18.5650609 ], [ - -72.258885, - 18.6422467 + -72.3311755, + 18.5638271 ], [ - -72.2592626, - 18.6422297 + -72.3312149, + 18.5616211 ], [ - -72.2596461, - 18.6424057 + -72.3232082, + 18.5606863 ], [ - -72.2592206, - 18.6406907 + -72.3212361, + 18.559602 ], [ - -72.2599545, - 18.6404815 + -72.3208023, + 18.5587046 ], [ - -72.2601156, - 18.6406341 + -72.3208811, + 18.557882 ], [ - -72.2601156, - 18.6399393 + -72.3259493, + 18.5580274 ], [ - -72.2615268, - 18.6394669 + -72.3266186, + 18.5581993 ], [ - -72.2626056, - 18.6391034 + -72.3259214, + 18.5577498 ], [ - -72.2654465, - 18.6387286 + -72.3250986, + 18.5573797 ], [ - -72.2719433, - 18.6386832 + -72.3233767, + 18.552263 ], [ - -72.272201, - 18.6388649 + -72.3245994, + 18.5478507 ], [ - -72.2730341, - 18.6394158 + -72.3288986, + 18.5483742 ], [ - -72.273166, - 18.6412558 - ], + -72.329979, + 18.5489548 + ] + ], + [ [ - -72.2738732, - 18.6410286 + -72.3231383, + 18.5269828 ], [ - -72.2742208, - 18.6416079 + -72.3223434, + 18.528067 ], [ - -72.2752187, - 18.6416987 + -72.3209629, + 18.5279745 ], [ - -72.2754524, - 18.6415738 + -72.3207816, + 18.5271282 ], [ - -72.2755513, - 18.6416874 + -72.3208513, + 18.5253697 ], [ - -72.2755394, - 18.6417527 + -72.3214649, + 18.5249598 ], [ - -72.2764713, - 18.6418634 + -72.3225666, + 18.5248937 ], [ - -72.276753, - 18.6418975 + -72.3228454, + 18.52533 ], [ - -72.2762953, - 18.6426002 + -72.3232359, + 18.5264804 + ] + ], + [ + [ + -72.2160832, + 18.6457752 ], [ - -72.2774226, - 18.6429978 + -72.2159649, + 18.6553795 ], [ - -72.277982, - 18.6427247 + -72.2030279, + 18.6558279 ], [ - -72.2785796, - 18.6431303 + -72.1947057, + 18.6553421 ], [ - -72.2785669, - 18.6432307 + -72.1922208, + 18.6545573 ], [ - -72.2789017, - 18.6433471 + -72.1920631, + 18.6521283 ], [ - -72.279851, - 18.6439655 + -72.193483, + 18.6477559 ], [ - -72.2858703, - 18.6469651 - ] - ], - [ + -72.201253, + 18.6385249 + ], [ - -72.5557247, - 18.5305893 + -72.2069327, + 18.6388239 ], [ - -72.5555866, - 18.5367036 + -72.2120996, + 18.6424117 ], [ - -72.554995, - 18.537975 + -72.2118068, + 18.6430591 ], [ - -72.5488026, - 18.537919 + -72.2121693, + 18.6426892 ], [ - -72.5486646, - 18.5372832 + -72.2127968, + 18.6427552 ], [ - -72.548842, - 18.5306267 + -72.2134662, + 18.6431252 ], [ - -72.5493745, - 18.5301031 + -72.2135638, + 18.6437462 ], [ - -72.555133, - 18.5301218 + -72.2154176, + 18.6443947 + ], + [ + -72.2158909, + 18.6450301 ] ], [ [ - -72.6235278, - 18.5079877 + -72.2867654, + 18.6482017 ], [ - -72.6234441, - 18.5095217 + -72.2900977, + 18.6527446 ], [ - -72.6226074, - 18.5104341 + -72.28981, + 18.6536532 ], [ - -72.6204878, - 18.511849 + -72.2900738, + 18.6542664 ], [ - -72.6183403, - 18.5107514 + -72.290721, + 18.6537667 ], [ - -72.6162207, - 18.5083183 + -72.2910327, + 18.6544709 ], [ - -72.6162625, - 18.506467 + -72.2912485, + 18.654221 ], [ - -72.618661, - 18.5044438 + -72.29168, + 18.6558905 ], [ - -72.6204041, - 18.5044967 + -72.2912245, + 18.656606 ], [ - -72.6228305, - 18.506996 - ] - ] - ] - }, - { - "name": "Ireland Bartholomew Quarter-Inch 1940", - "type": "tms", - "template": "http://geo.nls.uk/maps/ireland/bartholomew/{zoom}/{x}/{-y}.png", - "scaleExtent": [ - 5, - 13 - ], - "polygon": [ - [ - [ - -8.8312773, - 55.3963337 + -72.2922673, + 18.65597 ], [ - -7.3221271, - 55.398605 + -72.2926869, + 18.6567536 ], [ - -7.2891331, - 55.4333162 + -72.2930705, + 18.6567309 ], [ - -7.2368042, - 55.4530757 + -72.2941253, + 18.6581846 ], [ - -7.18881, - 55.4497995 + -72.2960192, + 18.6608421 ], [ - -7.1528144, - 55.3968384 + -72.2959713, + 18.6619096 ], [ - -6.90561, - 55.394903 + -72.2932862, + 18.664567 ], [ - -6.9047153, - 55.3842114 + -72.2906731, + 18.6659979 ], [ - -5.8485282, - 55.3922956 + -72.2895943, + 18.6661342 ], [ - -5.8378629, - 55.248676 + -72.2895943, + 18.6665657 ], [ - -5.3614762, - 55.2507024 + -72.2877004, + 18.6664749 ], [ - -5.3899172, - 53.8466464 + -72.2875805, + 18.6676559 ], [ - -5.8734141, - 53.8487436 + -72.2831214, + 18.6697227 ], [ - -5.8983, - 52.8256258 + -72.2796453, + 18.6696546 ], [ - -6.0191742, - 52.8256258 + -72.2784311, + 18.6690787 ], [ - -6.0262844, - 51.7712367 + -72.2783972, + 18.6687736 ], [ - -8.1131422, - 51.7712367 + -72.277736, + 18.6691671 ], [ - -8.1273627, - 51.3268839 + -72.2774394, + 18.669143 ], [ - -10.6052842, - 51.3091083 + -72.2770071, + 18.6683159 ], [ - -10.6271879, - 52.0328254 + -72.2765575, + 18.6681125 ], [ - -10.6469845, - 52.0322454 + -72.2765385, + 18.6680583 ], [ - -10.6469845, - 52.0440365 + -72.2752319, + 18.6685239 ], [ - -10.6271879, - 52.0448095 + -72.2749292, + 18.6674649 ], [ - -10.6290733, - 52.0745627 + -72.2746416, + 18.6674309 ], [ - -10.6699234, - 52.0743695 + -72.2734668, + 18.6682145 ], [ - -10.6702376, - 52.0876941 + -72.2732271, + 18.6682712 ], [ - -10.6312729, - 52.0898179 + -72.2726757, + 18.6671583 ], [ - -10.6393128, - 52.4147202 + -72.2719147, + 18.6674288 ], [ - -10.3137689, - 52.4185533 + -72.2718808, + 18.6673405 ], [ - -10.3166401, - 53.3341342 + -72.2688149, + 18.6681868 ], [ - -10.3699669, - 53.3330727 + -72.2688269, + 18.6671761 ], [ - -10.385965, - 54.3534472 + -72.2690786, + 18.6668241 ], [ - -8.8163777, - 54.3586265 + -72.2688149, + 18.66679 ], [ - -8.8173427, - 54.6595721 + -72.2681077, + 18.6670739 ], [ - -8.8413398, - 54.6616284 + -72.2676282, + 18.6673805 ], [ - -8.8422286, - 54.6929749 + -72.2675563, + 18.6666878 ], [ - -8.8315632, - 54.7145436 + -72.266861, + 18.666949 ], [ - -8.8151208, - 54.7145436 - ] - ] - ], - "terms_url": "http://geo.nls.uk/maps/", - "terms_text": "National Library of Scotland Historic Maps" - }, - { - "name": "Ireland British War Office One-Inch 1941-43 GSGS 4136", - "type": "tms", - "template": "http://geo.nls.uk/maps/ireland/gsgs4136/{zoom}/{x}/{-y}.png", - "scaleExtent": [ - 5, - 15 - ], - "polygon": [ - [ + -72.2655904, + 18.6673578 + ], [ - -10.0847426, - 51.4147902 + -72.2654466, + 18.6670058 ], [ - -10.0906535, - 51.5064103 + -72.2647514, + 18.6674146 ], [ - -10.4564222, - 51.5003961 + -72.2629893, + 18.6681868 ], [ - -10.5005905, - 52.3043019 + -72.2628455, + 18.6681754 ], [ - -10.0837522, - 52.312741 + -72.2626537, + 18.6676076 ], [ - -10.0840973, - 52.3404698 + -72.2623001, + 18.6677098 ], [ - -10.055802, - 52.3408915 + -72.2624799, + 18.6679199 ], [ - -10.0768509, - 52.7628238 + -72.2624799, + 18.6682322 ], [ - -9.7780248, - 52.7684611 + -72.262306, + 18.6682606 ], [ - -9.7818205, - 52.8577261 + -72.2620963, + 18.6679654 ], [ - -9.6337877, - 52.8596012 + -72.2622761, + 18.6689193 ], [ - -9.6449626, - 53.1294502 + -72.2601484, + 18.6688966 ], [ - -10.0919663, - 53.1227152 + -72.2542749, + 18.6687944 ], [ - -10.1051422, - 53.3912913 + -72.2505388, + 18.6683476 ], [ - -10.4052593, - 53.3866349 + -72.2504371, + 18.669536 ], [ - -10.4530828, - 54.193502 + -72.2477926, + 18.6698893 ], [ - -10.2998523, - 54.1974988 + -72.2415204, + 18.669793 ], [ - -10.3149801, - 54.4669592 + -72.2414187, + 18.6741933 ], [ - -8.9276095, - 54.4853897 + -72.2389167, + 18.6739759 ], [ - -8.9339534, - 54.7546562 + -72.2387249, + 18.6734649 ], [ - -8.7773069, - 54.755501 + -72.2383653, + 18.6733059 ], [ - -8.7826749, - 55.0252208 + -72.2387009, + 18.6739532 ], [ - -8.9402974, - 55.0238221 + -72.2375502, + 18.6738964 ], [ - -8.9451773, - 55.2934155 + -72.2374183, + 18.6735103 ], [ - -7.528039, - 55.2970274 + -72.237742, + 18.67334 ], [ - -7.525599, - 55.3874955 + -72.2375142, + 18.6732605 ], [ - -7.0541955, - 55.3841691 + -72.236843, + 18.6734876 ], [ - -7.0556595, - 55.2939712 + -72.2364354, + 18.6724088 ], [ - -6.3241545, - 55.2859128 + -72.2355124, + 18.6726019 ], [ - -6.3217146, - 55.3253556 + -72.2354045, + 18.6724202 ], [ - -6.1035807, - 55.3223016 + -72.2353027, + 18.6729028 ], [ - -6.1045566, - 55.2828557 + -72.2345475, + 18.6726871 ], [ - -5.7985836, - 55.2772968 + -72.2343077, + 18.6724599 ], [ - -5.8117595, - 55.0087135 + -72.2342358, + 18.6734706 ], [ - -5.656577, - 55.0056351 + -72.2334087, + 18.6734592 ], [ - -5.6721928, - 54.7355021 + -72.2332889, + 18.6733003 ], [ - -5.3618278, - 54.729585 + -72.2327375, + 18.6732889 ], [ - -5.3964755, - 54.1917889 + -72.2327135, + 18.6735047 ], [ - -5.855679, - 54.2017807 + -72.227703, + 18.6725281 ], [ - -5.9220464, - 52.8524504 + -72.2265283, + 18.6716537 ], [ - -6.070885, - 52.8551025 + -72.226804, + 18.6715742 ], [ - -6.1030927, - 52.1373337 + -72.2274993, + 18.6715855 ], [ - -6.8331336, - 52.1463183 + -72.2274873, + 18.6714493 ], [ - -6.8355736, - 52.0578908 + -72.2272899, + 18.6714623 ], [ - -7.5641506, - 52.0617913 + -72.2272814, + 18.6712977 ], [ - -7.5661026, - 51.7921593 + -72.2272094, + 18.671358 ], [ - -8.147305, - 51.792763 + -72.2261785, + 18.6713693 ], [ - -8.146329, - 51.7033331 + -72.2256032, + 18.670881 ], [ - -8.2912636, - 51.7027283 + -72.2255073, + 18.6694502 ], [ - -8.2897996, - 51.5227274 + -72.2261066, + 18.6696886 ], [ - -9.1174397, - 51.516958 + -72.2261785, + 18.6695949 ], [ - -9.1179277, - 51.4625685 + -72.2259837, + 18.6695495 ], [ - -9.3692452, - 51.4616564 + -72.225777, + 18.6691379 ], [ - -9.3672933, - 51.4254613 - ] - ] - ], - "terms_url": "http://geo.nls.uk/maps/", - "terms_text": "National Library of Scotland Historic Maps" - }, - { - "name": "Ireland EEA CORINE 2006", - "type": "tms", - "template": "http://a.tile.openstreetmap.ie/tiles/corine/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 5, - 16 - ], - "polygon": [ - [ + -72.2253335, + 18.6694643 + ], [ - -5.842956, - 53.8627976 + -72.2249739, + 18.66947 ], [ - -5.8341575, - 53.7633541 + -72.2245783, + 18.6678802 ], [ - -5.6267647, - 53.5383692 + -72.2235525, + 18.6677046 ], [ - -5.9648778, - 52.1631197 + -72.2235907, + 18.6675921 ], [ - -6.0453211, - 52.0527275 + -72.2224634, + 18.6676283 ], [ - -6.1823261, - 51.9699475 + -72.2223659, + 18.667022 ], [ - -6.3960035, - 51.9234618 + -72.2223277, + 18.6670943 ], [ - -6.5945978, - 51.883911 + -72.2219209, + 18.667026 ], [ - -7.2481994, - 51.9056295 + -72.2208105, + 18.6669015 ], [ - -7.341212, - 51.8148076 + -72.220809, + 18.6665325 ], [ - -8.1971787, - 51.5037019 + -72.2208705, + 18.6663593 ], [ - -8.3191005, - 51.4167737 + -72.2206023, + 18.6668107 ], [ - -9.4478202, - 51.1991221 + -72.2203895, + 18.6666361 ], [ - -9.9015706, - 51.2266802 + -72.2184341, + 18.6650535 ], [ - -10.472215, - 51.4050139 + -72.21829, + 18.6640979 ], [ - -10.8857437, - 51.6770619 + -72.2183493, + 18.6608376 ], [ - -11.035318, - 52.0620016 + -72.2187223, + 18.6606541 ], [ - -10.9950963, - 52.1831616 + -72.2186894, + 18.660603 ], [ - -10.8178697, - 52.3139827 + -72.2187253, + 18.6604525 ], [ - -9.8839736, - 52.9032208 + -72.2189771, + 18.6603247 ], [ - -10.1165049, - 52.9676141 + -72.2187823, + 18.6601998 ], [ - -10.5514014, - 53.3317027 + -72.2186984, + 18.6602367 ], [ - -10.6896633, - 53.5854022 + -72.2185815, + 18.6600352 ], [ - -10.6444139, - 54.0100436 + -72.2186085, + 18.6600039 ], [ - -10.5501445, - 54.257482 + -72.2187823, + 18.6601345 ], [ - -10.2824192, - 54.4742405 + -72.218995, + 18.6600181 ], [ - -9.8073011, - 54.5705346 + -72.2189111, + 18.6599131 ], [ - -9.196435, - 54.5486695 + -72.2189681, + 18.6597938 ], [ - -9.2253443, - 54.7000264 + -72.2183807, + 18.6595837 ], [ - -8.8985435, - 55.1363582 + -72.2184728, + 18.6539662 ], [ - -8.0476045, - 55.4711977 + -72.2201001, + 18.6511554 ], [ - -7.4367384, - 55.6191092 + -72.225796, + 18.6469472 ], [ - -7.2205471, - 55.6205288 + -72.2283048, + 18.6457265 ], [ - -6.8258723, - 55.5608644 + -72.2379335, + 18.645855 ], [ - -6.0679458, - 55.3727567 + -72.237764, + 18.6446985 ], [ - -5.5639184, - 55.0759594 + -72.2400355, + 18.6432529 ], [ - -5.0649187, - 54.4640142 + -72.2455958, + 18.6433493 ], [ - -5.2572284, - 54.1582424 - ] - ] - ], - "terms_url": "http://www.eea.europa.eu/data-and-maps/data/clc-2006-vector-data-version-1", - "terms_text": "EEA Corine 2006" - }, - { - "name": "Ireland EEA GMES Urban Atlas", - "type": "tms", - "template": "http://a.tile.openstreetmap.ie/tiles/urbanatlas/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 5, - 17 - ], - "polygon": [ - [ + -72.2482742, + 18.6450358 + ], [ - -9.2759602, - 52.7993666 + -72.2487488, + 18.6436705 ], [ - -9.215509, - 52.8276933 + -72.2511067, + 18.6429775 ], [ - -9.1086618, - 52.9128016 + -72.2512385, + 18.6433409 ], [ - -9.0196831, - 52.8837107 + -72.2512625, + 18.6431592 ], [ - -8.8760649, - 52.8978445 + -72.2514843, + 18.6431365 ], [ - -8.8001797, - 52.8833558 + -72.2513284, + 18.6429718 ], [ - -8.7665597, - 52.9065354 + -72.2533602, + 18.6423471 ], [ - -8.5938079, - 52.9238592 + -72.253516, + 18.6426765 ], [ - -8.5241972, - 52.8869724 + -72.2539535, + 18.6425402 ], [ - -8.4956786, - 52.9105906 + -72.2541453, + 18.642932 ], [ - -8.3506448, - 52.9238592 + -72.2543851, + 18.6428696 ], [ - -8.2718204, - 52.9492401 + -72.2543791, + 18.6427503 ], [ - -8.2249679, - 52.8991338 + -72.2564168, + 18.6423244 ], [ - -8.1564001, - 52.9149986 + -72.2566925, + 18.6431365 ], [ - -8.0881237, - 52.7630417 + -72.2568783, + 18.6428582 ], [ - -8.1360092, - 52.7239783 + -72.2568184, + 18.6425288 ], [ - -8.1570652, - 52.6766443 + -72.258843, + 18.6420991 ], [ - -8.2059695, - 52.6185385 + -72.258885, + 18.6422467 ], [ - -8.2025734, - 52.5954396 + -72.2592626, + 18.6422297 ], [ - -8.2231242, - 52.5599691 + -72.2596461, + 18.6424057 ], [ - -8.2236294, - 52.5095371 + -72.2592206, + 18.6406907 ], [ - -8.2976651, - 52.5025088 + -72.2599545, + 18.6404815 ], [ - -8.3295888, - 52.4721087 + -72.2601156, + 18.6406341 ], [ - -8.3589695, - 52.4986072 + -72.2601156, + 18.6399393 ], [ - -8.3737385, - 52.4764529 + -72.2615268, + 18.6394669 ], [ - -8.432326, - 52.4342609 + -72.2626056, + 18.6391034 ], [ - -8.4754569, - 52.4216289 + -72.2654465, + 18.6387286 ], [ - -8.5017727, - 52.3870011 + -72.2719433, + 18.6386832 ], [ - -8.5476205, - 52.3681351 + -72.272201, + 18.6388649 ], [ - -8.6444103, - 52.3376422 + -72.2730341, + 18.6394158 ], [ - -8.6841451, - 52.3660614 + -72.273166, + 18.6412558 ], [ - -8.8154099, - 52.3721014 + -72.2738732, + 18.6410286 ], [ - -8.8614233, - 52.3521652 + -72.2742208, + 18.6416079 ], [ - -8.9074451, - 52.3824674 + -72.2752187, + 18.6416987 ], [ - -8.9388551, - 52.3789166 + -72.2754524, + 18.6415738 ], [ - -8.9782502, - 52.4093811 + -72.2755513, + 18.6416874 ], [ - -9.0298715, - 52.4104169 + -72.2755394, + 18.6417527 ], [ - -9.1059449, - 52.420981 + -72.2764713, + 18.6418634 ], [ - -9.1084962, - 52.4415071 + -72.276753, + 18.6418975 ], [ - -9.140702, - 52.4650891 + -72.2762953, + 18.6426002 ], [ - -9.1315765, - 52.5136207 + -72.2774226, + 18.6429978 ], [ - -9.1739699, - 52.5620573 + -72.277982, + 18.6427247 ], [ - -9.1426235, - 52.589645 + -72.2785796, + 18.6431303 ], [ - -9.1542382, - 52.610216 + -72.2785669, + 18.6432307 ], [ - -9.1426231, - 52.6387401 + -72.2789017, + 18.6433471 ], [ - -9.1776844, - 52.6447573 + -72.279851, + 18.6439655 ], [ - -9.2012184, - 52.6526248 + -72.2858703, + 18.6469651 + ] + ], + [ + [ + -72.5557247, + 18.5305893 ], [ - -9.2036198, - 52.6686468 + -72.5555866, + 18.5367036 ], [ - -9.2238348, - 52.6706578 + -72.554995, + 18.537975 ], [ - -9.2161072, - 52.6919412 + -72.5488026, + 18.537919 ], [ - -9.1882395, - 52.7057242 + -72.5486646, + 18.5372832 ], [ - -9.2750099, - 52.7350292 + -72.548842, + 18.5306267 ], [ - -9.2601152, - 52.7616711 + -72.5493745, + 18.5301031 + ], + [ + -72.555133, + 18.5301218 ] ], [ [ - -7.307313219981238, - 53.81625879275365 + -72.6235278, + 18.5079877 ], [ - -7.245858447032101, - 53.78300449111207 + -72.6234441, + 18.5095217 ], [ - -7.15144468970801, - 53.81179938127503 + -72.6226074, + 18.5104341 ], [ - -7.086900011973722, - 53.784424420834 + -72.6204878, + 18.511849 ], [ - -7.0347149533800435, - 53.77996162275688 + -72.6183403, + 18.5107514 ], [ - -6.975320116954343, - 53.788481098127924 + -72.6162207, + 18.5083183 ], [ - -6.928628222423156, - 53.81443454540607 + -72.6162625, + 18.506467 ], [ - -6.992829577403537, - 53.86609081229548 + -72.618661, + 18.5044438 ], [ - -6.975320116954343, - 53.87945028968944 + -72.6204041, + 18.5044967 ], [ - -6.949914233165313, - 53.87094929783329 - ], + -72.6228305, + 18.506996 + ] + ] + ] + }, + { + "name": "Ireland Bartholomew Quarter-Inch 1940", + "type": "tms", + "template": "http://geo.nls.uk/maps/ireland/bartholomew/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 5, + 13 + ], + "polygon": [ + [ [ - -6.9375546140247035, - 53.87540241385127 + -8.8312773, + 55.3963337 ], [ - -6.936867968516893, - 53.896649390754646 + -7.3221271, + 55.398605 ], [ - -6.897042529063821, - 53.889770599553906 + -7.2891331, + 55.4333162 ], [ - -6.867516772227924, - 53.880259817835736 + -7.2368042, + 55.4530757 ], [ - -6.851037280040446, - 53.88450958346468 + -7.18881, + 55.4497995 ], [ - -6.842454211192801, - 53.89786317755242 + -7.1528144, + 55.3968384 ], [ - -6.812928454356904, - 53.90069520963246 + -6.90561, + 55.394903 ], [ - -6.79850889869286, - 53.89280549994937 + -6.9047153, + 55.3842114 ], [ - -6.789925829845217, - 53.89462633440526 + -5.8485282, + 55.3922956 ], [ - -6.791985766368652, - 53.904538374710896 + -5.8378629, + 55.248676 ], [ - -6.778939501720231, - 53.918087767078354 + -5.3614762, + 55.2507024 ], [ - -6.77001311011868, - 53.91505470292794 + -5.3899172, + 53.8466464 ], [ - -6.75868345923979, - 53.921727153244476 + -5.8734141, + 53.8487436 ], [ - -6.744263903575747, - 53.916065748791254 + -5.8983, + 52.8256258 ], [ - -6.727441088634364, - 53.92334455637637 + -6.0191742, + 52.8256258 ], [ - -6.713021532970319, - 53.90777445003927 + -6.0262844, + 51.7712367 ], [ - -6.684182421642232, - 53.90292024303218 + -8.1131422, + 51.7712367 ], [ - -6.623757616954815, - 53.88187882710815 + -8.1273627, + 51.3268839 ], [ - -6.590455309825955, - 53.857789593974296 + -10.6052842, + 51.3091083 ], [ - -6.591141955333765, - 53.835509894663346 + -10.6271879, + 52.0328254 ], [ - -6.574319140392382, - 53.82254170362619 + -10.6469845, + 52.0322454 ], [ - -6.571572558361136, - 53.804703885117576 + -10.6469845, + 52.0440365 ], [ - -6.5533764524041285, - 53.79983770791046 + -10.6271879, + 52.0448095 ], [ - -6.541360156017425, - 53.78300449111207 + -10.6290733, + 52.0745627 ], [ - -6.511491076427622, - 53.76900546961285 + -10.6699234, + 52.0743695 ], [ - -6.472695605236269, - 53.77326653566421 + -10.6702376, + 52.0876941 ], [ - -6.443513171154276, - 53.76393220797015 + -10.6312729, + 52.0898179 ], [ - -6.44728972144724, - 53.75114486961979 + -10.6393128, + 52.4147202 ], [ - -6.4775021237909485, - 53.728199094666586 + -10.3137689, + 52.4185533 ], [ - -6.459649340587848, - 53.71682309412751 + -10.3166401, + 53.3341342 ], [ - -6.435616747814443, - 53.72230833571077 + -10.3699669, + 53.3330727 ], [ - -6.4198239011347775, - 53.72921465935537 + -10.385965, + 54.3534472 ], [ - -6.4009411496699595, - 53.72169889975152 + -8.8163777, + 54.3586265 ], [ - -6.375878588634836, - 53.718042098526006 + -8.8173427, + 54.6595721 ], [ - -6.359055773693453, - 53.708695495259434 + -8.8413398, + 54.6616284 ], [ - -6.340173022228636, - 53.708085862042424 + -8.8422286, + 54.6929749 ], [ - -6.329873339611461, - 53.71296268045594 + -8.8315632, + 54.7145436 ], [ - -6.325753466564592, - 53.72210519137233 - ], + -8.8151208, + 54.7145436 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "Ireland British War Office One-Inch 1941-43 GSGS 4136", + "type": "tms", + "template": "http://geo.nls.uk/maps/ireland/gsgs4136/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 5, + 15 + ], + "polygon": [ + [ [ - -6.2938244504513525, - 53.72576163932632 + -10.0847426, + 51.4147902 ], [ - -6.265328661877173, - 53.7363229253304 + -10.0906535, + 51.5064103 ], [ - -6.240952746349864, - 53.734292114843086 + -10.4564222, + 51.5003961 ], [ - -6.180871264416349, - 53.632015710147016 + -10.5005905, + 52.3043019 ], [ - -6.092793818322125, - 53.588038288422446 + -10.0837522, + 52.312741 ], [ - -5.985734079608837, - 53.49383447350347 + -10.0840973, + 52.3404698 ], [ - -6.0887447432153685, - 53.27174268379562 + -10.055802, + 52.3408915 ], [ - -6.033272979232964, - 53.1191110041494 + -10.0768509, + 52.7628238 ], [ - -5.984663357119282, - 52.9651254915577 + -9.7780248, + 52.7684611 ], [ - -6.122679104189409, - 52.73207538466633 + -9.7818205, + 52.8577261 ], [ - -6.185163845400262, - 52.73706461957944 + -9.6337877, + 52.8596012 ], [ - -6.1899703639549415, - 52.76075568810044 + -9.6449626, + 53.1294502 ], [ - -6.319059719423517, - 52.782357357522855 + -10.0919663, + 53.1227152 ], [ - -6.393904079774976, - 52.7790347214105 + -10.1051422, + 53.3912913 ], [ - -6.465315212587381, - 52.6946379192593 + -10.4052593, + 53.3866349 ], [ - -6.534666408876349, - 52.673409093161446 + -10.4530828, + 54.193502 ], [ - -6.612257351259057, - 52.69255711803012 + -10.2998523, + 54.1974988 ], [ - -6.6692489284074155, - 52.74745702505679 + -10.3149801, + 54.4669592 ], [ - -6.671308864930852, - 52.76948072949997 + -8.9276095, + 54.4853897 ], [ - -6.720747341493285, - 52.7748810695361 + -8.9339534, + 54.7546562 ], [ - -6.71456753192298, - 52.80311808637125 + -8.7773069, + 54.755501 ], [ - -6.658949245790243, - 52.84709806982182 + -8.7826749, + 55.0252208 ], [ - -6.582044948915348, - 52.81349473557279 + -8.9402974, + 55.0238221 ], [ - -6.547712673524768, - 52.83133677935633 + -8.9451773, + 55.2934155 ], [ - -6.531233181337292, - 52.87404491274922 + -7.528039, + 55.2970274 ], [ - -6.617750515321548, - 52.87528820923615 + -7.525599, + 55.3874955 ], [ - -6.728987087587023, - 52.90635903963372 + -7.0541955, + 55.3841691 ], [ - -6.780485500672891, - 52.859122574848655 + -7.0556595, + 55.2939712 ], [ - -6.870436062196207, - 52.85165948109425 + -6.3241545, + 55.2859128 ], [ - -6.938413967469552, - 52.86658438536895 + -6.3217146, + 55.3253556 ], [ - -6.965879787782016, - 52.89766145203082 + -6.1035807, + 55.3223016 ], [ - -6.987852444031986, - 52.969260966642985 + -6.1045566, + 55.2828557 ], [ - -7.039350857117853, - 52.9560260536776 + -5.7985836, + 55.2772968 ], [ - -7.109388698914634, - 53.007288776633686 + -5.8117595, + 55.0087135 ], [ - -7.068876613953752, - 53.058078015357786 + -5.656577, + 55.0056351 ], [ - -7.088789333680287, - 53.11869890949892 + -5.6721928, + 54.7355021 ], [ - -7.119688381531809, - 53.15000684568904 + -5.3618278, + 54.729585 ], [ - -7.105955471375577, - 53.16112391039828 + -5.3964755, + 54.1917889 ], [ - -7.127928127625547, - 53.17223809655703 + -5.855679, + 54.2017807 ], [ - -7.180113186219227, - 53.182526443342745 + -5.9220464, + 52.8524504 ], [ - -7.160887112000503, - 53.19898266621498 + -6.070885, + 52.8551025 ], [ - -7.057890285828767, - 53.19898266621498 + -6.1030927, + 52.1373337 ], [ - -7.048963894227218, - 53.217077217179636 + -6.8331336, + 52.1463183 ], [ - -7.0915359157115345, - 53.235575105358386 + -6.8355736, + 52.0578908 ], [ - -7.0434707301647235, - 53.25735126035676 + -7.5641506, + 52.0617913 ], [ - -7.05102383075065, - 53.29717703664696 + -7.5661026, + 51.7921593 ], [ - -6.996778835633536, - 53.31112780504489 + -8.147305, + 51.792763 ], [ - -7.044157375672535, - 53.33368557548294 + -8.146329, + 51.7033331 ], [ - -7.105955471375576, - 53.371801590024276 + -8.2912636, + 51.7027283 ], [ - -7.22050647653913, - 53.432465115081854 + -8.2897996, + 51.5227274 ], [ - -7.149441429887032, - 53.45731709817442 + -9.1174397, + 51.516958 ], [ - -7.099891489102085, - 53.463915962572514 + -9.1179277, + 51.4625685 ], [ - -7.0744645458045445, - 53.48370640260363 + -9.3692452, + 51.4616564 ], [ - -7.079028356140001, - 53.504650927752664 - ], + -9.3672933, + 51.4254613 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "Ireland EEA CORINE 2006", + "type": "tms", + "template": "http://a.tile.openstreetmap.ie/tiles/corine/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 5, + 16 + ], + "polygon": [ + [ [ - -7.047733656696876, - 53.515119311359335 + -5.842956, + 53.8627976 ], [ - -7.029478415355053, - 53.54147267392419 + -5.8341575, + 53.7633541 ], [ - -7.054253385747527, - 53.56471202500164 + -5.6267647, + 53.5383692 ], [ - -7.009267255298033, - 53.58561652973758 + -5.9648778, + 52.1631197 ], [ - -6.992641946218873, - 53.602642188744426 + -6.0453211, + 52.0527275 ], [ - -6.989056095241016, - 53.62739453790707 + -6.1823261, + 51.9699475 ], [ - -6.9717788132567895, - 53.63686620586593 + -6.3960035, + 51.9234618 ], [ - -6.9633031654909425, - 53.650973114934644 + -6.5945978, + 51.883911 ], [ - -6.9871001765258205, - 53.66623418009986 + -7.2481994, + 51.9056295 ], [ - -6.999813648174589, - 53.67086935885432 + -7.341212, + 51.8148076 ], [ - -7.008289295940436, - 53.65908728051006 + -8.1971787, + 51.5037019 ], [ - -7.044473792171549, - 53.65367801032349 + -8.3191005, + 51.4167737 ], [ - -7.066640870943764, - 53.63918547390694 + -9.4478202, + 51.1991221 ], [ - -7.101847407817279, - 53.65870092708686 + -9.9015706, + 51.2266802 ], [ - -7.120754622064167, - 53.672993645380515 + -10.472215, + 51.4050139 ], [ - -7.137379931143327, - 53.66893809633893 + -10.8857437, + 51.6770619 ], [ - -7.160850955725672, - 53.683034277255075 + -11.035318, + 52.0620016 ], [ - -7.174216400279507, - 53.686316272406906 + -10.9950963, + 52.1831616 ], [ - -7.196057492599188, - 53.69017711570491 + -10.8178697, + 52.3139827 ], [ - -7.210726882963154, - 53.69480966037566 + -9.8839736, + 52.9032208 ], [ - -7.247237365646801, - 53.71661437518035 + -10.1165049, + 52.9676141 ], [ - -7.239413690786019, - 53.73223735177976 + -10.5514014, + 53.3317027 ], [ - -7.260276823748104, - 53.74361339729716 + -10.6896633, + 53.5854022 ], [ - -7.2814659431627184, - 53.75922634307083 + -10.6444139, + 54.0100436 ], [ - -7.289615604476034, - 53.77271433845693 + -10.5501445, + 54.257482 ], [ - -7.3238441819919515, - 53.78465723043301 + -10.2824192, + 54.4742405 ], [ - -7.337209626545788, - 53.78658318504567 + -9.8073011, + 54.5705346 ], [ - -7.351227044004687, - 53.80141007448381 + -9.196435, + 54.5486695 ], [ - -7.307313219981238, - 53.81625879275365 - ] - ], - [ - [ - -5.685433013282673, - 54.77854496390836 + -9.2253443, + 54.7000264 ], [ - -5.696867084279401, - 54.73050346921268 + -8.8985435, + 55.1363582 ], [ - -5.8223689524230124, - 54.70033215177621 + -8.0476045, + 55.4711977 ], [ - -5.878760568989772, - 54.649492182564074 + -7.4367384, + 55.6191092 ], [ - -5.743404719024681, - 54.68128223623249 + -7.2205471, + 55.6205288 ], [ - -5.581196917402638, - 54.68781619319656 + -6.8258723, + 55.5608644 ], [ - -5.571488953592992, - 54.67074450064368 + -6.0679458, + 55.3727567 ], [ - -5.582915011231644, - 54.66440901595977 + -5.5639184, + 55.0759594 ], [ - -5.58291501123164, - 54.65085746679818 + -5.0649187, + 54.4640142 ], [ - -5.6086481910584185, - 54.63997082553691 + -5.2572284, + 54.1582424 + ] + ] + ], + "terms_url": "http://www.eea.europa.eu/data-and-maps/data/clc-2006-vector-data-version-1", + "terms_text": "EEA Corine 2006" + }, + { + "name": "Ireland EEA GMES Urban Atlas", + "type": "tms", + "template": "http://a.tile.openstreetmap.ie/tiles/urbanatlas/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 5, + 17 + ], + "polygon": [ + [ + [ + -9.2759602, + 52.7993666 ], [ - -5.6354970593650116, - 54.61551371292451 + -9.215509, + 52.8276933 ], [ - -5.728732824433139, - 54.6184944610979 + -9.1086618, + 52.9128016 ], [ - -5.822612969913913, - 54.49193018941315 + -9.0196831, + 52.8837107 ], [ - -5.896754545381575, - 54.44975600798866 + -8.8760649, + 52.8978445 ], [ - -5.936834914186871, - 54.38213187386197 + -8.8001797, + 52.8833558 ], [ - -6.0187561190025445, - 54.36974944197913 + -8.7665597, + 52.9065354 ], [ - -6.059257912638059, - 54.38280030737259 + -8.5938079, + 52.9238592 ], [ - -6.101784280694663, - 54.41510088826871 + -8.5241972, + 52.8869724 ], [ - -6.1740201072375225, - 54.43476829635816 + -8.4956786, + 52.9105906 ], [ - -6.216261364689026, - 54.42827259213158 + -8.3506448, + 52.9238592 ], [ - -6.264329002478664, - 54.487825014814625 + -8.2718204, + 52.9492401 ], [ - -6.249277519938476, - 54.49741303545491 + -8.2249679, + 52.8991338 ], [ - -6.288340515296785, - 54.53143435197413 + -8.1564001, + 52.9149986 ], [ - -6.283750270272458, - 54.54447449434036 + -8.0881237, + 52.7630417 ], [ - -6.321445027854273, - 54.58928767713928 + -8.1360092, + 52.7239783 ], [ - -6.264329002478664, - 54.604982769755765 + -8.1570652, + 52.6766443 ], [ - -6.240052417736423, - 54.59541999854735 + -8.2059695, + 52.6185385 ], [ - -6.098762694536575, - 54.631690374598676 + -8.2025734, + 52.5954396 ], [ - -6.051950538018501, - 54.61314575326238 + -8.2231242, + 52.5599691 ], [ - -6.031509408441251, - 54.620921248201434 + -8.2236294, + 52.5095371 ], [ - -6.002995140908084, - 54.65571636730639 + -8.2976651, + 52.5025088 ], [ - -6.0647754758974335, - 54.6634355452454 + -8.3295888, + 52.4721087 ], [ - -6.059920158948984, - 54.704134188139534 + -8.3589695, + 52.4986072 ], [ - -6.047781866577864, - 54.71395188569398 + -8.3737385, + 52.4764529 ], [ - -6.120611620804591, - 54.801644524994515 + -8.432326, + 52.4342609 ], [ - -6.002141887262449, - 54.80836072138932 + -8.4754569, + 52.4216289 ], [ - -5.984662746248036, - 54.78652900156178 + -8.5017727, + 52.3870011 ], [ - -5.685433013282673, - 54.77854496390836 - ] - ], - [ + -8.5476205, + 52.3681351 + ], [ - -9.128658300749114, - 53.24759266864586 + -8.6444103, + 52.3376422 ], [ - -9.024510568479629, - 53.26744820137083 + -8.6841451, + 52.3660614 ], [ - -9.016360907166316, - 53.26364619217274 + -8.8154099, + 52.3721014 ], [ - -9.001854510028616, - 53.26588844362053 + -8.8614233, + 52.3521652 ], [ - -8.9951717877517, - 53.259258838409615 + -8.9074451, + 52.3824674 ], [ - -8.973493688658284, - 53.262378780650025 + -8.9388551, + 52.3789166 ], [ - -8.95230456924367, - 53.271444820907114 + -8.9782502, + 52.4093811 ], [ - -8.956705386352859, - 53.281580911863244 + -9.0298715, + 52.4104169 ], [ - -8.961106203462048, - 53.28119110665652 + -9.1059449, + 52.420981 ], [ - -8.960780217009516, - 53.28908396911955 + -9.1084962, + 52.4415071 ], [ - -8.954260487958864, - 53.28927883616923 + -9.140702, + 52.4650891 ], [ - -8.95230456924367, - 53.30155366854246 + -9.1315765, + 52.5136207 ], [ - -8.963714095082308, - 53.303793931840495 + -9.1739699, + 52.5620573 ], [ - -8.9811543702928, - 53.294734752711804 + -9.1426235, + 52.589645 ], [ - -8.985718180628256, - 53.30174847871221 + -9.1542382, + 52.610216 ], [ - -9.019946758144176, - 53.30768976199425 + -9.1426231, + 52.6387401 ], [ - -9.00837423907927, - 53.31596722087059 + -9.1776844, + 52.6447573 ], [ - -9.01880580556031, - 53.31625933715475 + -9.2012184, + 52.6526248 ], [ - -9.045862681120513, - 53.31275380979257 + -9.2036198, + 52.6686468 ], [ - -9.06444390891487, - 53.32122500810515 + -9.2238348, + 52.6706578 ], [ - -9.080906224767762, - 53.307397587062724 + -9.2161072, + 52.6919412 ], [ - -9.08106921799403, - 53.303404329274585 + -9.1882395, + 52.7057242 ], [ - -9.09019683866494, - 53.30574189135002 + -9.2750099, + 52.7350292 ], [ - -9.095901601584261, - 53.298826232852214 + -9.2601152, + 52.7616711 + ] + ], + [ + [ + -7.307313219981238, + 53.81625879275365 ], [ - -9.10128037805105, - 53.3008718259498 + -7.245858447032101, + 53.78300449111207 ], [ - -9.115623781962478, - 53.28450433758295 + -7.15144468970801, + 53.81179938127503 ], [ - -9.121491538108067, - 53.2832375443259 + -7.086900011973722, + 53.784424420834 ], [ - -9.13273807072044, - 53.28557621023763 + -7.0347149533800435, + 53.77996162275688 ], [ - -9.144636576237877, - 53.27865728614638 + -6.975320116954343, + 53.788481098127924 ], [ - -9.13876882009229, - 53.26345120822951 + -6.928628222423156, + 53.81443454540607 ], [ - -9.128658300749114, - 53.24759266864586 - ] - ], - [ + -6.992829577403537, + 53.86609081229548 + ], [ - -8.595266214281438, - 51.69264788483154 + -6.975320116954343, + 53.87945028968944 ], [ - -8.55819409885298, - 51.69306638852667 + -6.949914233165313, + 53.87094929783329 ], [ - -8.566697711835303, - 51.682644706464686 + -6.9375546140247035, + 53.87540241385127 ], [ - -8.579130708100188, - 51.67349700898941 + -6.936867968516893, + 53.896649390754646 ], [ - -8.544554623426079, - 51.66520531197343 + -6.897042529063821, + 53.889770599553906 ], [ - -8.494765061495364, - 51.667778759675976 + -6.867516772227924, + 53.880259817835736 ], [ - -8.30113898732036, - 51.7235009029955 + -6.851037280040446, + 53.88450958346468 ], [ - -8.268406960495541, - 51.784858633837544 + -6.842454211192801, + 53.89786317755242 ], [ - -8.154536388302146, - 51.7814362126791 + -6.812928454356904, + 53.90069520963246 ], [ - -8.115350159004825, - 51.809093351533164 + -6.79850889869286, + 53.89280549994937 ], [ - -8.068326683848039, - 51.870050153657075 + -6.789925829845217, + 53.89462633440526 ], [ - -8.10059769621054, - 51.89964422561186 + -6.791985766368652, + 53.904538374710896 ], [ - -8.08123508879304, - 51.918414974037226 + -6.778939501720231, + 53.918087767078354 ], [ - -8.09183842142643, - 51.95337589170907 + -6.77001311011868, + 53.91505470292794 ], [ - -8.124570448251253, - 51.95479649105758 + -6.75868345923979, + 53.921727153244476 ], [ - -8.132407694110718, - 51.970988142592034 + -6.744263903575747, + 53.916065748791254 ], [ - -8.099675667285895, - 51.978371865876596 + -6.727441088634364, + 53.92334455637637 ], [ - -8.144394070131078, - 52.02151390085561 + -6.713021532970319, + 53.90777445003927 ], [ - -8.159607547387685, - 52.064330945363764 + -6.684182421642232, + 53.90292024303218 ], [ - -8.140705954432507, - 52.07254939152303 + -6.623757616954815, + 53.88187882710815 ], [ - -8.165600735397863, - 52.09294727054506 + -6.590455309825955, + 53.857789593974296 ], [ - -8.18726841512697, - 52.0835993998731 + -6.591141955333765, + 53.835509894663346 ], [ - -8.2093971093184, - 52.10512489114057 + -6.574319140392382, + 53.82254170362619 ], [ - -8.207092037006792, - 52.12494181389489 + -6.571572558361136, + 53.804703885117576 ], [ - -8.227837687811258, - 52.143052434929714 + -6.5533764524041285, + 53.79983770791046 ], [ - -8.222766528725723, - 52.16454923557058 + -6.541360156017425, + 53.78300449111207 ], [ - -8.30298304516965, - 52.1829264222872 + -6.511491076427622, + 53.76900546961285 ], [ - -8.427456949996438, - 52.17783811526099 + -6.472695605236269, + 53.77326653566421 ], [ - -8.46710419375608, - 52.169921813849676 + -6.443513171154276, + 53.76393220797015 ], [ - -8.509978538751975, - 52.18405707812542 + -6.44728972144724, + 53.75114486961979 ], [ - -8.530263175094117, - 52.16511480067495 + -6.4775021237909485, + 53.728199094666586 ], [ - -8.574981577939297, - 52.18066502436804 + -6.459649340587848, + 53.71682309412751 ], [ - -8.587889982884295, - 52.16963906274442 + -6.435616747814443, + 53.72230833571077 ], [ - -8.642289689438227, - 52.18829678149147 + -6.4198239011347775, + 53.72921465935537 ], [ - -8.719279104645906, - 52.15804472022032 + -6.4009411496699595, + 53.72169889975152 ], [ - -8.698533453841442, - 52.13541291452849 + -6.375878588634836, + 53.718042098526006 ], [ - -8.740946784375014, - 52.10823956240069 + -6.359055773693453, + 53.708695495259434 ], [ - -8.77460084012448, - 52.05951253229793 + -6.340173022228636, + 53.708085862042424 ], [ - -8.803183736788409, - 52.03768144571248 + -6.329873339611461, + 53.71296268045594 ], [ - -8.86818677597573, - 52.03286015807593 + -6.325753466564592, + 53.72210519137233 ], [ - -8.870491848287335, - 52.01839317543363 + -6.2938244504513525, + 53.72576163932632 ], [ - -8.844214023935015, - 51.991148511559096 + -6.265328661877173, + 53.7363229253304 ], [ - -8.79811257770287, - 51.964455373040394 + -6.240952746349864, + 53.734292114843086 ], [ - -8.782899100446263, - 51.931777239822054 + -6.180871264416349, + 53.632015710147016 ], [ - -8.835915763613228, - 51.9292188160068 + -6.092793818322125, + 53.588038288422446 ], [ - -8.838681850387156, - 51.90277322850554 + -5.985734079608837, + 53.49383447350347 ], [ - -8.802261707863764, - 51.89367006943167 + -6.0887447432153685, + 53.27174268379562 ], [ - -8.792580404155013, - 51.85695425263326 + -6.033272979232964, + 53.1191110041494 ], [ - -8.765841565340368, - 51.82476769939557 + -5.984663357119282, + 52.9651254915577 ], [ - -8.758926348405547, - 51.80054140901511 + -6.122679104189409, + 52.73207538466633 ], [ - -8.79811257770287, - 51.78628456602828 + -6.185163845400262, + 52.73706461957944 ], [ - -8.832227647914657, - 51.79626482935233 + -6.1899703639549415, + 52.76075568810044 ], [ - -8.836837792537873, - 51.77687258059678 + -6.319059719423517, + 52.782357357522855 ], [ - -8.885705325543944, - 51.746055989869106 + -6.393904079774976, + 52.7790347214105 ], [ - -8.859888515653944, - 51.72435763090916 + -6.465315212587381, + 52.6946379192593 ], [ - -8.807332866949299, - 51.71093369500414 + -6.534666408876349, + 52.673409093161446 ], [ - -8.678248817499297, - 51.693505197270746 + -6.612257351259057, + 52.69255711803012 ], [ - -8.60540853245251, - 51.67835695335278 + -6.6692489284074155, + 52.74745702505679 ], [ - -8.595266214281438, - 51.69264788483154 - ] - ], - [ - [ - -7.138279151048154, - 55.06131559970097 + -6.671308864930852, + 52.76948072949997 ], [ - -7.117994514706011, - 54.99631329558348 + -6.720747341493285, + 52.7748810695361 ], [ - -7.070049010624583, - 54.98784996056705 + -6.71456753192298, + 52.80311808637125 ], [ - -7.076503213097081, - 54.93332450204895 + -6.658949245790243, + 52.84709806982182 ], [ - -7.025791622241725, - 54.91159959910791 + -6.582044948915348, + 52.81349473557279 ], [ - -7.007351043748867, - 54.87872502112528 + -6.547712673524768, + 52.83133677935633 ], [ - -7.024869593317081, - 54.8511320998998 + -6.531233181337292, + 52.87404491274922 ], [ - -6.990754523105296, - 54.81661438893913 + -6.617750515321548, + 52.87528820923615 ], [ - -7.051608432131725, - 54.80598761598125 + -6.728987087587023, + 52.90635903963372 ], [ - -7.115228427932084, - 54.80651902101645 + -6.780485500672891, + 52.859122574848655 ], [ - -7.170550163410654, - 54.84847793920564 + -6.870436062196207, + 52.85165948109425 ], [ - -7.199133060074584, - 54.84316909395457 + -6.938413967469552, + 52.86658438536895 ], [ - -7.222183783190655, - 54.85803210052931 + -6.965879787782016, + 52.89766145203082 ], [ - -7.2111194360949415, - 54.862808332627324 + -6.987852444031986, + 52.969260966642985 ], [ - -7.212041465019584, - 54.882438010878076 + -7.039350857117853, + 52.9560260536776 ], [ - -7.279349576518514, - 54.880846771447125 + -7.109388698914634, + 53.007288776633686 ], [ - -7.273817402970655, - 54.91530955931841 + -7.068876613953752, + 53.058078015357786 ], [ - -7.3033223285592275, - 54.915839525718205 + -7.088789333680287, + 53.11869890949892 ], [ - -7.363254208661015, - 54.90894941815292 + -7.119688381531809, + 53.15000684568904 ], [ - -7.385382902852443, - 54.91636948513913 + -7.105955471375577, + 53.16112391039828 ], [ - -7.391837105324943, - 54.93438395336098 + -7.127928127625547, + 53.17223809655703 ], [ - -7.429640291235302, - 54.95291983389722 + -7.180113186219227, + 53.182526443342745 ], [ - -7.420420001988872, - 54.99208185118366 + -7.160887112000503, + 53.19898266621498 ], [ - -7.410277683817801, - 55.03437621938347 + -7.057890285828767, + 53.19898266621498 ], [ - -7.3577220351131585, - 55.057619110599035 + -7.048963894227218, + 53.217077217179636 ], [ - -7.265519142648871, - 55.07557028899173 + -7.0915359157115345, + 53.235575105358386 ], [ - -7.138279151048154, - 55.06131559970097 - ] - ], - [ + -7.0434707301647235, + 53.25735126035676 + ], [ - -7.190498776293322, - 52.26144368927652 + -7.05102383075065, + 53.29717703664696 ], [ - -7.156844720543858, - 52.28443443581867 + -6.996778835633536, + 53.31112780504489 ], [ - -7.132871968503143, - 52.27343421670601 + -7.044157375672535, + 53.33368557548294 ], [ - -7.113278853854483, - 52.26779201951648 + -7.105955471375576, + 53.371801590024276 ], [ - -7.098295883829036, - 52.27230583471742 + -7.22050647653913, + 53.432465115081854 ], [ - -7.089767116276089, - 52.25509445009032 + -7.149441429887032, + 53.45731709817442 ], [ - -7.07109603055207, - 52.259186286149074 + -7.099891489102085, + 53.463915962572514 ], [ - -7.033984366335195, - 52.257352061495865 + -7.0744645458045445, + 53.48370640260363 ], [ - -7.027530163862696, - 52.250720000975015 + -7.079028356140001, + 53.504650927752664 ], [ - -7.034675888028678, - 52.247756419376 + -7.047733656696876, + 53.515119311359335 ], [ - -7.031218279561267, - 52.24013487190721 + -7.029478415355053, + 53.54147267392419 ], [ - -7.034214873566356, - 52.23222966213934 + -7.054253385747527, + 53.56471202500164 ], [ - -7.050580886978767, - 52.2296884028405 + -7.009267255298033, + 53.58561652973758 ], [ - -7.062567262999124, - 52.21980434486687 + -6.992641946218873, + 53.602642188744426 ], [ - -7.076858711331088, - 52.216132562953725 + -6.989056095241016, + 53.62739453790707 ], [ - -7.084926464421715, - 52.22065163604718 + -6.9717788132567895, + 53.63686620586593 ], [ - -7.084465449959392, - 52.22785295843095 + -6.9633031654909425, + 53.650973114934644 ], [ - -7.101292477834124, - 52.221498911062525 + -6.9871001765258205, + 53.66623418009986 ], [ - -7.105211100763858, - 52.21726237433474 + -6.999813648174589, + 53.67086935885432 ], [ - -7.111665303236357, - 52.21796849185403 + -7.008289295940436, + 53.65908728051006 ], [ - -7.107977187537785, - 52.21104805609072 + -7.044473792171549, + 53.65367801032349 ], [ - -7.117773744862115, - 52.20928246619701 + -7.066640870943764, + 53.63918547390694 ], [ - -7.129760120882472, - 52.21690931136535 + -7.101847407817279, + 53.65870092708686 ], [ - -7.14497359813908, - 52.21782726924826 + -7.120754622064167, + 53.672993645380515 ], [ - -7.150505771686938, - 52.22375823207553 + -7.137379931143327, + 53.66893809633893 ], [ - -7.158112510315241, - 52.22262858593765 + -7.160850955725672, + 53.683034277255075 ], [ - -7.158804032008724, - 52.22700580464912 + -7.174216400279507, + 53.686316272406906 ], [ - -7.158573524777563, - 52.23180612902503 + -7.196057492599188, + 53.69017711570491 ], [ - -7.167563306792832, - 52.23985256723076 + -7.210726882963154, + 53.69480966037566 ], [ - -7.16733279956167, - 52.244580933687786 + -7.247237365646801, + 53.71661437518035 ], [ - -7.172519212262786, - 52.24676851484933 + -7.239413690786019, + 53.73223735177976 ], [ - -7.177590371348324, - 52.25114335361416 + -7.260276823748104, + 53.74361339729716 ], [ - -7.190498776293322, - 52.26144368927652 - ] - ] - ], - "terms_url": "http://www.eea.europa.eu/data-and-maps/data/urban-atlas", - "terms_text": "EEA GMES Urban Atlas" - }, - { - "name": "Kanton Aargau 25cm (AGIS 2011)", - "type": "tms", - "template": "http://tiles.poole.ch/AGIS/OF2011/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 14, - 19 - ], - "polygon": [ - [ + -7.2814659431627184, + 53.75922634307083 + ], [ - 7.7, - 47.12 + -7.289615604476034, + 53.77271433845693 ], [ - 7.7, - 47.63 + -7.3238441819919515, + 53.78465723043301 ], [ - 8.5, - 47.63 + -7.337209626545788, + 53.78658318504567 ], [ - 8.5, - 47.12 + -7.351227044004687, + 53.80141007448381 ], [ - 7.7, - 47.12 + -7.307313219981238, + 53.81625879275365 ] - ] - ], - "terms_text": "AGIS OF2011" - }, - { - "name": "Katastrálna mapa Slovenska (KaPor, 2010-04)", - "type": "tms", - "template": "http://www.freemap.sk/tms/kapor2/{zoom}/{x}/{y}.jpg", - "polygon": [ + ], [ [ - 19.83682, - 49.25529 + -5.685433013282673, + 54.77854496390836 ], [ - 19.80075, - 49.42385 + -5.696867084279401, + 54.73050346921268 ], [ - 19.60437, - 49.48058 + -5.8223689524230124, + 54.70033215177621 ], [ - 19.49179, - 49.63961 + -5.878760568989772, + 54.649492182564074 ], [ - 19.21831, - 49.52604 + -5.743404719024681, + 54.68128223623249 ], [ - 19.16778, - 49.42521 + -5.581196917402638, + 54.68781619319656 ], [ - 19.00308, - 49.42236 + -5.571488953592992, + 54.67074450064368 ], [ - 18.97611, - 49.5308 + -5.582915011231644, + 54.66440901595977 ], [ - 18.54685, - 49.51425 + -5.58291501123164, + 54.65085746679818 ], [ - 18.31432, - 49.33818 + -5.6086481910584185, + 54.63997082553691 ], [ - 18.15913, - 49.2961 + -5.6354970593650116, + 54.61551371292451 ], [ - 18.05564, - 49.11134 + -5.728732824433139, + 54.6184944610979 ], [ - 17.56396, - 48.84938 + -5.822612969913913, + 54.49193018941315 ], [ - 17.17929, - 48.88816 + -5.896754545381575, + 54.44975600798866 ], [ - 17.058, - 48.81105 + -5.936834914186871, + 54.38213187386197 ], [ - 16.90426, - 48.61947 + -6.0187561190025445, + 54.36974944197913 ], [ - 16.79685, - 48.38561 + -6.059257912638059, + 54.38280030737259 ], [ - 17.06762, - 48.01116 + -6.101784280694663, + 54.41510088826871 ], [ - 17.32787, - 47.97749 + -6.1740201072375225, + 54.43476829635816 ], [ - 17.51699, - 47.82535 + -6.216261364689026, + 54.42827259213158 ], [ - 17.74776, - 47.73093 + -6.264329002478664, + 54.487825014814625 ], [ - 18.29515, - 47.72075 + -6.249277519938476, + 54.49741303545491 ], [ - 18.67959, - 47.75541 + -6.288340515296785, + 54.53143435197413 ], [ - 18.89755, - 47.81203 + -6.283750270272458, + 54.54447449434036 ], [ - 18.79463, - 47.88245 + -6.321445027854273, + 54.58928767713928 ], [ - 18.84318, - 48.04046 + -6.264329002478664, + 54.604982769755765 ], [ - 19.46212, - 48.05333 + -6.240052417736423, + 54.59541999854735 ], [ - 19.62064, - 48.22938 + -6.098762694536575, + 54.631690374598676 ], [ - 19.89585, - 48.09387 + -6.051950538018501, + 54.61314575326238 ], [ - 20.33766, - 48.2643 + -6.031509408441251, + 54.620921248201434 ], [ - 20.55395, - 48.52358 + -6.002995140908084, + 54.65571636730639 ], [ - 20.82335, - 48.55714 + -6.0647754758974335, + 54.6634355452454 ], [ - 21.10271, - 48.47096 + -6.059920158948984, + 54.704134188139534 ], [ - 21.45863, - 48.55513 + -6.047781866577864, + 54.71395188569398 ], [ - 21.74536, - 48.31435 + -6.120611620804591, + 54.801644524994515 ], [ - 22.15293, - 48.37179 + -6.002141887262449, + 54.80836072138932 ], [ - 22.61255, - 49.08914 + -5.984662746248036, + 54.78652900156178 ], [ - 22.09997, - 49.23814 - ], + -5.685433013282673, + 54.77854496390836 + ] + ], + [ [ - 21.9686, - 49.36363 + -9.128658300749114, + 53.24759266864586 ], [ - 21.6244, - 49.46989 + -9.024510568479629, + 53.26744820137083 ], [ - 21.06873, - 49.46402 + -9.016360907166316, + 53.26364619217274 ], [ - 20.94336, - 49.31088 + -9.001854510028616, + 53.26588844362053 ], [ - 20.73052, - 49.44006 + -8.9951717877517, + 53.259258838409615 ], [ - 20.22804, - 49.41714 + -8.973493688658284, + 53.262378780650025 ], [ - 20.05234, - 49.23052 + -8.95230456924367, + 53.271444820907114 ], [ - 19.83682, - 49.25529 - ] - ] - ], - "terms_url": "http://wiki.freemap.sk/KatasterPortal", - "terms_text": "Permisssion by UGKK" - }, - { - "name": "Katastrálna mapa Slovenska (KaPor, 2011-05)", - "type": "tms", - "template": "http://www.freemap.sk/tms/kapor2_201105/{zoom}/{x}/{y}.jpg", - "polygon": [ - [ - [ - 19.83682, - 49.25529 + -8.956705386352859, + 53.281580911863244 ], [ - 19.80075, - 49.42385 + -8.961106203462048, + 53.28119110665652 ], [ - 19.60437, - 49.48058 + -8.960780217009516, + 53.28908396911955 ], [ - 19.49179, - 49.63961 + -8.954260487958864, + 53.28927883616923 ], [ - 19.21831, - 49.52604 + -8.95230456924367, + 53.30155366854246 ], [ - 19.16778, - 49.42521 + -8.963714095082308, + 53.303793931840495 ], [ - 19.00308, - 49.42236 + -8.9811543702928, + 53.294734752711804 ], [ - 18.97611, - 49.5308 + -8.985718180628256, + 53.30174847871221 ], [ - 18.54685, - 49.51425 + -9.019946758144176, + 53.30768976199425 ], [ - 18.31432, - 49.33818 + -9.00837423907927, + 53.31596722087059 ], [ - 18.15913, - 49.2961 + -9.01880580556031, + 53.31625933715475 ], [ - 18.05564, - 49.11134 + -9.045862681120513, + 53.31275380979257 ], [ - 17.56396, - 48.84938 + -9.06444390891487, + 53.32122500810515 ], [ - 17.17929, - 48.88816 + -9.080906224767762, + 53.307397587062724 ], [ - 17.058, - 48.81105 + -9.08106921799403, + 53.303404329274585 ], [ - 16.90426, - 48.61947 + -9.09019683866494, + 53.30574189135002 ], [ - 16.79685, - 48.38561 + -9.095901601584261, + 53.298826232852214 ], [ - 17.06762, - 48.01116 + -9.10128037805105, + 53.3008718259498 ], [ - 17.32787, - 47.97749 + -9.115623781962478, + 53.28450433758295 ], [ - 17.51699, - 47.82535 + -9.121491538108067, + 53.2832375443259 ], [ - 17.74776, - 47.73093 + -9.13273807072044, + 53.28557621023763 ], [ - 18.29515, - 47.72075 + -9.144636576237877, + 53.27865728614638 ], [ - 18.67959, - 47.75541 + -9.13876882009229, + 53.26345120822951 ], [ - 18.89755, - 47.81203 - ], + -9.128658300749114, + 53.24759266864586 + ] + ], + [ [ - 18.79463, - 47.88245 + -8.595266214281438, + 51.69264788483154 ], [ - 18.84318, - 48.04046 + -8.55819409885298, + 51.69306638852667 ], [ - 19.46212, - 48.05333 + -8.566697711835303, + 51.682644706464686 ], [ - 19.62064, - 48.22938 + -8.579130708100188, + 51.67349700898941 ], [ - 19.89585, - 48.09387 + -8.544554623426079, + 51.66520531197343 ], [ - 20.33766, - 48.2643 + -8.494765061495364, + 51.667778759675976 ], [ - 20.55395, - 48.52358 + -8.30113898732036, + 51.7235009029955 ], [ - 20.82335, - 48.55714 + -8.268406960495541, + 51.784858633837544 ], [ - 21.10271, - 48.47096 + -8.154536388302146, + 51.7814362126791 ], [ - 21.45863, - 48.55513 + -8.115350159004825, + 51.809093351533164 ], [ - 21.74536, - 48.31435 + -8.068326683848039, + 51.870050153657075 ], [ - 22.15293, - 48.37179 + -8.10059769621054, + 51.89964422561186 ], [ - 22.61255, - 49.08914 + -8.08123508879304, + 51.918414974037226 ], [ - 22.09997, - 49.23814 + -8.09183842142643, + 51.95337589170907 ], [ - 21.9686, - 49.36363 + -8.124570448251253, + 51.95479649105758 ], [ - 21.6244, - 49.46989 + -8.132407694110718, + 51.970988142592034 ], [ - 21.06873, - 49.46402 + -8.099675667285895, + 51.978371865876596 ], [ - 20.94336, - 49.31088 + -8.144394070131078, + 52.02151390085561 ], [ - 20.73052, - 49.44006 + -8.159607547387685, + 52.064330945363764 ], [ - 20.22804, - 49.41714 + -8.140705954432507, + 52.07254939152303 ], [ - 20.05234, - 49.23052 + -8.165600735397863, + 52.09294727054506 ], [ - 19.83682, - 49.25529 - ] - ] - ], - "terms_url": "http://wiki.freemap.sk/KatasterPortal", - "terms_text": "Permisssion by UGKK" - }, - { - "name": "Lithuania - ORT10LT", - "type": "tms", - "template": "http://mapproxy.openmap.lt/ort10lt/g/{z}/{x}/{y}.jpeg", - "scaleExtent": [ - 4, - 18 - ], - "polygon": [ - [ - [ - 21, - 53.88 + -8.18726841512697, + 52.0835993998731 ], [ - 21, - 56.45 + -8.2093971093184, + 52.10512489114057 ], [ - 26.85, - 56.45 + -8.207092037006792, + 52.12494181389489 ], [ - 26.85, - 53.88 + -8.227837687811258, + 52.143052434929714 ], [ - 21, - 53.88 - ] - ] - ] - }, - { - "name": "Locator Overlay", - "type": "tms", - "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-btyhiati/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 0, - 16 - ], - "terms_url": "http://www.mapbox.com/about/maps/", - "terms_text": "Terms & Feedback", - "default": true, - "overlay": true - }, - { - "name": "MapBox Satellite", - "type": "tms", - "description": "Satellite and aerial imagery.", - "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-4wvf9l0l/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 0, - 16 - ], - "terms_url": "http://www.mapbox.com/about/maps/", - "terms_text": "Terms & Feedback", - "default": true - }, - { - "name": "MapQuest Open Aerial", - "type": "tms", - "template": "http://oatile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/sat/{zoom}/{x}/{y}.png", - "default": true - }, - { - "name": "NLS - OS 1-inch 7th Series 1955-61", - "type": "tms", - "template": "http://geo.nls.uk/mapdata2/os/seventh/{zoom}/{x}/{-y}.png", - "scaleExtent": [ - 5, - 16 - ], - "polygon": [ - [ - [ - -6.4585407, - 49.9044128 + -8.222766528725723, + 52.16454923557058 ], [ - -6.3872009, - 49.9841116 + -8.30298304516965, + 52.1829264222872 ], [ - -6.2296827, - 49.9896159 + -8.427456949996438, + 52.17783811526099 ], [ - -6.2171269, - 49.8680087 + -8.46710419375608, + 52.169921813849676 ], [ - -6.4551164, - 49.8591793 - ] - ], - [ - [ - -1.4495137, - 60.8634056 + -8.509978538751975, + 52.18405707812542 ], [ - -0.7167114, - 60.8545122 + -8.530263175094117, + 52.16511480067495 ], [ - -0.7349744, - 60.4359756 + -8.574981577939297, + 52.18066502436804 ], [ - -0.6938826, - 60.4168218 + -8.587889982884295, + 52.16963906274442 ], [ - -0.7258429, - 60.3942735 + -8.642289689438227, + 52.18829678149147 ], [ - -0.7395401, - 60.0484714 + -8.719279104645906, + 52.15804472022032 ], [ - -0.9267357, - 60.0461918 + -8.698533453841442, + 52.13541291452849 ], [ - -0.9381501, - 59.8266157 + -8.740946784375014, + 52.10823956240069 ], [ - -1.4586452, - 59.831205 + -8.77460084012448, + 52.05951253229793 ], [ - -1.4455187, - 60.0535999 + -8.803183736788409, + 52.03768144571248 ], [ - -1.463211, - 60.0535999 + -8.86818677597573, + 52.03286015807593 ], [ - -1.4643524, - 60.0630002 + -8.870491848287335, + 52.01839317543363 ], [ - -1.5716475, - 60.0638546 + -8.844214023935015, + 51.991148511559096 ], [ - -1.5693646, - 60.1790005 + -8.79811257770287, + 51.964455373040394 ], [ - -1.643558, - 60.1807033 + -8.782899100446263, + 51.931777239822054 ], [ - -1.643558, - 60.1892162 + -8.835915763613228, + 51.9292188160068 ], [ - -1.8216221, - 60.1894999 + -8.838681850387156, + 51.90277322850554 ], [ - -1.8204807, - 60.3615507 + -8.802261707863764, + 51.89367006943167 ], [ - -1.8415973, - 60.3697345 + -8.792580404155013, + 51.85695425263326 ], [ - -1.8216221, - 60.3832755 + -8.765841565340368, + 51.82476769939557 ], [ - -1.8179852, - 60.5934321 + -8.758926348405547, + 51.80054140901511 ], [ - -1.453168, - 60.5934321 - ] - ], - [ + -8.79811257770287, + 51.78628456602828 + ], [ - -4.9089213, - 54.4242078 + -8.832227647914657, + 51.79626482935233 ], [ - -4.282598, - 54.4429861 + -8.836837792537873, + 51.77687258059678 ], [ - -4.2535417, - 54.029769 + -8.885705325543944, + 51.746055989869106 ], [ - -4.8766366, - 54.0221831 - ] - ], - [ + -8.859888515653944, + 51.72435763090916 + ], [ - -5.8667408, - 59.1444603 + -8.807332866949299, + 51.71093369500414 ], [ - -5.7759966, - 59.1470945 + -8.678248817499297, + 51.693505197270746 ], [ - -5.7720016, - 59.1014052 + -8.60540853245251, + 51.67835695335278 ], [ - -5.8621751, - 59.0990605 + -8.595266214281438, + 51.69264788483154 ] ], [ [ - -1.7065887, - 59.5703599 + -7.138279151048154, + 55.06131559970097 ], [ - -1.5579165, - 59.5693481 + -7.117994514706011, + 54.99631329558348 ], [ - -1.5564897, - 59.4965695 + -7.070049010624583, + 54.98784996056705 ], [ - -1.7054472, - 59.4975834 - ] - ], - [ - [ - -7.6865827, - 58.2940975 + -7.076503213097081, + 54.93332450204895 ], [ - -7.5330594, - 58.3006957 + -7.025791622241725, + 54.91159959910791 ], [ - -7.5256401, - 58.2646905 + -7.007351043748867, + 54.87872502112528 ], [ - -7.6797341, - 58.2577853 - ] - ], - [ - [ - -4.5338281, - 59.0359871 + -7.024869593317081, + 54.8511320998998 ], [ - -4.481322, - 59.0371616 + -6.990754523105296, + 54.81661438893913 ], [ - -4.4796099, - 59.0186583 + -7.051608432131725, + 54.80598761598125 ], [ - -4.5332574, - 59.0180707 - ] - ], - [ - [ - -8.6710698, - 57.8769896 + -7.115228427932084, + 54.80651902101645 ], [ - -8.4673234, - 57.8897332 + -7.170550163410654, + 54.84847793920564 ], [ - -8.4467775, - 57.7907 + -7.199133060074584, + 54.84316909395457 ], [ - -8.6510947, - 57.7779213 - ] - ], - [ + -7.222183783190655, + 54.85803210052931 + ], [ - -5.2395519, - 50.3530581 + -7.2111194360949415, + 54.862808332627324 ], [ - -5.7920073, - 50.3384899 + -7.212041465019584, + 54.882438010878076 ], [ - -5.760047, - 49.9317027 + -7.279349576518514, + 54.880846771447125 ], [ - -4.6551363, - 49.9581461 + -7.273817402970655, + 54.91530955931841 ], [ - -4.677965, - 50.2860073 + -7.3033223285592275, + 54.915839525718205 ], [ - -4.244219, - 50.2801723 + -7.363254208661015, + 54.90894941815292 ], [ - -4.2487848, - 50.2042525 + -7.385382902852443, + 54.91636948513913 ], [ - -3.3812929, - 50.2042525 + -7.391837105324943, + 54.93438395336098 ], [ - -3.4223846, - 50.5188201 + -7.429640291235302, + 54.95291983389722 ], [ - -3.1164796, - 50.5246258 + -7.420420001988872, + 54.99208185118366 ], [ - -3.1210453, - 50.6579592 + -7.410277683817801, + 55.03437621938347 ], [ - -2.6736357, - 50.6619495 + -7.3577220351131585, + 55.057619110599035 ], [ - -2.5953453, - 50.6394325 + -7.265519142648871, + 55.07557028899173 ], [ - -2.5905026, - 50.5728419 - ], + -7.138279151048154, + 55.06131559970097 + ] + ], + [ [ - -2.4791203, - 50.5733545 + -7.190498776293322, + 52.26144368927652 ], [ - -2.4758919, - 50.5066704 + -7.156844720543858, + 52.28443443581867 ], [ - -2.3967943, - 50.5056438 + -7.132871968503143, + 52.27343421670601 ], [ - -2.401637, - 50.5723293 + -7.113278853854483, + 52.26779201951648 ], [ - -1.0400296, - 50.5718167 + -7.098295883829036, + 52.27230583471742 ], [ - -1.0335726, - 50.7059289 + -7.089767116276089, + 52.25509445009032 ], [ - -0.549302, - 50.7038843 + -7.07109603055207, + 52.259186286149074 ], [ - -0.5460736, - 50.7886618 + -7.033984366335195, + 52.257352061495865 ], [ - -0.0924734, - 50.7856002 + -7.027530163862696, + 52.250720000975015 ], [ - -0.0876307, - 50.7181949 + -7.034675888028678, + 52.247756419376 ], [ - 0.4789659, - 50.7120623 + -7.031218279561267, + 52.24013487190721 ], [ - 0.487037, - 50.8182467 + -7.034214873566356, + 52.23222966213934 ], [ - 0.9761503, - 50.8049868 + -7.050580886978767, + 52.2296884028405 ], [ - 0.9922927, - 51.0126311 + -7.062567262999124, + 52.21980434486687 ], [ - 1.4491213, - 51.0004424 + -7.076858711331088, + 52.216132562953725 ], [ - 1.4781775, - 51.4090372 + -7.084926464421715, + 52.22065163604718 ], [ - 1.0229632, - 51.4271576 + -7.084465449959392, + 52.22785295843095 ], [ - 1.035877, - 51.7640881 + -7.101292477834124, + 52.221498911062525 ], [ - 1.6105448, - 51.7500992 + -7.105211100763858, + 52.21726237433474 ], [ - 1.646058, - 52.1560003 + -7.111665303236357, + 52.21796849185403 ], [ - 1.7267698, - 52.1540195 + -7.107977187537785, + 52.21104805609072 ], [ - 1.749369, - 52.4481811 + -7.117773744862115, + 52.20928246619701 ], [ - 1.7870672, - 52.4811624 + -7.129760120882472, + 52.21690931136535 ], [ - 1.759102, - 52.522505 + -7.14497359813908, + 52.21782726924826 ], [ - 1.7933451, - 52.9602749 + -7.150505771686938, + 52.22375823207553 ], [ - 0.3798147, - 52.9958468 + -7.158112510315241, + 52.22262858593765 ], [ - 0.3895238, - 53.2511239 + -7.158804032008724, + 52.22700580464912 ], [ - 0.3478614, - 53.2511239 + -7.158573524777563, + 52.23180612902503 ], [ - 0.3238912, - 53.282186 + -7.167563306792832, + 52.23985256723076 ], [ - 0.3461492, - 53.6538501 + -7.16733279956167, + 52.244580933687786 ], [ - 0.128487, - 53.6575466 + -7.172519212262786, + 52.24676851484933 ], [ - 0.116582, - 53.6674703 + -7.177590371348324, + 52.25114335361416 ], [ - 0.1350586, - 54.0655731 - ], + -7.190498776293322, + 52.26144368927652 + ] + ] + ], + "terms_url": "http://www.eea.europa.eu/data-and-maps/data/urban-atlas", + "terms_text": "EEA GMES Urban Atlas" + }, + { + "name": "Kanton Aargau 25cm (AGIS 2011)", + "type": "tms", + "template": "http://tiles.poole.ch/AGIS/OF2011/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 14, + 19 + ], + "polygon": [ + [ [ - -0.0609831, - 54.065908 + 7.7, + 47.12 ], [ - -0.0414249, - 54.4709448 + 7.7, + 47.63 ], [ - -0.5662701, - 54.4771794 + 8.5, + 47.63 ], [ - -0.5592078, - 54.6565127 + 8.5, + 47.12 ], [ - -1.1665638, - 54.6623485 - ], + 7.7, + 47.12 + ] + ] + ], + "terms_text": "AGIS OF2011" + }, + { + "name": "Katastrálna mapa Slovenska (KaPor, 2010-04)", + "type": "tms", + "template": "http://www.freemap.sk/tms/kapor2/{zoom}/{x}/{y}.jpg", + "polygon": [ + [ [ - -1.1637389, - 54.842611 + 19.83682, + 49.25529 ], [ - -1.3316194, - 54.843909 + 19.80075, + 49.42385 ], [ - -1.3257065, - 55.2470842 + 19.60437, + 49.48058 ], [ - -1.529453, - 55.2487108 + 19.49179, + 49.63961 ], [ - -1.524178, - 55.6540122 + 19.21831, + 49.52604 ], [ - -1.7638798, - 55.6540122 + 19.16778, + 49.42521 ], [ - -1.7733693, - 55.9719116 + 19.00308, + 49.42236 ], [ - -2.1607858, - 55.9682981 + 18.97611, + 49.5308 ], [ - -2.1543289, - 56.0621387 + 18.54685, + 49.51425 ], [ - -2.4578051, - 56.0585337 + 18.31432, + 49.33818 ], [ - -2.4190635, - 56.641717 + 18.15913, + 49.2961 ], [ - -2.0962164, - 56.641717 + 18.05564, + 49.11134 ], [ - -2.0833025, - 57.0021322 + 17.56396, + 48.84938 ], [ - -1.9283359, - 57.0126802 + 17.17929, + 48.88816 ], [ - -1.9180966, - 57.3590895 + 17.058, + 48.81105 ], [ - -1.7502161, - 57.3625721 + 16.90426, + 48.61947 ], [ - -1.7695869, - 57.7608634 + 16.79685, + 48.38561 ], [ - -3.6937554, - 57.7574187 + 17.06762, + 48.01116 ], [ - -3.7066693, - 57.9806386 + 17.32787, + 47.97749 ], [ - -3.5969013, - 57.9772149 + 17.51699, + 47.82535 ], [ - -3.6033582, - 58.1207277 + 17.74776, + 47.73093 ], [ - -3.0222335, - 58.1309566 + 18.29515, + 47.72075 ], [ - -3.0286905, - 58.5410788 + 18.67959, + 47.75541 ], [ - -2.8478961, - 58.530968 + 18.89755, + 47.81203 ], [ - -2.86081, - 58.8430508 + 18.79463, + 47.88245 ], [ - -2.679624, - 58.8414991 + 18.84318, + 48.04046 ], [ - -2.6841897, - 58.885175 + 19.46212, + 48.05333 ], [ - -2.6339665, - 58.9052239 + 19.62064, + 48.22938 ], [ - -2.679624, - 58.9335083 + 19.89585, + 48.09387 ], [ - -2.6887555, - 59.0229231 + 20.33766, + 48.2643 ], [ - -2.3668703, - 59.0229231 + 20.55395, + 48.52358 ], [ - -2.3702946, - 59.2652861 + 20.82335, + 48.55714 ], [ - -2.3429001, - 59.2821989 + 21.10271, + 48.47096 ], [ - -2.3714361, - 59.2996861 + 21.45863, + 48.55513 ], [ - -2.3737189, - 59.3707083 + 21.74536, + 48.31435 ], [ - -2.3429001, - 59.385825 + 22.15293, + 48.37179 ], [ - -2.3725775, - 59.400354 + 22.61255, + 49.08914 ], [ - -2.3714361, - 59.4259098 + 22.09997, + 49.23814 ], [ - -3.0734196, - 59.4230067 + 21.9686, + 49.36363 ], [ - -3.0711368, - 59.3433649 + 21.6244, + 49.46989 ], [ - -3.103097, - 59.3311405 + 21.06873, + 49.46402 ], [ - -3.0745611, - 59.3136695 + 20.94336, + 49.31088 ], [ - -3.0722782, - 59.232603 + 20.73052, + 49.44006 ], [ - -3.3850319, - 59.1484167 + 20.22804, + 49.41714 ], [ - -3.3747589, - 58.9352753 + 20.05234, + 49.23052 ], [ - -3.5653789, - 58.9323303 + 19.83682, + 49.25529 + ] + ] + ], + "terms_url": "http://wiki.freemap.sk/KatasterPortal", + "terms_text": "Permisssion by UGKK" + }, + { + "name": "Katastrálna mapa Slovenska (KaPor, 2011-05)", + "type": "tms", + "template": "http://www.freemap.sk/tms/kapor2_201105/{zoom}/{x}/{y}.jpg", + "polygon": [ + [ + [ + 19.83682, + 49.25529 ], [ - -3.554829, - 58.69759 + 19.80075, + 49.42385 ], [ - -5.2808579, - 58.6667732 + 19.60437, + 49.48058 ], [ - -5.2534159, - 58.3514125 + 19.49179, + 49.63961 ], [ - -5.5068508, - 58.3437887 + 19.21831, + 49.52604 ], [ - -5.4761804, - 58.0323557 + 19.16778, + 49.42521 ], [ - -5.8974958, - 58.0212436 + 19.00308, + 49.42236 ], [ - -5.8522972, - 57.6171758 + 18.97611, + 49.5308 ], [ - -6.1396311, - 57.6137174 + 18.54685, + 49.51425 ], [ - -6.1541592, - 57.7423183 + 18.31432, + 49.33818 ], [ - -6.2913692, - 57.7380102 + 18.15913, + 49.2961 ], [ - -6.3365678, - 58.1398784 + 18.05564, + 49.11134 ], [ - -6.1121891, - 58.1466944 + 17.56396, + 48.84938 ], [ - -6.1473778, - 58.5106285 + 17.17929, + 48.88816 ], [ - -6.2934817, - 58.5416182 + 17.058, + 48.81105 ], [ - -6.8413713, - 58.2977321 + 16.90426, + 48.61947 ], [ - -7.0057382, - 58.2929331 + 16.79685, + 48.38561 ], [ - -7.1016189, - 58.2064403 + 17.06762, + 48.01116 ], [ - -7.2573132, - 58.1793148 + 17.32787, + 47.97749 ], [ - -7.2531092, - 58.1004928 + 17.51699, + 47.82535 ], [ - -7.4070698, - 58.0905566 + 17.74776, + 47.73093 ], [ - -7.391347, - 57.7911354 + 18.29515, + 47.72075 ], [ - -7.790991, - 57.7733151 + 18.67959, + 47.75541 ], [ - -7.7624215, - 57.5444165 + 18.89755, + 47.81203 ], [ - -7.698501, - 57.1453194 + 18.79463, + 47.88245 ], [ - -7.7943817, - 57.1304547 + 18.84318, + 48.04046 ], [ - -7.716764, - 56.7368628 + 19.46212, + 48.05333 ], [ - -7.0122067, - 56.7654359 + 19.62064, + 48.22938 ], [ - -6.979922, - 56.5453858 + 19.89585, + 48.09387 ], [ - -7.0638622, - 56.5453858 + 20.33766, + 48.2643 ], [ - -7.0444914, - 56.3562587 + 20.55395, + 48.52358 ], [ - -6.500676, - 56.3812917 + 20.82335, + 48.55714 ], [ - -6.4491433, - 55.9793649 + 21.10271, + 48.47096 ], [ - -6.563287, - 55.9691456 + 21.45863, + 48.55513 ], [ - -6.5393742, - 55.7030135 + 21.74536, + 48.31435 ], [ - -6.5595521, - 55.6907321 + 22.15293, + 48.37179 ], [ - -6.5345315, - 55.6761713 + 22.61255, + 49.08914 ], [ - -6.5216176, - 55.5704434 + 22.09997, + 49.23814 ], [ - -5.8912587, - 55.5923416 + 21.9686, + 49.36363 ], [ - -5.8560127, - 55.2320733 + 21.6244, + 49.46989 ], [ - -5.2293639, - 55.2515958 + 21.06873, + 49.46402 ], [ - -5.1837064, - 54.6254139 + 20.94336, + 49.31088 ], [ - -3.6655956, - 54.6518373 + 20.73052, + 49.44006 ], [ - -3.6496155, - 54.4320023 + 20.22804, + 49.41714 ], [ - -3.5400375, - 54.4306744 + 20.05234, + 49.23052 ], [ - -3.530906, - 54.0290181 - ], + 19.83682, + 49.25529 + ] + ] + ], + "terms_url": "http://wiki.freemap.sk/KatasterPortal", + "terms_text": "Permisssion by UGKK" + }, + { + "name": "Lithuania - ORT10LT", + "type": "tms", + "template": "http://mapproxy.openmap.lt/ort10lt/g/{z}/{x}/{y}.jpeg", + "scaleExtent": [ + 4, + 18 + ], + "polygon": [ + [ [ - -3.0697656, - 54.030359 + 21, + 53.88 ], [ - -3.0675737, - 53.8221388 + 21, + 56.45 ], [ - -3.0804876, - 53.7739911 + 26.85, + 56.45 ], [ - -3.0619239, - 53.7477488 + 26.85, + 53.88 ], [ - -3.0611168, - 53.6737049 - ], + 21, + 53.88 + ] + ] + ] + }, + { + "name": "Locator Overlay", + "type": "tms", + "description": "Shows major features to help orient you.", + "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-btyhiati/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 16 + ], + "terms_url": "http://www.mapbox.com/about/maps/", + "terms_text": "Terms & Feedback", + "default": true, + "overlay": true + }, + { + "name": "MapBox Satellite", + "type": "tms", + "description": "Satellite and aerial imagery.", + "template": "http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-4wvf9l0l/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 16 + ], + "terms_url": "http://www.mapbox.com/about/maps/", + "terms_text": "Terms & Feedback", + "default": true + }, + { + "name": "MapQuest Open Aerial", + "type": "tms", + "template": "http://oatile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/sat/{zoom}/{x}/{y}.png", + "default": true + }, + { + "name": "NLS - Bartholomew Half Inch, 1897-1907", + "type": "tms", + "template": "http://geo.nls.uk/mapdata2/bartholomew/great_britain/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 0, + 15 + ], + "polygon": [ + [ [ - -3.2144691, - 53.6708361 + -9, + 49.8 ], [ - -3.2057699, - 53.4226163 + -9, + 61.1 ], [ - -3.2799632, - 53.355224 + 1.9, + 61.1 ], [ - -3.2896655, - 53.3608441 + 1.9, + 49.8 ], [ - -3.3327547, - 53.364931 - ], + -9, + 49.8 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "NLS - OS 1-inch 7th Series 1955-61", + "type": "tms", + "template": "http://geo.nls.uk/mapdata2/os/seventh/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 5, + 16 + ], + "polygon": [ + [ [ - -3.3761293, - 53.3540318 + -6.4585407, + 49.9044128 ], [ - -4.0888976, - 53.3433102 + -6.3872009, + 49.9841116 ], [ - -4.0945474, - 53.4612036 + -6.2296827, + 49.9896159 ], [ - -4.697412, - 53.4448624 + -6.2171269, + 49.8680087 ], [ - -4.6882805, - 53.3318598 - ], + -6.4551164, + 49.8591793 + ] + ], + [ [ - -4.7202407, - 53.2895771 + -1.4495137, + 60.8634056 ], [ - -4.6837148, - 53.2486184 + -0.7167114, + 60.8545122 ], [ - -4.6768661, - 53.1542644 + -0.7349744, + 60.4359756 ], [ - -4.8480816, - 53.1446807 + -0.6938826, + 60.4168218 ], [ - -4.8178336, - 52.7440299 + -0.7258429, + 60.3942735 ], [ - -4.2545751, - 52.7558939 + -0.7395401, + 60.0484714 ], [ - -4.228876, - 52.254876 + -0.9267357, + 60.0461918 ], [ - -4.2607571, - 52.2536408 + -0.9381501, + 59.8266157 ], [ - -4.2724603, - 52.2432637 + -1.4586452, + 59.831205 ], [ - -4.8136263, - 52.230095 + -1.4455187, + 60.0535999 ], [ - -4.8079191, - 52.1138892 + -1.463211, + 60.0535999 ], [ - -5.3889104, - 52.0991668 + -1.4643524, + 60.0630002 ], [ - -5.3717888, - 51.9129667 + -1.5716475, + 60.0638546 ], [ - -5.4208706, - 51.9101502 + -1.5693646, + 60.1790005 ], [ - -5.414022, - 51.8453218 + -1.643558, + 60.1807033 ], [ - -5.3683645, - 51.8474373 + -1.643558, + 60.1892162 ], [ - -5.3466772, - 51.5595332 + -1.8216221, + 60.1894999 ], [ - -4.773676, - 51.5758518 + -1.8204807, + 60.3615507 ], [ - -4.7656859, - 51.4885146 + -1.8415973, + 60.3697345 ], [ - -4.1915432, - 51.4970427 + -1.8216221, + 60.3832755 ], [ - -4.1869775, - 51.4344663 + -1.8179852, + 60.5934321 ], [ - -3.6151177, - 51.4444274 - ], + -1.453168, + 60.5934321 + ] + ], + [ [ - -3.6105519, - 51.3746543 + -4.9089213, + 54.4242078 ], [ - -3.1494115, - 51.3789292 + -4.282598, + 54.4429861 ], [ - -3.1494115, - 51.2919281 + -4.2535417, + 54.029769 ], [ - -4.3038735, - 51.2745907 - ], + -4.8766366, + 54.0221831 + ] + ], + [ [ - -4.2861169, - 51.0508721 + -5.8667408, + 59.1444603 ], [ - -4.8543277, - 51.0366633 + -5.7759966, + 59.1470945 ], [ - -4.8372201, - 50.7212787 + -5.7720016, + 59.1014052 ], [ - -5.2618345, - 50.7082694 + -5.8621751, + 59.0990605 ] ], [ [ - -2.1502671, - 60.171318 + -1.7065887, + 59.5703599 ], [ - -2.0030218, - 60.1696146 + -1.5579165, + 59.5693481 ], [ - -2.0013096, - 60.0997023 + -1.5564897, + 59.4965695 ], [ - -2.148555, - 60.1011247 + -1.7054472, + 59.4975834 ] ], [ [ - -6.2086011, - 59.1163488 + -7.6865827, + 58.2940975 ], [ - -6.1229934, - 59.1166418 + -7.5330594, + 58.3006957 ], [ - -6.121852, - 59.0714985 + -7.5256401, + 58.2646905 ], [ - -6.2097426, - 59.0714985 + -7.6797341, + 58.2577853 ] ], [ [ - -4.4159559, - 59.0889036 + -4.5338281, + 59.0359871 ], [ - -4.4212022, - 59.0770848 + -4.481322, + 59.0371616 ], [ - -4.3971904, - 59.0779143 + -4.4796099, + 59.0186583 ], [ - -4.3913388, - 59.0897328 + -4.5332574, + 59.0180707 ] - ] - ], - "terms_url": "http://geo.nls.uk/maps/", - "terms_text": "National Library of Scotland Historic Maps" - }, - { - "name": "NLS - OS 1:25k 1st Series 1937-61", - "type": "tms", - "template": "http://geo.nls.uk/mapdata2/os/25000/{zoom}/{x}/{-y}.png", - "scaleExtent": [ - 5, - 16 - ], - "polygon": [ + ], [ [ - -4.7157244, - 54.6796556 + -8.6710698, + 57.8769896 ], [ - -4.6850662, - 54.6800268 + -8.4673234, + 57.8897332 ], [ - -4.6835779, - 54.6623245 + -8.4467775, + 57.7907 ], [ - -4.7148782, - 54.6615818 + -8.6510947, + 57.7779213 ] ], [ [ - -3.7085748, - 58.3371151 + -5.2395519, + 50.3530581 ], [ - -3.5405937, - 58.3380684 + -5.7920073, + 50.3384899 ], [ - -3.5315137, - 58.1608002 + -5.760047, + 49.9317027 ], [ - -3.3608086, - 58.1622372 + -4.6551363, + 49.9581461 ], [ - -3.3653486, - 58.252173 + -4.677965, + 50.2860073 ], [ - -3.1610473, - 58.2536063 + -4.244219, + 50.2801723 ], [ - -3.1610473, - 58.3261509 + -4.2487848, + 50.2042525 ], [ - -3.0275704, - 58.3271045 + -3.3812929, + 50.2042525 ], [ - -3.0366505, - 58.6139001 + -3.4223846, + 50.5188201 ], [ - -3.0021463, - 58.614373 + -3.1164796, + 50.5246258 ], [ - -3.0030543, - 58.7036341 + -3.1210453, + 50.6579592 ], [ - -3.4180129, - 58.7003322 + -2.6736357, + 50.6619495 ], [ - -3.4171049, - 58.6290293 + -2.5953453, + 50.6394325 ], [ - -3.7240109, - 58.6266658 + -2.5905026, + 50.5728419 ], [ - -3.7231029, - 58.606806 + -2.4791203, + 50.5733545 ], [ - -4.2361262, - 58.5992374 + -2.4758919, + 50.5066704 ], [ - -4.2334022, - 58.5092347 + -2.3967943, + 50.5056438 ], [ - -3.88836, - 58.5144516 + -2.401637, + 50.5723293 ], [ - -3.8829119, - 58.4261327 + -1.0400296, + 50.5718167 ], [ - -3.7158389, - 58.4270836 - ] - ], - [ - [ - -6.46676, - 49.9943621 + -1.0335726, + 50.7059289 ], [ - -6.1889102, - 50.004868 + -0.549302, + 50.7038843 ], [ - -6.1789222, - 49.8967815 + -0.5460736, + 50.7886618 ], [ - -6.3169391, - 49.8915171 + -0.0924734, + 50.7856002 ], [ - -6.312399, - 49.8200979 + -0.0876307, + 50.7181949 ], [ - -6.4504159, - 49.8159968 - ] - ], - [ + 0.4789659, + 50.7120623 + ], [ - -5.6453263, - 50.2029809 + 0.487037, + 50.8182467 ], [ - -5.7801329, - 50.2014076 + 0.9761503, + 50.8049868 ], [ - -5.7637888, - 50.0197267 + 0.9922927, + 51.0126311 ], [ - -5.3479221, - 50.0290604 + 1.4491213, + 51.0004424 ], [ - -5.3388421, - 49.9414854 + 1.4781775, + 51.4090372 ], [ - -5.024672, - 49.9473287 + 1.0229632, + 51.4271576 ], [ - -5.0355681, - 50.0383923 + 1.035877, + 51.7640881 ], [ - -5.0010639, - 50.0453901 + 1.6105448, + 51.7500992 ], [ - -4.9974319, - 50.1304478 + 1.646058, + 52.1560003 ], [ - -4.855783, - 50.13394 + 1.7267698, + 52.1540195 ], [ - -4.861231, - 50.206057 + 1.749369, + 52.4481811 ], [ - -4.6546085, - 50.2140172 + 1.7870672, + 52.4811624 ], [ - -4.6558926, - 50.3018616 + 1.759102, + 52.522505 ], [ - -4.5184924, - 50.3026818 + 1.7933451, + 52.9602749 ], [ - -4.51464, - 50.325642 + 0.3798147, + 52.9958468 ], [ - -4.2488284, - 50.3264618 + 0.3895238, + 53.2511239 ], [ - -4.2488284, - 50.3100631 + 0.3478614, + 53.2511239 ], [ - -4.10886, - 50.3141633 + 0.3238912, + 53.282186 ], [ - -4.1062917, - 50.2411267 + 0.3461492, + 53.6538501 ], [ - -3.9648088, - 50.2432047 + 0.128487, + 53.6575466 ], [ - -3.9640778, - 50.2254158 + 0.116582, + 53.6674703 ], [ - -3.8522287, - 50.2273626 + 0.1350586, + 54.0655731 ], [ - -3.8503757, - 50.1552563 + -0.0609831, + 54.065908 ], [ - -3.6921809, - 50.1572487 + -0.0414249, + 54.4709448 ], [ - -3.5414602, - 50.1602198 + -0.5662701, + 54.4771794 ], [ - -3.5465781, - 50.3226814 + -0.5592078, + 54.6565127 ], [ - -3.4068012, - 50.3241013 + -1.1665638, + 54.6623485 ], [ - -3.4165761, - 50.5892711 + -1.1637389, + 54.842611 ], [ - -3.2746691, - 50.5962721 + -1.3316194, + 54.843909 ], [ - -3.2749172, - 50.6106323 + -1.3257065, + 55.2470842 ], [ - -2.9971742, - 50.613972 + -1.529453, + 55.2487108 ], [ - -2.9896008, - 50.688537 + -1.524178, + 55.6540122 ], [ - -2.7120266, - 50.690565 + -1.7638798, + 55.6540122 ], [ - -2.710908, - 50.6195964 + -1.7733693, + 55.9719116 ], [ - -2.5695473, - 50.6157538 + -2.1607858, + 55.9682981 ], [ - -2.5651019, - 50.5134083 + -2.1543289, + 56.0621387 ], [ - -2.4014463, - 50.513379 + -2.4578051, + 56.0585337 ], [ - -2.3940583, - 50.6160348 + -2.4190635, + 56.641717 ], [ - -2.2894123, - 50.6147436 + -2.0962164, + 56.641717 ], [ - -2.2876184, - 50.6008549 + -2.0833025, + 57.0021322 ], [ - -2.1477855, - 50.6048506 + -1.9283359, + 57.0126802 ], [ - -2.1451013, - 50.5325437 + -1.9180966, + 57.3590895 ], [ - -1.9335117, - 50.5347477 + -1.7502161, + 57.3625721 ], [ - -1.9362139, - 50.6170445 + -1.7695869, + 57.7608634 ], [ - -1.8573025, - 50.6228094 + -3.6937554, + 57.7574187 ], [ - -1.8554865, - 50.709139 + -3.7066693, + 57.9806386 ], [ - -1.6066929, - 50.709139 + -3.5969013, + 57.9772149 ], [ - -1.6085089, - 50.6239615 + -3.6033582, + 58.1207277 ], [ - -1.4450678, - 50.6228094 + -3.0222335, + 58.1309566 ], [ - -1.4432518, - 50.5317039 + -3.0286905, + 58.5410788 ], [ - -1.1545059, - 50.5293951 + -2.8478961, + 58.530968 ], [ - -1.1472419, - 50.6170485 + -2.86081, + 58.8430508 ], [ - -1.011041, - 50.6205051 + -2.679624, + 58.8414991 ], [ - -1.011041, - 50.7056889 + -2.6841897, + 58.885175 ], [ - -0.704135, - 50.7045388 + -2.6339665, + 58.9052239 ], [ - -0.700503, - 50.7769401 + -2.679624, + 58.9335083 ], [ - -0.5860943, - 50.7723465 + -2.6887555, + 59.0229231 ], [ - -0.5879103, - 50.7907181 + -2.3668703, + 59.0229231 ], [ - -0.0149586, - 50.7798108 + -2.3702946, + 59.2652861 ], [ - -0.0185906, - 50.7625836 + -2.3429001, + 59.2821989 ], [ - 0.0967261, - 50.7620093 + -2.3714361, + 59.2996861 ], [ - 0.0921861, - 50.6913106 + -2.3737189, + 59.3707083 ], [ - 0.3046595, - 50.6890096 + -2.3429001, + 59.385825 ], [ - 0.3101075, - 50.7757917 + -2.3725775, + 59.400354 ], [ - 0.5511831, - 50.7726336 + -2.3714361, + 59.4259098 ], [ - 0.5529991, - 50.8432096 + -3.0734196, + 59.4230067 ], [ - 0.695556, - 50.8403428 + -3.0711368, + 59.3433649 ], [ - 0.696464, - 50.8592608 + -3.103097, + 59.3311405 ], [ - 0.9852099, - 50.8523824 + -3.0745611, + 59.3136695 ], [ - 0.9906579, - 50.9417226 + -3.0722782, + 59.232603 ], [ - 1.0160821, - 50.9411504 + -3.3850319, + 59.1484167 ], [ - 1.0215301, - 51.0303204 + -3.3747589, + 58.9352753 ], [ - 1.2812198, - 51.0240383 + -3.5653789, + 58.9323303 ], [ - 1.2848518, - 51.0948044 + -3.554829, + 58.69759 ], [ - 1.4277848, - 51.0948044 + -5.2808579, + 58.6667732 ], [ - 1.4386809, - 51.2882859 + -5.2534159, + 58.3514125 ], [ - 1.4713691, - 51.2871502 + -5.5068508, + 58.3437887 ], [ - 1.4804492, - 51.3994534 + -5.4761804, + 58.0323557 ], [ - 1.1590151, - 51.4073836 + -5.8974958, + 58.0212436 ], [ - 1.1590151, - 51.3869889 + -5.8522972, + 57.6171758 ], [ - 1.0191822, - 51.3903886 + -6.1396311, + 57.6137174 ], [ - 1.0228142, - 51.4798247 + -6.1541592, + 57.7423183 ], [ - 0.8793493, - 51.4843484 + -6.2913692, + 57.7380102 ], [ - 0.8829813, - 51.5566675 + -6.3365678, + 58.1398784 ], [ - 1.0264462, - 51.5544092 + -6.1121891, + 58.1466944 ], [ - 1.0373423, - 51.7493319 + -6.1473778, + 58.5106285 ], [ - 1.2607117, - 51.7482076 + -6.2934817, + 58.5416182 ], [ - 1.2661598, - 51.8279642 + -6.8413713, + 58.2977321 ], [ - 1.3351682, - 51.8335756 + -7.0057382, + 58.2929331 ], [ - 1.3478803, - 51.9199021 + -7.1016189, + 58.2064403 ], [ - 1.4840812, - 51.9199021 + -7.2573132, + 58.1793148 ], [ - 1.4986093, - 52.0038271 + -7.2531092, + 58.1004928 ], [ - 1.6438902, - 52.0027092 + -7.4070698, + 58.0905566 ], [ - 1.6656823, - 52.270221 + -7.391347, + 57.7911354 ], [ - 1.7310588, - 52.270221 + -7.790991, + 57.7733151 ], [ - 1.7528509, - 52.4465637 + -7.7624215, + 57.5444165 ], [ - 1.8254914, - 52.4476705 + -7.698501, + 57.1453194 ], [ - 1.8345714, - 52.624408 + -7.7943817, + 57.1304547 ], [ - 1.7690346, - 52.6291402 + -7.716764, + 56.7368628 ], [ - 1.7741711, - 52.717904 + -7.0122067, + 56.7654359 ], [ - 1.6996925, - 52.721793 + -6.979922, + 56.5453858 ], [ - 1.706113, - 52.8103687 + -7.0638622, + 56.5453858 ], [ - 1.559724, - 52.8165777 + -7.0444914, + 56.3562587 ], [ - 1.5648605, - 52.9034116 + -6.500676, + 56.3812917 ], [ - 1.4184715, - 52.9103818 + -6.4491433, + 55.9793649 ], [ - 1.4223238, - 52.9281894 + -6.563287, + 55.9691456 ], [ - 1.3439928, - 52.9289635 + -6.5393742, + 55.7030135 ], [ - 1.3491293, - 53.0001194 + -6.5595521, + 55.6907321 ], [ - 0.4515789, - 53.022589 + -6.5345315, + 55.6761713 ], [ - 0.4497629, - 52.9351139 + -6.5216176, + 55.5704434 ], [ - 0.3789384, - 52.9351139 + -5.8912587, + 55.5923416 ], [ - 0.3716744, - 52.846365 + -5.8560127, + 55.2320733 ], [ - 0.2227614, - 52.8496552 + -5.2293639, + 55.2515958 ], [ - 0.2336575, - 52.9329248 + -5.1837064, + 54.6254139 ], [ - 0.3062979, - 52.9351139 + -3.6655956, + 54.6518373 ], [ - 0.308114, - 53.022589 + -3.6496155, + 54.4320023 ], [ - 0.3807544, - 53.0236813 + -3.5400375, + 54.4306744 ], [ - 0.3993708, - 53.2933729 + -3.530906, + 54.0290181 ], [ - 0.3248922, - 53.2987454 + -3.0697656, + 54.030359 ], [ - 0.3274604, - 53.3853782 + -3.0675737, + 53.8221388 ], [ - 0.2504136, - 53.38691 + -3.0804876, + 53.7739911 ], [ - 0.2581183, - 53.4748924 + -3.0619239, + 53.7477488 ], [ - 0.1862079, - 53.4779494 + -3.0611168, + 53.6737049 ], [ - 0.1913443, - 53.6548777 + -3.2144691, + 53.6708361 ], [ - 0.1502527, - 53.6594436 + -3.2057699, + 53.4226163 ], [ - 0.1528209, - 53.7666003 + -3.2799632, + 53.355224 ], [ - 0.0012954, - 53.7734308 + -3.2896655, + 53.3608441 ], [ - 0.0025796, - 53.8424326 + -3.3327547, + 53.364931 ], [ - -0.0282392, - 53.841675 + -3.3761293, + 53.3540318 ], [ - -0.0226575, - 53.9311501 + -4.0888976, + 53.3433102 ], [ - -0.1406983, - 53.9322193 + -4.0945474, + 53.4612036 ], [ - -0.1416063, - 54.0219323 + -4.697412, + 53.4448624 ], [ - -0.1706625, - 54.0235326 + -4.6882805, + 53.3318598 ], [ - -0.1679384, - 54.0949482 + -4.7202407, + 53.2895771 ], [ - -0.0126694, - 54.0912206 + -4.6837148, + 53.2486184 ], [ - -0.0099454, - 54.1811226 + -4.6768661, + 53.1542644 ], [ - -0.1615824, - 54.1837795 + -4.8480816, + 53.1446807 ], [ - -0.1606744, - 54.2029038 + -4.8178336, + 52.7440299 ], [ - -0.2405789, - 54.2034349 + -4.2545751, + 52.7558939 ], [ - -0.2378549, - 54.2936234 + -4.228876, + 52.254876 ], [ - -0.3894919, - 54.2941533 + -4.2607571, + 52.2536408 ], [ - -0.3857497, - 54.3837321 + -4.2724603, + 52.2432637 ], [ - -0.461638, - 54.3856364 + -4.8136263, + 52.230095 ], [ - -0.4571122, - 54.4939066 + -4.8079191, + 52.1138892 ], [ - -0.6105651, - 54.4965434 + -5.3889104, + 52.0991668 ], [ - -0.6096571, - 54.5676704 + -5.3717888, + 51.9129667 ], [ - -0.7667421, - 54.569776 + -5.4208706, + 51.9101502 ], [ - -0.7640181, - 54.5887213 + -5.414022, + 51.8453218 ], [ - -0.9192871, - 54.5908258 + -5.3683645, + 51.8474373 ], [ - -0.9148116, - 54.6608348 + -5.3466772, + 51.5595332 ], [ - -1.1485204, - 54.6634343 + -4.773676, + 51.5758518 ], [ - -1.1472363, - 54.7528316 + -4.7656859, + 51.4885146 ], [ - -1.2268514, - 54.7532021 + -4.1915432, + 51.4970427 ], [ - -1.2265398, - 54.8429879 + -4.1869775, + 51.4344663 ], [ - -1.2991803, - 54.8435107 + -3.6151177, + 51.4444274 ], [ - -1.2991803, - 54.9333391 + -3.6105519, + 51.3746543 ], [ - -1.3454886, - 54.9354258 + -3.1494115, + 51.3789292 ], [ - -1.3436726, - 55.0234878 + -3.1494115, + 51.2919281 ], [ - -1.3772688, - 55.0255698 + -4.3038735, + 51.2745907 ], [ - -1.3754528, - 55.1310877 + -4.2861169, + 51.0508721 ], [ - -1.4997441, - 55.1315727 + -4.8543277, + 51.0366633 ], [ - -1.4969272, - 55.2928323 + -4.8372201, + 50.7212787 ], [ - -1.5296721, - 55.2942946 - ], + -5.2618345, + 50.7082694 + ] + ], + [ [ - -1.5258198, - 55.6523803 + -2.1502671, + 60.171318 ], [ - -1.7659492, - 55.6545537 + -2.0030218, + 60.1696146 ], [ - -1.7620968, - 55.7435626 + -2.0013096, + 60.0997023 ], [ - -1.9688392, - 55.7435626 - ], + -2.148555, + 60.1011247 + ] + ], + [ [ - -1.9698023, - 55.8334505 + -6.2086011, + 59.1163488 ], [ - -2.0019051, - 55.8336308 + -6.1229934, + 59.1166418 ], [ - -2.0015841, - 55.9235526 + -6.121852, + 59.0714985 ], [ - -2.1604851, - 55.9240613 - ], + -6.2097426, + 59.0714985 + ] + ], + [ [ - -2.1613931, - 55.9413549 + -4.4159559, + 59.0889036 ], [ - -2.3202942, - 55.9408463 + -4.4212022, + 59.0770848 ], [ - -2.3212022, - 56.0145126 + -4.3971904, + 59.0779143 ], [ - -2.5627317, - 56.0124824 - ], + -4.3913388, + 59.0897328 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "NLS - OS 1:25k 1st Series 1937-61", + "type": "tms", + "template": "http://geo.nls.uk/mapdata2/os/25000/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 5, + 16 + ], + "polygon": [ + [ [ - -2.5645477, - 56.1022207 + -4.7157244, + 54.6796556 ], [ - -2.9658863, - 56.0991822 + -4.6850662, + 54.6800268 ], [ - -2.9667943, - 56.1710304 + -4.6835779, + 54.6623245 ], [ - -2.4828272, - 56.1755797 - ], + -4.7148782, + 54.6615818 + ] + ], + [ [ - -2.4882752, - 56.2856078 + -3.7085748, + 58.3371151 ], [ - -2.5645477, - 56.2835918 + -3.5405937, + 58.3380684 ], [ - -2.5681798, - 56.3742075 + -3.5315137, + 58.1608002 ], [ - -2.7261728, - 56.3732019 + -3.3608086, + 58.1622372 ], [ - -2.7316208, - 56.4425301 + -3.3653486, + 58.252173 ], [ - -2.6190281, - 56.4425301 + -3.1610473, + 58.2536063 ], [ - -2.6153961, - 56.5317671 + -3.1610473, + 58.3261509 ], [ - -2.453771, - 56.5347715 + -3.0275704, + 58.3271045 ], [ - -2.4534686, - 56.6420248 + -3.0366505, + 58.6139001 ], [ - -2.4062523, - 56.6440218 + -3.0021463, + 58.614373 ], [ - -2.3953562, - 56.7297964 + -3.0030543, + 58.7036341 ], [ - -2.2936596, - 56.7337811 + -3.4180129, + 58.7003322 ], [ - -2.2972916, - 56.807423 + -3.4171049, + 58.6290293 ], [ - -2.1629067, - 56.8113995 + -3.7240109, + 58.6266658 ], [ - -2.1592747, - 56.9958425 + -3.7231029, + 58.606806 ], [ - -1.9922016, - 57.0017771 + -4.2361262, + 58.5992374 ], [ - -2.0067297, - 57.2737477 + -4.2334022, + 58.5092347 ], [ - -1.9195612, - 57.2757112 + -3.88836, + 58.5144516 ], [ - -1.9304572, - 57.3482876 + -3.8829119, + 58.4261327 ], [ - -1.8106005, - 57.3443682 - ], + -3.7158389, + 58.4270836 + ] + ], + [ [ - -1.7997044, - 57.4402728 + -6.46676, + 49.9943621 ], [ - -1.6616875, - 57.4285429 + -6.1889102, + 50.004868 ], [ - -1.6689516, - 57.5398256 + -6.1789222, + 49.8967815 ], [ - -1.7452241, - 57.5398256 + -6.3169391, + 49.8915171 ], [ - -1.7524881, - 57.6313302 + -6.312399, + 49.8200979 ], [ - -1.8287606, - 57.6332746 + -6.4504159, + 49.8159968 + ] + ], + [ + [ + -5.6453263, + 50.2029809 ], [ - -1.8287606, - 57.7187255 + -5.7801329, + 50.2014076 ], [ - -3.1768526, - 57.7171219 + -5.7637888, + 50.0197267 ], [ - -3.1794208, - 57.734264 + -5.3479221, + 50.0290604 ], [ - -3.5134082, - 57.7292105 + -5.3388421, + 49.9414854 ], [ - -3.5129542, - 57.7112683 + -5.024672, + 49.9473287 ], [ - -3.7635638, - 57.7076303 + -5.0355681, + 50.0383923 ], [ - -3.7598539, - 57.635713 + -5.0010639, + 50.0453901 ], [ - -3.8420372, - 57.6343382 + -4.9974319, + 50.1304478 ], [ - -3.8458895, - 57.6178365 + -4.855783, + 50.13394 ], [ - -3.9794374, - 57.6157733 + -4.861231, + 50.206057 ], [ - -3.9794374, - 57.686544 + -4.6546085, + 50.2140172 ], [ - -3.8150708, - 57.689976 + -4.6558926, + 50.3018616 ], [ - -3.817639, - 57.7968899 + -4.5184924, + 50.3026818 ], [ - -3.6853753, - 57.7989429 + -4.51464, + 50.325642 ], [ - -3.6892276, - 57.8891567 + -4.2488284, + 50.3264618 ], [ - -3.9383458, - 57.8877915 + -4.2488284, + 50.3100631 ], [ - -3.9421981, - 57.9750592 + -4.10886, + 50.3141633 ], [ - -3.6943641, - 57.9784638 + -4.1062917, + 50.2411267 ], [ - -3.6969323, - 58.0695865 + -3.9648088, + 50.2432047 ], [ - -4.0372226, - 58.0641528 + -3.9640778, + 50.2254158 ], [ - -4.0346543, - 57.9730163 + -3.8522287, + 50.2273626 ], [ - -4.2003051, - 57.9702923 + -3.8503757, + 50.1552563 ], [ - -4.1832772, - 57.7012869 + -3.6921809, + 50.1572487 ], [ - -4.518752, - 57.6951111 + -3.5414602, + 50.1602198 ], [ - -4.5122925, - 57.6050682 + -3.5465781, + 50.3226814 ], [ - -4.6789116, - 57.6016628 + -3.4068012, + 50.3241013 ], [ - -4.666022, - 57.4218334 + -3.4165761, + 50.5892711 ], [ - -3.6677696, - 57.4394729 + -3.2746691, + 50.5962721 ], [ - -3.671282, - 57.5295384 + -3.2749172, + 50.6106323 ], [ - -3.3384979, - 57.5331943 + -2.9971742, + 50.613972 ], [ - -3.3330498, - 57.4438859 + -2.9896008, + 50.688537 ], [ - -2.8336466, - 57.4485275 + -2.7120266, + 50.690565 ], [ - -2.8236396, - 56.9992706 + -2.710908, + 50.6195964 ], [ - -2.3305398, - 57.0006693 + -2.5695473, + 50.6157538 ], [ - -2.3298977, - 56.9113932 + -2.5651019, + 50.5134083 ], [ - -2.6579889, - 56.9092901 + -2.4014463, + 50.513379 ], [ - -2.6559637, - 56.8198406 + -2.3940583, + 50.6160348 ], [ - -2.8216747, - 56.8188467 + -2.2894123, + 50.6147436 ], [ - -2.8184967, - 56.7295397 + -2.2876184, + 50.6008549 ], [ - -3.1449248, - 56.7265508 + -2.1477855, + 50.6048506 ], [ - -3.1435628, - 56.6362749 + -2.1451013, + 50.5325437 ], [ - -3.4679089, - 56.6350265 + -1.9335117, + 50.5347477 ], [ - -3.474265, - 56.7238108 + -1.9362139, + 50.6170445 ], [ - -3.8011471, - 56.7188284 + -1.8573025, + 50.6228094 ], [ - -3.785711, - 56.4493026 + -1.8554865, + 50.709139 ], [ - -3.946428, - 56.4457896 + -1.6066929, + 50.709139 ], [ - -3.9428873, - 56.2659777 + -1.6085089, + 50.6239615 ], [ - -4.423146, - 56.2588459 + -1.4450678, + 50.6228094 ], [ - -4.4141572, - 56.0815506 + -1.4432518, + 50.5317039 ], [ - -4.8944159, - 56.0708008 + -1.1545059, + 50.5293951 ], [ - -4.8791072, - 55.8896994 + -1.1472419, + 50.6170485 ], [ - -5.1994158, - 55.8821374 + -1.011041, + 50.6205051 ], [ - -5.1852906, - 55.7023791 + -1.011041, + 50.7056889 ], [ - -5.0273445, - 55.7067203 + -0.704135, + 50.7045388 ], [ - -5.0222081, - 55.6879046 + -0.700503, + 50.7769401 ], [ - -4.897649, - 55.6907999 + -0.5860943, + 50.7723465 ], [ - -4.8880181, - 55.6002822 + -0.5879103, + 50.7907181 ], [ - -4.7339244, - 55.6046348 + -0.0149586, + 50.7798108 ], [ - -4.7275038, - 55.5342082 + -0.0185906, + 50.7625836 ], [ - -4.773732, - 55.5334815 + 0.0967261, + 50.7620093 ], [ - -4.7685955, - 55.4447227 + 0.0921861, + 50.6913106 ], [ - -4.8494947, - 55.4418092 + 0.3046595, + 50.6890096 ], [ - -4.8405059, - 55.3506535 + 0.3101075, + 50.7757917 ], [ - -4.8700405, - 55.3513836 + 0.5511831, + 50.7726336 ], [ - -4.8649041, - 55.2629462 + 0.5529991, + 50.8432096 ], [ - -4.9920314, - 55.2592875 + 0.695556, + 50.8403428 ], [ - -4.9907473, - 55.1691779 + 0.696464, + 50.8592608 ], [ - -5.0600894, - 55.1655105 + 0.9852099, + 50.8523824 ], [ - -5.0575212, - 55.0751884 + 0.9906579, + 50.9417226 ], [ - -5.2141831, - 55.0722477 + 1.0160821, + 50.9411504 ], [ - -5.1991766, - 54.8020337 + 1.0215301, + 51.0303204 ], [ - -5.0466316, - 54.8062205 + 1.2812198, + 51.0240383 ], [ - -5.0502636, - 54.7244996 + 1.2848518, + 51.0948044 ], [ - -4.9703591, - 54.7203043 + 1.4277848, + 51.0948044 ], [ - -4.9776232, - 54.6215905 + 1.4386809, + 51.2882859 ], [ - -4.796022, - 54.6342056 + 1.4713691, + 51.2871502 ], [ - -4.796022, - 54.7307917 + 1.4804492, + 51.3994534 ], [ - -4.8977186, - 54.7265971 + 1.1590151, + 51.4073836 ], [ - -4.9086147, - 54.8145928 + 1.1590151, + 51.3869889 ], [ - -4.8069181, - 54.8166856 + 1.0191822, + 51.3903886 ], [ - -4.8105501, - 54.7915648 + 1.0228142, + 51.4798247 ], [ - -4.6943253, - 54.7978465 + 0.8793493, + 51.4843484 ], [ - -4.6761652, - 54.7244996 + 0.8829813, + 51.5566675 ], [ - -4.5744686, - 54.7244996 + 1.0264462, + 51.5544092 ], [ - -4.5599405, - 54.6426135 + 1.0373423, + 51.7493319 ], [ - -4.3093309, - 54.6384098 + 1.2607117, + 51.7482076 ], [ - -4.3333262, - 54.8229889 + 1.2661598, + 51.8279642 ], [ - -4.2626999, - 54.8274274 + 1.3351682, + 51.8335756 ], [ - -4.2549952, - 54.7348587 + 1.3478803, + 51.9199021 ], [ - -3.8338058, - 54.7400481 + 1.4840812, + 51.9199021 ], [ - -3.836374, - 54.8141105 + 1.4986093, + 52.0038271 ], [ - -3.7118149, - 54.8133706 + 1.6438902, + 52.0027092 ], [ - -3.7143831, - 54.8318654 + 1.6656823, + 52.270221 ], [ - -3.5346072, - 54.8355633 + 1.7310588, + 52.270221 ], [ - -3.5271039, - 54.9066228 + 1.7528509, + 52.4465637 ], [ - -3.4808758, - 54.9084684 + 1.8254914, + 52.4476705 ], [ - -3.4776655, - 54.7457328 + 1.8345714, + 52.624408 ], [ - -3.5874573, - 54.744621 + 1.7690346, + 52.6291402 ], [ - -3.5836049, - 54.6546166 + 1.7741711, + 52.717904 ], [ - -3.7107322, - 54.6531308 + 1.6996925, + 52.721793 ], [ - -3.6991752, - 54.4550407 + 1.706113, + 52.8103687 ], [ - -3.5746161, - 54.4572801 + 1.559724, + 52.8165777 ], [ - -3.5759002, - 54.3863042 + 1.5648605, + 52.9034116 ], [ - -3.539945, - 54.3855564 + 1.4184715, + 52.9103818 ], [ - -3.5386609, - 54.297224 + 1.4223238, + 52.9281894 ], [ - -3.46033, - 54.2957252 + 1.3439928, + 52.9289635 ], [ - -3.4590458, - 54.2079507 + 1.3491293, + 53.0001194 ], [ - -3.3807149, - 54.2102037 + 0.4515789, + 53.022589 ], [ - -3.381999, - 54.1169788 + 0.4497629, + 52.9351139 ], [ - -3.302878, - 54.1160656 + 0.3789384, + 52.9351139 ], [ - -3.300154, - 54.0276224 + 0.3716744, + 52.846365 ], [ - -3.1013007, - 54.0292224 + 0.2227614, + 52.8496552 ], [ - -3.093596, - 53.6062158 + 0.2336575, + 52.9329248 ], [ - -3.2065981, - 53.6016441 + 0.3062979, + 52.9351139 ], [ - -3.2091663, - 53.4917753 + 0.308114, + 53.022589 ], [ - -3.2451215, - 53.4887193 + 0.3807544, + 53.0236813 ], [ - -3.2348486, - 53.4045934 + 0.3993708, + 53.2933729 ], [ - -3.5276266, - 53.3999999 + 0.3248922, + 53.2987454 ], [ - -3.5343966, - 53.328481 + 0.3274604, + 53.3853782 ], [ - -3.6488053, - 53.3252272 + 0.2504136, + 53.38691 ], [ - -3.6527308, - 53.3057716 + 0.2581183, + 53.4748924 ], [ - -3.7271873, - 53.3046865 + 0.1862079, + 53.4779494 ], [ - -3.7315003, - 53.3945257 + 0.1913443, + 53.6548777 ], [ - -3.9108315, - 53.3912769 + 0.1502527, + 53.6594436 ], [ - -3.9071995, - 53.3023804 + 0.1528209, + 53.7666003 ], [ - -3.9521457, - 53.3015665 + 0.0012954, + 53.7734308 ], [ - -3.9566724, - 53.3912183 + 0.0025796, + 53.8424326 ], [ - -4.1081979, - 53.3889209 + -0.0282392, + 53.841675 ], [ - -4.1081979, - 53.4072967 + -0.0226575, + 53.9311501 ], [ - -4.2622916, - 53.4065312 + -0.1406983, + 53.9322193 ], [ - -4.2635757, - 53.4753707 + -0.1416063, + 54.0219323 ], [ - -4.638537, - 53.4677274 + -0.1706625, + 54.0235326 ], [ - -4.6346847, - 53.3812621 + -0.1679384, + 54.0949482 ], [ - -4.7091633, - 53.3774321 + -0.0126694, + 54.0912206 ], [ - -4.7001745, - 53.1954965 + -0.0099454, + 54.1811226 ], [ - -4.5499332, - 53.1962658 + -0.1615824, + 54.1837795 ], [ - -4.5435126, - 53.1092488 + -0.1606744, + 54.2029038 ], [ - -4.3919871, - 53.1100196 + -0.2405789, + 54.2034349 ], [ - -4.3855666, - 53.0236002 + -0.2378549, + 54.2936234 ], [ - -4.6115707, - 53.0205105 + -0.3894919, + 54.2941533 ], [ - -4.603866, - 52.9284932 + -0.3857497, + 54.3837321 ], [ - -4.7566756, - 52.9261709 + -0.461638, + 54.3856364 ], [ - -4.7476868, - 52.8370555 + -0.4571122, + 54.4939066 ], [ - -4.8208813, - 52.8331768 + -0.6105651, + 54.4965434 ], [ - -4.8208813, - 52.7446476 + -0.6096571, + 54.5676704 ], [ - -4.3701572, - 52.7539749 + -0.7667421, + 54.569776 ], [ - -4.3765778, - 52.8401583 + -0.7640181, + 54.5887213 ], [ - -4.2314728, - 52.8455875 + -0.9192871, + 54.5908258 ], [ - -4.2237682, - 52.7586379 + -0.9148116, + 54.6608348 ], [ - -4.1056297, - 52.7570836 + -1.1485204, + 54.6634343 ], [ - -4.1015192, - 52.6714874 + -1.1472363, + 54.7528316 ], [ - -4.1487355, - 52.6703862 + -1.2268514, + 54.7532021 ], [ - -4.1305754, - 52.4008596 + -1.2265398, + 54.8429879 ], [ - -4.1995838, - 52.3986435 + -1.2991803, + 54.8435107 ], [ - -4.2050319, - 52.3110195 + -1.2991803, + 54.9333391 ], [ - -4.3466808, - 52.303247 + -1.3454886, + 54.9354258 ], [ - -4.3484968, - 52.2365693 + -1.3436726, + 55.0234878 ], [ - -4.4901457, - 52.2332328 + -1.3772688, + 55.0255698 ], [ - -4.4883297, - 52.2098702 + -1.3754528, + 55.1310877 ], [ - -4.6572188, - 52.2098702 + -1.4997441, + 55.1315727 ], [ - -4.6590348, - 52.1385939 + -1.4969272, + 55.2928323 ], [ - -4.7788916, - 52.13525 + -1.5296721, + 55.2942946 ], [ - -4.7807076, - 52.1162967 + -1.5258198, + 55.6523803 ], [ - -4.9259885, - 52.1140663 + -1.7659492, + 55.6545537 ], [ - -4.9187245, - 52.0392855 + -1.7620968, + 55.7435626 ], [ - -5.2365265, - 52.0314653 + -1.9688392, + 55.7435626 ], [ - -5.2347105, - 51.9442339 + -1.9698023, + 55.8334505 ], [ - -5.3473032, - 51.9408755 + -2.0019051, + 55.8336308 ], [ - -5.3473032, - 51.9195995 + -2.0015841, + 55.9235526 ], [ - -5.4925842, - 51.9162392 + -2.1604851, + 55.9240613 ], [ - -5.4853201, - 51.8265386 + -2.1613931, + 55.9413549 ], [ - -5.1983903, - 51.8321501 + -2.3202942, + 55.9408463 ], [ - -5.1893102, - 51.7625177 + -2.3212022, + 56.0145126 ], [ - -5.335825, - 51.7589528 + -2.5627317, + 56.0124824 ], [ - -5.3281204, - 51.6686495 + -2.5645477, + 56.1022207 ], [ - -5.1836575, - 51.6730296 + -2.9658863, + 56.0991822 ], [ - -5.1836575, - 51.6539134 + -2.9667943, + 56.1710304 ], [ - -5.0674452, - 51.6578966 + -2.4828272, + 56.1755797 ], [ - -5.0603825, - 51.5677905 + -2.4882752, + 56.2856078 ], [ - -4.5974594, - 51.5809588 + -2.5645477, + 56.2835918 ], [ - -4.60388, - 51.6726314 + -2.5681798, + 56.3742075 ], [ - -4.345773, - 51.6726314 + -2.7261728, + 56.3732019 ], [ - -4.3355001, - 51.4962964 + -2.7316208, + 56.4425301 ], [ - -3.9528341, - 51.5106841 + -2.6190281, + 56.4425301 ], [ - -3.9425611, - 51.5905333 + -2.6153961, + 56.5317671 ], [ - -3.8809237, - 51.5953198 + -2.453771, + 56.5347715 ], [ - -3.8706508, - 51.5074872 + -2.4534686, + 56.6420248 ], [ - -3.7679216, - 51.4978952 + -2.4062523, + 56.6440218 ], [ - -3.7550805, - 51.4242895 + -2.3953562, + 56.7297964 ], [ - -3.5855774, - 51.41468 + -2.2936596, + 56.7337811 ], [ - -3.5778727, - 51.3329177 + -2.2972916, + 56.807423 ], [ - -3.0796364, - 51.3329177 + -2.1629067, + 56.8113995 ], [ - -3.0770682, - 51.2494018 + -2.1592747, + 56.9958425 ], [ - -3.7216935, - 51.2381477 + -1.9922016, + 57.0017771 ], [ - -3.7216935, - 51.2558315 + -2.0067297, + 57.2737477 ], [ - -3.8706508, - 51.2558315 + -1.9195612, + 57.2757112 ], [ - -3.8680825, - 51.2365398 + -1.9304572, + 57.3482876 ], [ - -4.2944084, - 51.2252825 + -1.8106005, + 57.3443682 ], [ - -4.289272, - 51.0496352 + -1.7997044, + 57.4402728 ], [ - -4.5692089, - 51.0431767 + -1.6616875, + 57.4285429 ], [ - -4.5624122, - 50.9497388 + -1.6689516, + 57.5398256 ], [ - -4.5905604, - 50.9520269 + -1.7452241, + 57.5398256 ], [ - -4.5896524, - 50.8627065 + -1.7524881, + 57.6313302 ], [ - -4.6296046, - 50.8592677 + -1.8287606, + 57.6332746 ], [ - -4.6226411, - 50.7691513 + -1.8287606, + 57.7187255 ], [ - -4.6952816, - 50.7680028 + -3.1768526, + 57.7171219 ], [ - -4.6934655, - 50.6967379 + -3.1794208, + 57.734264 ], [ - -4.8342064, - 50.6938621 + -3.5134082, + 57.7292105 ], [ - -4.8296664, - 50.6046231 + -3.5129542, + 57.7112683 ], [ - -4.9676833, - 50.6000126 + -3.7635638, + 57.7076303 ], [ - -4.9685913, - 50.5821427 + -3.7598539, + 57.635713 ], [ - -5.1084242, - 50.5786832 + -3.8420372, + 57.6343382 ], [ - -5.1029762, - 50.4892254 + -3.8458895, + 57.6178365 ], [ - -5.1311244, - 50.48807 + -3.9794374, + 57.6157733 ], [ - -5.1274923, - 50.4163798 + -3.9794374, + 57.686544 ], [ - -5.2664172, - 50.4117509 + -3.8150708, + 57.689976 ], [ - -5.2609692, - 50.3034214 + -3.817639, + 57.7968899 ], [ - -5.5124868, - 50.2976214 + -3.6853753, + 57.7989429 ], [ - -5.5061308, - 50.2256428 + -3.6892276, + 57.8891567 ], [ - -5.6468717, - 50.2209953 - ] - ], - [ - [ - -5.1336607, - 55.2630226 + -3.9383458, + 57.8877915 ], [ - -5.1021999, - 55.2639372 + -3.9421981, + 57.9750592 ], [ - -5.0999527, - 55.2458239 + -3.6943641, + 57.9784638 ], [ - -5.1322161, - 55.2446343 - ] - ], - [ - [ - -5.6431878, - 55.5095745 + -3.6969323, + 58.0695865 ], [ - -5.4861028, - 55.5126594 + -4.0372226, + 58.0641528 ], [ - -5.4715747, - 55.3348829 + -4.0346543, + 57.9730163 ], [ - -5.6277517, - 55.3302345 - ] - ], - [ - [ - -4.7213517, - 51.2180246 + -4.2003051, + 57.9702923 ], [ - -4.5804201, - 51.2212417 + -4.1832772, + 57.7012869 ], [ - -4.5746416, - 51.1306736 + -4.518752, + 57.6951111 ], [ - -4.7174993, - 51.1280545 - ] - ], - [ - [ - -5.1608796, - 55.4153626 + -4.5122925, + 57.6050682 ], [ - -5.0045387, - 55.4190069 + -4.6789116, + 57.6016628 ], [ - -5.0184798, - 55.6153521 + -4.666022, + 57.4218334 ], [ - -5.1755648, - 55.6138137 - ] - ] - ], - "terms_url": "http://geo.nls.uk/maps/", - "terms_text": "National Library of Scotland Historic Maps" - }, - { - "name": "NLS - OS 6-inch Scotland 1842-82", - "type": "tms", - "template": "http://geo.nls.uk/maps/os/six_inch/{zoom}/{x}/{-y}.png", - "scaleExtent": [ - 5, - 16 - ], - "polygon": [ - [ + -3.6677696, + 57.4394729 + ], [ - -5.2112173, - 54.8018593 + -3.671282, + 57.5295384 ], [ - -5.0642752, - 54.8026508 + -3.3384979, + 57.5331943 ], [ - -5.0560354, - 54.6305176 + -3.3330498, + 57.4438859 ], [ - -4.3158316, - 54.6297227 + -2.8336466, + 57.4485275 ], [ - -4.3117117, - 54.7448258 + -2.8236396, + 56.9992706 ], [ - -3.8530325, - 54.7464112 + -2.3305398, + 57.0006693 ], [ - -3.8530325, - 54.8034424 + -2.3298977, + 56.9113932 ], [ - -3.5522818, - 54.8034424 + -2.6579889, + 56.9092901 ], [ - -3.5522818, - 54.8374644 + -2.6559637, + 56.8198406 ], [ - -3.468511, - 54.8406277 + -2.8216747, + 56.8188467 ], [ - -3.4657644, - 54.8983158 + -2.8184967, + 56.7295397 ], [ - -3.3847403, - 54.8991055 + -3.1449248, + 56.7265508 ], [ - -3.3888601, - 54.9559214 + -3.1435628, + 56.6362749 ], [ - -3.0920786, - 54.9539468 + -3.4679089, + 56.6350265 ], [ - -3.0392359, - 54.9923274 + -3.474265, + 56.7238108 ], [ - -3.0212713, - 55.0493881 + -3.8011471, + 56.7188284 ], [ - -2.9591232, - 55.0463283 + -3.785711, + 56.4493026 ], [ - -2.9202807, - 55.0666294 + -3.946428, + 56.4457896 ], [ - -2.7857081, - 55.068652 + -3.9428873, + 56.2659777 ], [ - -2.7852225, - 55.0914426 + -4.423146, + 56.2588459 ], [ - -2.7337562, - 55.0922761 + -4.4141572, + 56.0815506 ], [ - -2.737616, - 55.151204 + -4.8944159, + 56.0708008 ], [ - -2.7648395, - 55.1510672 + -4.8791072, + 55.8896994 ], [ - -2.7013114, - 55.1722505 + -5.1994158, + 55.8821374 ], [ - -2.6635459, - 55.2192808 + -5.1852906, + 55.7023791 ], [ - -2.6460364, - 55.2188891 + -5.0273445, + 55.7067203 ], [ - -2.629042, - 55.2233933 + -5.0222081, + 55.6879046 ], [ - -2.6317886, - 55.2287781 + -4.897649, + 55.6907999 ], [ - -2.6235488, - 55.2446345 + -4.8880181, + 55.6002822 ], [ - -2.6197723, - 55.2454663 + -4.7339244, + 55.6046348 ], [ - -2.6099017, - 55.2454174 + -4.7275038, + 55.5342082 ], [ - -2.6099876, - 55.2486466 + -4.773732, + 55.5334815 ], [ - -2.6408121, - 55.2590039 + -4.7685955, + 55.4447227 ], [ - -2.6247896, - 55.2615631 + -4.8494947, + 55.4418092 ], [ - -2.6045186, - 55.2823081 + -4.8405059, + 55.3506535 ], [ - -2.5693176, - 55.296132 + -4.8700405, + 55.3513836 ], [ - -2.5479542, - 55.3121617 + -4.8649041, + 55.2629462 ], [ - -2.5091116, - 55.3234891 + -4.9920314, + 55.2592875 ], [ - -2.4780376, - 55.3494471 + -4.9907473, + 55.1691779 ], [ - -2.4421083, - 55.3533118 + -5.0600894, + 55.1655105 ], [ - -2.4052079, - 55.3439256 + -5.0575212, + 55.0751884 ], [ - -2.3726772, - 55.3447539 + -5.2141831, + 55.0722477 ], [ - -2.3221819, - 55.3687665 + -5.1991766, + 54.8020337 ], [ - -2.3241241, - 55.3999337 + -5.0466316, + 54.8062205 ], [ - -2.2576062, - 55.425015 + -5.0502636, + 54.7244996 ], [ - -2.1985547, - 55.4273529 + -4.9703591, + 54.7203043 ], [ - -2.1484296, - 55.4717466 + -4.9776232, + 54.6215905 ], [ - -2.1944348, - 55.484199 + -4.796022, + 54.6342056 ], [ - -2.2040479, - 55.529306 + -4.796022, + 54.7307917 ], [ - -2.2960584, - 55.6379722 + -4.8977186, + 54.7265971 ], [ - -2.2177808, - 55.6379722 + -4.9086147, + 54.8145928 ], [ - -2.1059266, - 55.7452498 + -4.8069181, + 54.8166856 ], [ - -1.9716874, - 55.7462161 + -4.8105501, + 54.7915648 ], [ - -1.9697453, - 55.9190951 + -4.6943253, + 54.7978465 ], [ - -2.1201694, - 55.9207115 + -4.6761652, + 54.7244996 ], [ - -2.1242893, - 55.9776133 + -4.5744686, + 54.7244996 ], [ - -2.3440159, - 55.9783817 + -4.5599405, + 54.6426135 ], [ - -2.3440159, - 56.0390349 + -4.3093309, + 54.6384098 ], [ - -2.5046909, - 56.0413363 + -4.3333262, + 54.8229889 ], [ - -2.500571, - 56.1003588 + -4.2626999, + 54.8274274 ], [ - -2.8823459, - 56.0957629 + -4.2549952, + 54.7348587 ], [ - -2.8823459, - 56.1722898 + -3.8338058, + 54.7400481 ], [ - -2.4126804, - 56.1692316 + -3.836374, + 54.8141105 ], [ - -2.4181736, - 56.2334017 + -3.7118149, + 54.8133706 ], [ - -2.5857151, - 56.2303484 + -3.7143831, + 54.8318654 ], [ - -2.5719822, - 56.3416356 + -3.5346072, + 54.8355633 ], [ - -2.7257908, - 56.3462022 + -3.5271039, + 54.9066228 ], [ - -2.7312839, - 56.4343808 + -3.4808758, + 54.9084684 ], [ - -2.6928318, - 56.4343808 + -3.4776655, + 54.7457328 ], [ - -2.6928318, - 56.4859769 + -3.5874573, + 54.744621 ], [ - -2.5307834, - 56.4935587 + -3.5836049, + 54.6546166 ], [ - -2.5307834, - 56.570806 + -3.7107322, + 54.6531308 ], [ - -2.5302878, - 56.6047947 + -3.6991752, + 54.4550407 ], [ - -2.3732428, - 56.6044452 + -3.5746161, + 54.4572801 ], [ - -2.3684363, - 56.7398824 + -3.5759002, + 54.3863042 ], [ - -2.3292975, - 56.7398824 + -3.539945, + 54.3855564 ], [ - -2.3292975, - 56.7888065 + -3.5386609, + 54.297224 ], [ - -2.3145346, - 56.7891826 + -3.46033, + 54.2957252 ], [ - -2.3148779, - 56.7967036 + -3.4590458, + 54.2079507 ], [ - -2.171369, - 56.7967036 + -3.3807149, + 54.2102037 ], [ - -2.1703979, - 56.9710595 + -3.381999, + 54.1169788 ], [ - -2.0101725, - 56.9694716 + -3.302878, + 54.1160656 ], [ - -2.0101725, - 57.0846832 + -3.300154, + 54.0276224 ], [ - -2.0817687, - 57.085349 + -3.1013007, + 54.0292224 ], [ - -2.0488097, - 57.1259963 + -3.093596, + 53.6062158 ], [ - -2.0409133, - 57.126369 + -3.2065981, + 53.6016441 ], [ - -2.0383434, - 57.2411129 + -3.2091663, + 53.4917753 ], [ - -1.878118, - 57.2421638 + -3.2451215, + 53.4887193 ], [ - -1.8771469, - 57.2978175 + -3.2348486, + 53.4045934 ], [ - -1.9868771, - 57.2983422 + -3.5276266, + 53.3999999 ], [ - -1.9082209, - 57.3560063 + -3.5343966, + 53.328481 ], [ - -1.8752048, - 57.3560063 + -3.6488053, + 53.3252272 ], [ - -1.8761758, - 57.3769527 + -3.6527308, + 53.3057716 ], [ - -1.8120857, - 57.4120111 + -3.7271873, + 53.3046865 ], [ - -1.7120661, - 57.4120111 + -3.7315003, + 53.3945257 ], [ - -1.7034646, - 57.6441388 + -3.9108315, + 53.3912769 ], [ - -1.8666032, - 57.6451781 + -3.9071995, + 53.3023804 ], [ - -1.8646611, - 57.7033351 + -3.9521457, + 53.3015665 ], [ - -3.1204292, - 57.7064705 + -3.9566724, + 53.3912183 ], [ - -3.1218025, - 57.7504652 + -4.1081979, + 53.3889209 ], [ - -3.4445259, - 57.7526635 + -4.1081979, + 53.4072967 ], [ - -3.4472724, - 57.7138067 + -4.2622916, + 53.4065312 ], [ - -3.5145637, - 57.7094052 + -4.2635757, + 53.4753707 ], [ - -3.5118171, - 57.6939956 + -4.638537, + 53.4677274 ], [ - -3.7645027, - 57.6917938 + -4.6346847, + 53.3812621 ], [ - -3.7672492, - 57.6344975 + -4.7091633, + 53.3774321 ], [ - -3.842378, - 57.6288312 + -4.7001745, + 53.1954965 ], [ - -3.8438346, - 57.5965825 + -4.5499332, + 53.1962658 ], [ - -3.9414265, - 57.5916386 + -4.5435126, + 53.1092488 ], [ - -3.9404554, - 57.6537782 + -4.3919871, + 53.1100196 ], [ - -3.8894746, - 57.6529989 + -4.3855666, + 53.0236002 ], [ - -3.8826772, - 57.7676408 + -4.6115707, + 53.0205105 ], [ - -3.7224517, - 57.766087 + -4.603866, + 52.9284932 ], [ - -3.7195385, - 57.8819201 + -4.7566756, + 52.9261709 ], [ - -3.9146888, - 57.8853352 + -4.7476868, + 52.8370555 ], [ - -3.916062, - 57.9546243 + -4.8208813, + 52.8331768 ], [ - -3.745774, - 57.9538956 + -4.8208813, + 52.7446476 ], [ - -3.7471473, - 58.0688409 + -4.3701572, + 52.7539749 ], [ - -3.5837256, - 58.0695672 + -4.3765778, + 52.8401583 ], [ - -3.5837256, - 58.1116689 + -4.2314728, + 52.8455875 ], [ - -3.4560096, - 58.1138452 + -4.2237682, + 52.7586379 ], [ - -3.4544646, - 58.228503 + -4.1056297, + 52.7570836 ], [ - -3.4379851, - 58.2283222 + -4.1015192, + 52.6714874 ], [ - -3.4243233, - 58.2427725 + -4.1487355, + 52.6703862 ], [ - -3.412307, - 58.2438567 + -4.1305754, + 52.4008596 ], [ - -3.3735115, - 58.2695057 + -4.1995838, + 52.3986435 ], [ - -3.3063919, - 58.2862038 + -4.2050319, + 52.3110195 ], [ - -3.1229154, - 58.2859395 + -4.3466808, + 52.303247 ], [ - -3.123602, - 58.3443661 + -4.3484968, + 52.2365693 ], [ - -2.9574338, - 58.3447264 + -4.4901457, + 52.2332328 ], [ - -2.951254, - 58.6422011 + -4.4883297, + 52.2098702 ], [ - -2.8812162, - 58.6429157 + -4.6572188, + 52.2098702 ], [ - -2.8851004, - 58.8112825 + -4.6590348, + 52.1385939 ], [ - -2.7180775, - 58.8142997 + -4.7788916, + 52.13525 ], [ - -2.7161354, - 58.8715749 + -4.7807076, + 52.1162967 ], [ - -2.556881, - 58.8775984 + -4.9259885, + 52.1140663 ], [ - -2.5544533, - 58.9923453 + -4.9187245, + 52.0392855 ], [ - -2.5567617, - 59.0483775 + -5.2365265, + 52.0314653 ], [ - -2.391893, - 59.0485996 + -5.2347105, + 51.9442339 ], [ - -2.3918002, - 59.1106996 + -5.3473032, + 51.9408755 ], [ - -2.4733695, - 59.1106996 + -5.3473032, + 51.9195995 ], [ - -2.5591563, - 59.1783028 + -5.4925842, + 51.9162392 ], [ - -2.5630406, - 59.2210646 + -5.4853201, + 51.8265386 ], [ - -2.3921334, - 59.224046 + -5.1983903, + 51.8321501 ], [ - -2.3911409, - 59.2740075 + -5.1893102, + 51.7625177 ], [ - -2.3639512, - 59.2745036 + -5.335825, + 51.7589528 ], [ - -2.3658933, - 59.285417 + -5.3281204, + 51.6686495 ], [ - -2.3911409, - 59.284921 + -5.1836575, + 51.6730296 ], [ - -2.3911409, - 59.3379505 + -5.1836575, + 51.6539134 ], [ - -2.2221759, - 59.3381981 + -5.0674452, + 51.6578966 ], [ - -2.2233897, - 59.395965 + -5.0603825, + 51.5677905 ], [ - -2.3758467, - 59.396583 + -4.5974594, + 51.5809588 ], [ - -2.3899271, - 59.4026383 + -4.60388, + 51.6726314 ], [ - -2.4008516, - 59.3962122 + -4.345773, + 51.6726314 ], [ - -2.5637882, - 59.3952604 + -4.3355001, + 51.4962964 ], [ - -2.5637882, - 59.3385811 + -3.9528341, + 51.5106841 ], [ - -2.7320164, - 59.3375306 + -3.9425611, + 51.5905333 ], [ - -2.7333896, - 59.3952604 + -3.8809237, + 51.5953198 ], [ - -3.0726511, - 59.3931174 + -3.8706508, + 51.5074872 ], [ - -3.0703404, - 59.3354759 + -3.7679216, + 51.4978952 ], [ - -3.0753186, - 59.3355634 + -3.7550805, + 51.4242895 ], [ - -3.0749753, - 59.3292593 + -3.5855774, + 51.41468 ], [ - -3.0698254, - 59.3289091 + -3.5778727, + 51.3329177 ], [ - -3.069801, - 59.2196159 + -3.0796364, + 51.3329177 ], [ - -3.2363384, - 59.2166341 + -3.0770682, + 51.2494018 ], [ - -3.2336751, - 59.1606496 + -3.7216935, + 51.2381477 ], [ - -3.4032766, - 59.1588895 + -3.7216935, + 51.2558315 ], [ - -3.394086, - 58.9279316 + -3.8706508, + 51.2558315 ], [ - -3.5664497, - 58.9259268 + -3.8680825, + 51.2365398 ], [ - -3.5611089, - 58.8679885 + -4.2944084, + 51.2252825 ], [ - -3.392508, - 58.8699339 + -4.289272, + 51.0496352 ], [ - -3.3894734, - 58.8698711 + -4.5692089, + 51.0431767 ], [ - -3.3891093, - 58.8684905 + -4.5624122, + 50.9497388 ], [ - -3.3912942, - 58.868616 + -4.5905604, + 50.9520269 ], [ - -3.3884161, - 58.7543084 + -4.5896524, + 50.8627065 ], [ - -3.2238208, - 58.7555677 + -4.6296046, + 50.8592677 ], [ - -3.2189655, - 58.691289 + -4.6226411, + 50.7691513 ], [ - -3.4634113, - 58.6905753 + -4.6952816, + 50.7680028 ], [ - -3.4551716, - 58.6341518 + -4.6934655, + 50.6967379 ], [ - -3.787508, - 58.6341518 + -4.8342064, + 50.6938621 ], [ - -3.7861347, - 58.5769211 + -4.8296664, + 50.6046231 ], [ - -3.9028645, - 58.5733411 + -4.9676833, + 50.6000126 ], [ - -3.9028645, - 58.6477304 + -4.9685913, + 50.5821427 ], [ - -4.0690327, - 58.6491594 + -5.1084242, + 50.5786832 ], [ - -4.0690327, - 58.5912376 + -5.1029762, + 50.4892254 ], [ - -4.7364521, - 58.5933845 + -5.1311244, + 50.48807 ], [ - -4.7364521, - 58.6505884 + -5.1274923, + 50.4163798 ], [ - -5.0715351, - 58.6520173 + -5.2664172, + 50.4117509 ], [ - -5.0654779, - 58.5325854 + -5.2609692, + 50.3034214 ], [ - -5.2332047, - 58.5316087 + -5.5124868, + 50.2976214 ], [ - -5.2283494, - 58.4719947 + -5.5061308, + 50.2256428 ], [ - -5.2424298, - 58.4719947 - ], + -5.6468717, + 50.2209953 + ] + ], + [ [ - -5.2366034, - 58.4089731 + -5.1336607, + 55.2630226 ], [ - -5.2283494, - 58.4094818 + -5.1021999, + 55.2639372 ], [ - -5.2210664, - 58.3005859 + -5.0999527, + 55.2458239 ], [ - -5.5657939, - 58.2959933 - ], + -5.1322161, + 55.2446343 + ] + ], + [ [ - -5.5580254, - 58.2372573 + -5.6431878, + 55.5095745 ], [ - -5.4146722, - 58.2401326 + -5.4861028, + 55.5126594 ], [ - -5.4141866, - 58.2267768 + -5.4715747, + 55.3348829 ], [ - -5.3885749, - 58.2272242 - ], + -5.6277517, + 55.3302345 + ] + ], + [ [ - -5.382714, - 58.1198615 + -4.7213517, + 51.2180246 ], [ - -5.51043, - 58.1191362 + -4.5804201, + 51.2212417 ], [ - -5.5114011, - 58.006214 + -4.5746416, + 51.1306736 ], [ - -5.6745397, - 58.0041559 - ], + -4.7174993, + 51.1280545 + ] + ], + [ [ - -5.6716266, - 57.9449366 + -5.1608796, + 55.4153626 ], [ - -5.6716266, - 57.8887166 + -5.0045387, + 55.4190069 ], [ - -5.8347652, - 57.8856193 + -5.0184798, + 55.6153521 ], [ - -5.8277052, - 57.5988958 - ], + -5.1755648, + 55.6138137 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "NLS - OS 6-inch Scotland 1842-82", + "type": "tms", + "template": "http://geo.nls.uk/maps/os/six_inch/{zoom}/{x}/{-y}.png", + "scaleExtent": [ + 5, + 16 + ], + "polygon": [ + [ [ - -6.0384259, - 57.5986357 + -5.2112173, + 54.8018593 ], [ - -6.0389115, - 57.6459559 + -5.0642752, + 54.8026508 ], [ - -6.1981658, - 57.6456961 + -5.0560354, + 54.6305176 ], [ - -6.2076123, - 57.7600132 + -4.3158316, + 54.6297227 ], [ - -6.537067, - 57.7544033 + -4.3117117, + 54.7448258 ], [ - -6.5312406, - 57.6402392 + -3.8530325, + 54.7464112 ], [ - -6.7002056, - 57.6360809 + -3.8530325, + 54.8034424 ], [ - -6.6807844, - 57.5236293 + -3.5522818, + 54.8034424 ], [ - -6.8516915, - 57.5152857 + -3.5522818, + 54.8374644 ], [ - -6.8361545, - 57.3385811 + -3.468511, + 54.8406277 ], [ - -6.6730158, - 57.3438213 + -3.4657644, + 54.8983158 ], [ - -6.674958, - 57.2850883 + -3.3847403, + 54.8991055 ], [ - -6.5098772, - 57.2850883 + -3.3888601, + 54.9559214 ], [ - -6.4982244, - 57.1757637 + -3.0920786, + 54.9539468 ], [ - -6.3506228, - 57.1820797 + -3.0392359, + 54.9923274 ], [ - -6.3312015, - 57.1251969 + -3.0212713, + 55.0493881 ], [ - -6.1797156, - 57.1230884 + -2.9591232, + 55.0463283 ], [ - -6.1719471, - 57.0682265 + -2.9202807, + 55.0666294 ], [ - -6.4593819, - 57.059779 + -2.7857081, + 55.068652 ], [ - -6.4564687, - 57.1093806 + -2.7852225, + 55.0914426 ], [ - -6.6671895, - 57.1062165 + -2.7337562, + 55.0922761 ], [ - -6.6730158, - 57.002708 + -2.737616, + 55.151204 ], [ - -6.5021087, - 57.0048233 + -2.7648395, + 55.1510672 ], [ - -6.4836097, - 56.8917522 + -2.7013114, + 55.1722505 ], [ - -6.3266104, - 56.8894062 + -2.6635459, + 55.2192808 ], [ - -6.3156645, - 56.7799312 + -2.6460364, + 55.2188891 ], [ - -6.2146739, - 56.775675 + -2.629042, + 55.2233933 ], [ - -6.2146739, - 56.7234965 + -2.6317886, + 55.2287781 ], [ - -6.6866107, - 56.7224309 + -2.6235488, + 55.2446345 ], [ - -6.6769001, - 56.6114413 + -2.6197723, + 55.2454663 ], [ - -6.8419809, - 56.607166 + -2.6099017, + 55.2454174 ], [ - -6.8400387, - 56.5483307 + -2.6099876, + 55.2486466 ], [ - -7.1546633, - 56.5461895 + -2.6408121, + 55.2590039 ], [ - -7.1488369, - 56.4872592 + -2.6247896, + 55.2615631 ], [ - -6.9915246, - 56.490476 + -2.6045186, + 55.2823081 ], [ - -6.9876404, - 56.4325329 + -2.5693176, + 55.296132 ], [ - -6.6827265, - 56.4314591 + -2.5479542, + 55.3121617 ], [ - -6.6769001, - 56.5472601 + -2.5091116, + 55.3234891 ], [ - -6.5292985, - 56.5504717 + -2.4780376, + 55.3494471 ], [ - -6.5234721, - 56.4379018 + -2.4421083, + 55.3533118 ], [ - -6.3661598, - 56.4368281 + -2.4052079, + 55.3439256 ], [ - -6.3642177, - 56.3766524 + -2.3726772, + 55.3447539 ], [ - -6.5273563, - 56.3712749 + -2.3221819, + 55.3687665 ], [ - -6.5171745, - 56.2428427 + -2.3241241, + 55.3999337 ], [ - -6.4869621, - 56.247421 + -2.2576062, + 55.425015 ], [ - -6.4869621, - 56.1893882 + -2.1985547, + 55.4273529 ], [ - -6.3001945, - 56.1985572 + -2.1484296, + 55.4717466 ], [ - -6.3029411, - 56.2581017 + -2.1944348, + 55.484199 ], [ - -5.9019401, - 56.256576 + -2.2040479, + 55.529306 ], [ - -5.8964469, - 56.0960466 + -2.2960584, + 55.6379722 ], [ - -6.0282829, - 56.0883855 + -2.2177808, + 55.6379722 ], [ - -6.0392692, - 56.1557502 + -2.1059266, + 55.7452498 ], [ - -6.3853385, - 56.1542205 + -1.9716874, + 55.7462161 ], [ - -6.3606193, - 55.96099 + -1.9697453, + 55.9190951 ], [ - -6.2123039, - 55.9640647 + -2.1201694, + 55.9207115 ], [ - -6.2047508, - 55.9202269 + -2.1242893, + 55.9776133 ], [ - -6.5185478, - 55.9129158 + -2.3440159, + 55.9783817 ], [ - -6.5061881, - 55.7501763 + -2.3440159, + 56.0390349 ], [ - -6.6764762, - 55.7409005 + -2.5046909, + 56.0413363 ], [ - -6.6599967, - 55.6263176 + -2.500571, + 56.1003588 ], [ - -6.3551261, - 55.6232161 + -2.8823459, + 56.0957629 ], [ - -6.3578727, - 55.5689002 + -2.8823459, + 56.1722898 ], [ - -6.0392692, - 55.5720059 + -2.4126804, + 56.1692316 ], [ - -6.0310294, - 55.6247669 + -2.4181736, + 56.2334017 ], [ - -5.7398917, - 55.6309694 + -2.5857151, + 56.2303484 ], [ - -5.7371452, - 55.4569279 + -2.5719822, + 56.3416356 ], [ - -5.8964469, - 55.4600426 + -2.7257908, + 56.3462022 ], [ - -5.8964469, - 55.2789864 + -2.7312839, + 56.4343808 ], [ - -5.4350211, - 55.2821151 + -2.6928318, + 56.4343808 ], [ - -5.4405143, - 55.4506979 + -2.6928318, + 56.4859769 ], [ - -5.2867057, - 55.4569279 + -2.5307834, + 56.4935587 ], [ - -5.3086784, - 55.4070602 + -2.5307834, + 56.570806 ], [ - -4.9735954, - 55.4008223 + -2.5302878, + 56.6047947 ], [ - -4.9845817, - 55.2038242 + -2.3732428, + 56.6044452 ], [ - -5.1493766, - 55.2038242 + -2.3684363, + 56.7398824 ], [ - -5.1411369, - 55.037337 + -2.3292975, + 56.7398824 ], [ - -5.2152946, - 55.0341891 - ] - ], - [ - [ - -2.1646559, - 60.1622059 + -2.3292975, + 56.7888065 ], [ - -1.9930299, - 60.1609801 + -2.3145346, + 56.7891826 ], [ - -1.9946862, - 60.1035151 + -2.3148779, + 56.7967036 ], [ - -2.1663122, - 60.104743 - ] - ], - [ + -2.171369, + 56.7967036 + ], [ - -1.5360658, - 59.8570831 + -2.1703979, + 56.9710595 ], [ - -1.3653566, - 59.8559841 + -2.0101725, + 56.9694716 ], [ - -1.366847, - 59.7975565 + -2.0101725, + 57.0846832 ], [ - -1.190628, - 59.7964199 + -2.0817687, + 57.085349 ], [ - -1.1862046, - 59.9695391 + -2.0488097, + 57.1259963 ], [ - -1.0078652, - 59.9683948 + -2.0409133, + 57.126369 ], [ - -1.0041233, - 60.114145 + -2.0383434, + 57.2411129 ], [ - -0.8360832, - 60.1130715 + -1.878118, + 57.2421638 ], [ - -0.834574, - 60.1716772 + -1.8771469, + 57.2978175 ], [ - -1.0074262, - 60.1727795 + -1.9868771, + 57.2983422 ], [ - -1.0052165, - 60.2583924 + -1.9082209, + 57.3560063 ], [ - -0.8299659, - 60.2572778 + -1.8752048, + 57.3560063 ], [ - -0.826979, - 60.3726551 + -1.8761758, + 57.3769527 ], [ - -0.6507514, - 60.3715381 + -1.8120857, + 57.4120111 ], [ - -0.6477198, - 60.4882292 + -1.7120661, + 57.4120111 ], [ - -0.9984896, - 60.4904445 + -1.7034646, + 57.6441388 ], [ - -0.9970279, - 60.546555 + -1.8666032, + 57.6451781 ], [ - -0.6425288, - 60.5443201 + -1.8646611, + 57.7033351 ], [ - -0.6394896, - 60.6606792 + -3.1204292, + 57.7064705 ], [ - -0.8148133, - 60.6617806 + -3.1218025, + 57.7504652 ], [ - -0.8132987, - 60.7196112 + -3.4445259, + 57.7526635 ], [ - -0.6383298, - 60.7185141 + -3.4472724, + 57.7138067 ], [ - -0.635467, - 60.8275393 + -3.5145637, + 57.7094052 ], [ - -0.797568, - 60.8285523 + -3.5118171, + 57.6939956 ], [ - -0.9941426, - 60.8297807 + -3.7645027, + 57.6917938 ], [ - -0.9954966, - 60.7782667 + -3.7672492, + 57.6344975 ], [ - -1.1670282, - 60.7793403 + -3.842378, + 57.6288312 ], [ - -1.1700357, - 60.6646181 + -3.8438346, + 57.5965825 ], [ - -1.5222599, - 60.6668304 + -3.9414265, + 57.5916386 ], [ - -1.5237866, - 60.6084426 + -3.9404554, + 57.6537782 ], [ - -1.6975673, - 60.609536 + -3.8894746, + 57.6529989 ], [ - -1.7021271, - 60.4345249 + -3.8826772, + 57.7676408 ], [ - -1.5260578, - 60.4334111 + -3.7224517, + 57.766087 ], [ - -1.5275203, - 60.3770719 + -3.7195385, + 57.8819201 ], [ - -1.8751127, - 60.3792746 + -3.9146888, + 57.8853352 ], [ - -1.8781372, - 60.2624647 + -3.916062, + 57.9546243 ], [ - -1.7019645, - 60.2613443 + -3.745774, + 57.9538956 ], [ - -1.7049134, - 60.1470532 + -3.7471473, + 58.0688409 ], [ - -1.528659, - 60.1459283 - ] - ], - [ - [ - -0.9847667, - 60.8943762 + -3.5837256, + 58.0695672 ], [ - -0.9860347, - 60.8361105 + -3.5837256, + 58.1116689 ], [ - -0.8078362, - 60.8351904 + -3.4560096, + 58.1138452 ], [ - -0.8065683, - 60.8934578 - ] - ], - [ - [ - -7.7696901, - 56.8788231 + -3.4544646, + 58.228503 ], [ - -7.7614504, - 56.7608274 + -3.4379851, + 58.2283222 ], [ - -7.6009049, - 56.7641903 + -3.4243233, + 58.2427725 ], [ - -7.5972473, - 56.819332 + -3.412307, + 58.2438567 ], [ - -7.4479894, - 56.8203948 + -3.3735115, + 58.2695057 ], [ - -7.4489319, - 56.8794098 + -3.3063919, + 58.2862038 ], [ - -7.2841369, - 56.8794098 + -3.1229154, + 58.2859395 ], [ - -7.2813904, - 57.0471152 + -3.123602, + 58.3443661 ], [ - -7.1303283, - 57.0515969 + -2.9574338, + 58.3447264 ], [ - -7.1330749, - 57.511801 + -2.951254, + 58.6422011 ], [ - -6.96828, - 57.5147514 + -2.8812162, + 58.6429157 ], [ - -6.9765198, - 57.6854668 + -2.8851004, + 58.8112825 ], [ - -6.8062317, - 57.6913392 + -2.7180775, + 58.8142997 ], [ - -6.8089782, - 57.8041985 + -2.7161354, + 58.8715749 ], [ - -6.6496765, - 57.8071252 + -2.556881, + 58.8775984 ], [ - -6.6441833, - 57.8612267 + -2.5544533, + 58.9923453 ], [ - -6.3200866, - 57.8626878 + -2.5567617, + 59.0483775 ], [ - -6.3200866, - 58.1551617 + -2.391893, + 59.0485996 ], [ - -6.1607849, - 58.1522633 + -2.3918002, + 59.1106996 ], [ - -6.1552917, - 58.20874 + -2.4733695, + 59.1106996 ], [ - -5.9850036, - 58.2101869 + -2.5591563, + 59.1783028 ], [ - -5.9904968, - 58.2680163 + -2.5630406, + 59.2210646 ], [ - -6.1497986, - 58.2665717 + -2.3921334, + 59.224046 ], [ - -6.1415588, - 58.5557514 + -2.3911409, + 59.2740075 ], [ - -6.3173401, - 58.5557514 + -2.3639512, + 59.2745036 ], [ - -6.3091003, - 58.4983923 + -2.3658933, + 59.285417 ], [ - -6.4876282, - 58.4955218 + -2.3911409, + 59.284921 ], [ - -6.4876282, - 58.4423768 + -2.3911409, + 59.3379505 ], [ - -6.6606628, - 58.4395018 + -2.2221759, + 59.3381981 ], [ - -6.6469299, - 58.3819525 + -2.2233897, + 59.395965 ], [ - -6.8117248, - 58.3805125 + -2.3758467, + 59.396583 ], [ - -6.8117248, - 58.3286357 + -2.3899271, + 59.4026383 ], [ - -6.9792663, - 58.3286357 + -2.4008516, + 59.3962122 ], [ - -6.9710266, - 58.2694608 + -2.5637882, + 59.3952604 ], [ - -7.1413147, - 58.2680163 + -2.5637882, + 59.3385811 ], [ - -7.1403816, - 58.0358742 + -2.7320164, + 59.3375306 ], [ - -7.3020636, - 58.0351031 + -2.7333896, + 59.3952604 ], [ - -7.3030347, - 57.9774797 + -3.0726511, + 59.3931174 ], [ - -7.1379539, - 57.9777372 + -3.0703404, + 59.3354759 ], [ - -7.1413526, - 57.9202792 + -3.0753186, + 59.3355634 ], [ - -7.1398961, - 57.8640206 + -3.0749753, + 59.3292593 ], [ - -7.3020636, - 57.862471 + -3.0698254, + 59.3289091 ], [ - -7.298484, - 57.7442293 + -3.069801, + 59.2196159 ], [ - -7.4509193, - 57.7456951 + -3.2363384, + 59.2166341 ], [ - -7.4550392, - 57.6899522 + -3.2336751, + 59.1606496 ], [ - -7.6186131, - 57.6906048 + -3.4032766, + 59.1588895 ], [ - -7.6198341, - 57.7456951 + -3.394086, + 58.9279316 ], [ - -7.7901222, - 57.7442293 + -3.5664497, + 58.9259268 ], [ - -7.7873756, - 57.6855477 + -3.5611089, + 58.8679885 ], [ - -7.6222332, - 57.6853817 + -3.392508, + 58.8699339 ], [ - -7.6173779, - 57.5712602 + -3.3894734, + 58.8698711 ], [ - -7.788285, - 57.5709998 + -3.3891093, + 58.8684905 ], [ - -7.7892561, - 57.512109 + -3.3912942, + 58.868616 ], [ - -7.7038025, - 57.5115874 + -3.3884161, + 58.7543084 ], [ - -7.6999183, - 57.4546902 + -3.2238208, + 58.7555677 ], [ - -7.5367796, - 57.4552126 + -3.2189655, + 58.691289 ], [ - -7.5348375, - 57.5126306 + -3.4634113, + 58.6905753 ], [ - -7.4581235, - 57.5131521 + -3.4551716, + 58.6341518 ], [ - -7.4552103, - 57.2824165 + -3.787508, + 58.6341518 ], [ - -7.6115515, - 57.2845158 + -3.7861347, + 58.5769211 ], [ - -7.6144647, - 57.2272651 + -3.9028645, + 58.5733411 ], [ - -7.451326, - 57.2256881 + -3.9028645, + 58.6477304 ], [ - -7.451326, - 57.1103873 + -4.0690327, + 58.6491594 ], [ - -7.6164068, - 57.1088053 + -4.0690327, + 58.5912376 ], [ - -7.603783, - 56.8792358 - ] - ], - [ - [ - -1.7106618, - 59.5626284 + -4.7364521, + 58.5933845 ], [ - -1.5417509, - 59.562215 + -4.7364521, + 58.6505884 ], [ - -1.5423082, - 59.5037224 + -5.0715351, + 58.6520173 ], [ - -1.7112191, - 59.5041365 - ] - ] - ], - "terms_url": "http://geo.nls.uk/maps/", - "terms_text": "National Library of Scotland Historic Maps" - }, - { - "name": "OS 1:25k historic (OSM)", - "type": "tms", - "template": "http://ooc.openstreetmap.org/os1/{zoom}/{x}/{y}.jpg", - "scaleExtent": [ - 6, - 17 - ], - "polygon": [ - [ - [ - -9, - 49.8 + -5.0654779, + 58.5325854 ], [ - -9, - 61.1 + -5.2332047, + 58.5316087 ], [ - 1.9, - 61.1 + -5.2283494, + 58.4719947 ], [ - 1.9, - 49.8 + -5.2424298, + 58.4719947 ], [ - -9, - 49.8 - ] - ] - ] - }, - { - "name": "OS New Popular Edition historic", - "type": "tms", - "template": "http://ooc.openstreetmap.org/npe/{zoom}/{x}/{y}.png", - "polygon": [ - [ - [ - -5.8, - 49.8 + -5.2366034, + 58.4089731 ], [ - -5.8, - 55.8 + -5.2283494, + 58.4094818 ], [ - 1.9, - 55.8 + -5.2210664, + 58.3005859 ], [ - 1.9, - 49.8 + -5.5657939, + 58.2959933 ], [ - -5.8, - 49.8 - ] - ] - ] - }, - { - "name": "OS OpenData Locator", - "type": "tms", - "template": "http://tiles.itoworld.com/os_locator/{zoom}/{x}/{y}.png", - "polygon": [ - [ + -5.5580254, + 58.2372573 + ], [ - -9, - 49.8 + -5.4146722, + 58.2401326 ], [ - -9, - 61.1 + -5.4141866, + 58.2267768 ], [ - 1.9, - 61.1 + -5.3885749, + 58.2272242 ], [ - 1.9, - 49.8 + -5.382714, + 58.1198615 ], [ - -9, - 49.8 - ] - ] - ], - "overlay": true - }, - { - "name": "OS OpenData StreetView", - "type": "tms", - "template": "http://os.openstreetmap.org/sv/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 1, - 18 - ], - "polygon": [ - [ - [ - -5.8292886, - 50.0229734 + -5.51043, + 58.1191362 ], [ - -5.8292886, - 50.254819 + -5.5114011, + 58.006214 ], [ - -5.373356, - 50.254819 + -5.6745397, + 58.0041559 ], [ - -5.373356, - 50.3530588 + -5.6716266, + 57.9449366 ], [ - -5.1756021, - 50.3530588 + -5.6716266, + 57.8887166 ], [ - -5.1756021, - 50.5925406 + -5.8347652, + 57.8856193 ], [ - -4.9970743, - 50.5925406 + -5.8277052, + 57.5988958 ], [ - -4.9970743, - 50.6935617 + -6.0384259, + 57.5986357 ], [ - -4.7965738, - 50.6935617 + -6.0389115, + 57.6459559 ], [ - -4.7965738, - 50.7822112 + -6.1981658, + 57.6456961 ], [ - -4.6949503, - 50.7822112 + -6.2076123, + 57.7600132 ], [ - -4.6949503, - 50.9607371 + -6.537067, + 57.7544033 ], [ - -4.6043131, - 50.9607371 + -6.5312406, + 57.6402392 ], [ - -4.6043131, - 51.0692066 + -6.7002056, + 57.6360809 ], [ - -4.3792215, - 51.0692066 + -6.6807844, + 57.5236293 ], [ - -4.3792215, - 51.2521782 + -6.8516915, + 57.5152857 ], [ - -3.9039346, - 51.2521782 + -6.8361545, + 57.3385811 ], [ - -3.9039346, - 51.2916998 + -6.6730158, + 57.3438213 ], [ - -3.7171671, - 51.2916998 + -6.674958, + 57.2850883 ], [ - -3.7171671, - 51.2453014 + -6.5098772, + 57.2850883 ], [ - -3.1486246, - 51.2453014 + -6.4982244, + 57.1757637 ], [ - -3.1486246, - 51.362067 + -6.3506228, + 57.1820797 ], [ - -3.7446329, - 51.362067 + -6.3312015, + 57.1251969 ], [ - -3.7446329, - 51.4340386 + -6.1797156, + 57.1230884 ], [ - -3.8297769, - 51.4340386 + -6.1719471, + 57.0682265 ], [ - -3.8297769, - 51.5298246 + -6.4593819, + 57.059779 ], [ - -4.0852091, - 51.5298246 + -6.4564687, + 57.1093806 ], [ - -4.0852091, - 51.4939284 + -6.6671895, + 57.1062165 ], [ - -4.3792215, - 51.4939284 + -6.6730158, + 57.002708 ], [ - -4.3792215, - 51.5427168 + -6.5021087, + 57.0048233 ], [ - -5.1444195, - 51.5427168 + -6.4836097, + 56.8917522 ], [ - -5.1444195, - 51.6296003 + -6.3266104, + 56.8894062 ], [ - -5.7387103, - 51.6296003 + -6.3156645, + 56.7799312 ], [ - -5.7387103, - 51.774037 + -6.2146739, + 56.775675 ], [ - -5.5095393, - 51.774037 + -6.2146739, + 56.7234965 ], [ - -5.5095393, - 51.9802596 + -6.6866107, + 56.7224309 ], [ - -5.198799, - 51.9802596 + -6.6769001, + 56.6114413 ], [ - -5.198799, - 52.0973358 + -6.8419809, + 56.607166 ], [ - -4.8880588, - 52.0973358 + -6.8400387, + 56.5483307 ], [ - -4.8880588, - 52.1831557 + -7.1546633, + 56.5461895 ], [ - -4.4957492, - 52.1831557 + -7.1488369, + 56.4872592 ], [ - -4.4957492, - 52.2925739 + -6.9915246, + 56.490476 ], [ - -4.3015365, - 52.2925739 + -6.9876404, + 56.4325329 ], [ - -4.3015365, - 52.3685318 + -6.6827265, + 56.4314591 ], [ - -4.1811246, - 52.3685318 + -6.6769001, + 56.5472601 ], [ - -4.1811246, - 52.7933685 + -6.5292985, + 56.5504717 ], [ - -4.4413696, - 52.7933685 + -6.5234721, + 56.4379018 ], [ - -4.4413696, - 52.7369614 + -6.3661598, + 56.4368281 ], [ - -4.8569847, - 52.7369614 + -6.3642177, + 56.3766524 ], [ - -4.8569847, - 52.9317255 + -6.5273563, + 56.3712749 ], [ - -4.7288044, - 52.9317255 + -6.5171745, + 56.2428427 ], [ - -4.7288044, - 53.5038599 + -6.4869621, + 56.247421 ], [ - -4.1578191, - 53.5038599 + -6.4869621, + 56.1893882 ], [ - -4.1578191, - 53.4113498 + -6.3001945, + 56.1985572 ], [ - -3.3110518, - 53.4113498 + -6.3029411, + 56.2581017 ], [ - -3.3110518, - 53.5038599 + -5.9019401, + 56.256576 ], [ - -3.2333667, - 53.5038599 + -5.8964469, + 56.0960466 ], [ - -3.2333667, - 54.0159169 + -6.0282829, + 56.0883855 ], [ - -3.3926211, - 54.0159169 + -6.0392692, + 56.1557502 ], [ - -3.3926211, - 54.1980953 + -6.3853385, + 56.1542205 ], [ - -3.559644, - 54.1980953 + -6.3606193, + 55.96099 ], [ - -3.559644, - 54.433732 + -6.2123039, + 55.9640647 ], [ - -3.7188984, - 54.433732 + -6.2047508, + 55.9202269 ], [ - -3.7188984, - 54.721897 + -6.5185478, + 55.9129158 ], [ - -4.3015365, - 54.721897 + -6.5061881, + 55.7501763 ], [ - -4.3015365, - 54.6140739 + -6.6764762, + 55.7409005 ], [ - -5.0473132, - 54.6140739 + -6.6599967, + 55.6263176 ], [ - -5.0473132, - 54.7532915 + -6.3551261, + 55.6232161 ], [ - -5.2298731, - 54.7532915 + -6.3578727, + 55.5689002 ], [ - -5.2298731, - 55.2190799 + -6.0392692, + 55.5720059 ], [ - -5.6532567, - 55.2190799 + -6.0310294, + 55.6247669 ], [ - -5.6532567, - 55.250088 + -5.7398917, + 55.6309694 ], [ - -5.8979647, - 55.250088 + -5.7371452, + 55.4569279 ], [ - -5.8979647, - 55.4822462 + -5.8964469, + 55.4600426 ], [ - -6.5933212, - 55.4822462 + -5.8964469, + 55.2789864 ], [ - -6.5933212, - 56.3013441 + -5.4350211, + 55.2821151 ], [ - -7.1727691, - 56.3013441 + -5.4405143, + 55.4506979 ], [ - -7.1727691, - 56.5601822 + -5.2867057, + 55.4569279 ], [ - -6.8171722, - 56.5601822 + -5.3086784, + 55.4070602 ], [ - -6.8171722, - 56.6991713 + -4.9735954, + 55.4008223 ], [ - -6.5315276, - 56.6991713 + -4.9845817, + 55.2038242 ], [ - -6.5315276, - 56.9066964 + -5.1493766, + 55.2038242 ], [ - -6.811679, - 56.9066964 + -5.1411369, + 55.037337 ], [ - -6.811679, - 57.3716613 - ], + -5.2152946, + 55.0341891 + ] + ], + [ [ - -6.8721038, - 57.3716613 + -2.1646559, + 60.1622059 ], [ - -6.8721038, - 57.5518893 + -1.9930299, + 60.1609801 ], [ - -7.0973235, - 57.5518893 + -1.9946862, + 60.1035151 ], [ - -7.0973235, - 57.2411085 + -2.1663122, + 60.104743 + ] + ], + [ + [ + -1.5360658, + 59.8570831 ], [ - -7.1742278, - 57.2411085 + -1.3653566, + 59.8559841 ], [ - -7.1742278, - 56.9066964 + -1.366847, + 59.7975565 ], [ - -7.3719817, - 56.9066964 + -1.190628, + 59.7964199 ], [ - -7.3719817, - 56.8075885 + -1.1862046, + 59.9695391 ], [ - -7.5202972, - 56.8075885 + -1.0078652, + 59.9683948 ], [ - -7.5202972, - 56.7142479 + -1.0041233, + 60.114145 ], [ - -7.8306806, - 56.7142479 + -0.8360832, + 60.1130715 ], [ - -7.8306806, - 56.8994605 + -0.834574, + 60.1716772 ], [ - -7.6494061, - 56.8994605 + -1.0074262, + 60.1727795 ], [ - -7.6494061, - 57.4739617 + -1.0052165, + 60.2583924 ], [ - -7.8306806, - 57.4739617 + -0.8299659, + 60.2572778 ], [ - -7.8306806, - 57.7915584 + -0.826979, + 60.3726551 ], [ - -7.4736249, - 57.7915584 + -0.6507514, + 60.3715381 ], [ - -7.4736249, - 58.086063 + -0.6477198, + 60.4882292 ], [ - -7.1879804, - 58.086063 + -0.9984896, + 60.4904445 ], [ - -7.1879804, - 58.367197 + -0.9970279, + 60.546555 ], [ - -6.8034589, - 58.367197 + -0.6425288, + 60.5443201 ], [ - -6.8034589, - 58.4155786 + -0.6394896, + 60.6606792 ], [ - -6.638664, - 58.4155786 + -0.8148133, + 60.6617806 ], [ - -6.638664, - 58.4673277 + -0.8132987, + 60.7196112 ], [ - -6.5178143, - 58.4673277 + -0.6383298, + 60.7185141 ], [ - -6.5178143, - 58.5625632 + -0.635467, + 60.8275393 ], [ - -6.0536224, - 58.5625632 + -0.797568, + 60.8285523 ], [ - -6.0536224, - 58.1568843 + -0.9941426, + 60.8297807 ], [ - -6.1470062, - 58.1568843 + -0.9954966, + 60.7782667 ], [ - -6.1470062, - 58.1105865 + -1.1670282, + 60.7793403 ], [ - -6.2799798, - 58.1105865 + -1.1700357, + 60.6646181 ], [ - -6.2799798, - 57.7122664 + -1.5222599, + 60.6668304 ], [ - -6.1591302, - 57.7122664 + -1.5237866, + 60.6084426 ], [ - -6.1591302, - 57.6667563 + -1.6975673, + 60.609536 ], [ - -5.9339104, - 57.6667563 + -1.7021271, + 60.4345249 ], [ - -5.9339104, - 57.8892524 + -1.5260578, + 60.4334111 ], [ - -5.80643, - 57.8892524 + -1.5275203, + 60.3770719 ], [ - -5.80643, - 57.9621767 + -1.8751127, + 60.3792746 ], [ - -5.6141692, - 57.9621767 + -1.8781372, + 60.2624647 ], [ - -5.6141692, - 58.0911236 + -1.7019645, + 60.2613443 ], [ - -5.490819, - 58.0911236 + -1.7049134, + 60.1470532 ], [ - -5.490819, - 58.3733281 - ], + -1.528659, + 60.1459283 + ] + ], + [ [ - -5.3199118, - 58.3733281 + -0.9847667, + 60.8943762 ], [ - -5.3199118, - 58.75015 + -0.9860347, + 60.8361105 ], [ - -3.5719977, - 58.75015 + -0.8078362, + 60.8351904 ], [ - -3.5719977, - 59.2091788 - ], + -0.8065683, + 60.8934578 + ] + ], + [ [ - -3.1944501, - 59.2091788 + -7.7696901, + 56.8788231 ], [ - -3.1944501, - 59.4759216 + -7.7614504, + 56.7608274 ], [ - -2.243583, - 59.4759216 + -7.6009049, + 56.7641903 ], [ - -2.243583, - 59.1388749 + -7.5972473, + 56.819332 ], [ - -2.4611012, - 59.1388749 + -7.4479894, + 56.8203948 ], [ - -2.4611012, - 58.8185938 + -7.4489319, + 56.8794098 ], [ - -2.7407675, - 58.8185938 + -7.2841369, + 56.8794098 ], [ - -2.7407675, - 58.5804743 + -7.2813904, + 57.0471152 ], [ - -2.9116746, - 58.5804743 + -7.1303283, + 57.0515969 ], [ - -2.9116746, - 58.1157523 + -7.1330749, + 57.511801 ], [ - -3.4865441, - 58.1157523 + -6.96828, + 57.5147514 ], [ - -3.4865441, - 57.740386 + -6.9765198, + 57.6854668 ], [ - -1.7153245, - 57.740386 + -6.8062317, + 57.6913392 ], [ - -1.7153245, - 57.2225558 + -6.8089782, + 57.8041985 ], [ - -1.9794538, - 57.2225558 + -6.6496765, + 57.8071252 ], [ - -1.9794538, - 56.8760742 + -6.6441833, + 57.8612267 ], [ - -2.1658979, - 56.8760742 + -6.3200866, + 57.8626878 ], [ - -2.1658979, - 56.6333186 + -6.3200866, + 58.1551617 ], [ - -2.3601106, - 56.6333186 + -6.1607849, + 58.1522633 ], [ - -2.3601106, - 56.0477521 + -6.1552917, + 58.20874 ], [ - -1.9794538, - 56.0477521 + -5.9850036, + 58.2101869 ], [ - -1.9794538, - 55.8650949 + -5.9904968, + 58.2680163 ], [ - -1.4745008, - 55.8650949 + -6.1497986, + 58.2665717 ], [ - -1.4745008, - 55.2499926 + -6.1415588, + 58.5557514 ], [ - -1.3221997, - 55.2499926 + -6.3173401, + 58.5557514 ], [ - -1.3221997, - 54.8221737 + -6.3091003, + 58.4983923 ], [ - -1.0550014, - 54.8221737 + -6.4876282, + 58.4955218 ], [ - -1.0550014, - 54.6746628 + -6.4876282, + 58.4423768 ], [ - -0.6618765, - 54.6746628 + -6.6606628, + 58.4395018 ], [ - -0.6618765, - 54.5527463 + -6.6469299, + 58.3819525 ], [ - -0.3247617, - 54.5527463 + -6.8117248, + 58.3805125 ], [ - -0.3247617, - 54.2865195 + -6.8117248, + 58.3286357 ], [ - 0.0092841, - 54.2865195 + -6.9792663, + 58.3286357 ], [ - 0.0092841, - 53.7938518 + -6.9710266, + 58.2694608 ], [ - 0.2081962, - 53.7938518 + -7.1413147, + 58.2680163 ], [ - 0.2081962, - 53.5217726 + -7.1403816, + 58.0358742 ], [ - 0.4163548, - 53.5217726 + -7.3020636, + 58.0351031 ], [ - 0.4163548, - 53.0298851 + -7.3030347, + 57.9774797 ], [ - 1.4273388, - 53.0298851 + -7.1379539, + 57.9777372 ], [ - 1.4273388, - 52.92021 + -7.1413526, + 57.9202792 ], [ - 1.8333912, - 52.92021 + -7.1398961, + 57.8640206 ], [ - 1.8333912, - 52.042488 + -7.3020636, + 57.862471 ], [ - 1.5235504, - 52.042488 + -7.298484, + 57.7442293 ], [ - 1.5235504, - 51.8261335 + -7.4509193, + 57.7456951 ], [ - 1.2697049, - 51.8261335 + -7.4550392, + 57.6899522 ], [ - 1.2697049, - 51.6967453 + -7.6186131, + 57.6906048 ], [ - 1.116651, - 51.6967453 + -7.6198341, + 57.7456951 ], [ - 1.116651, - 51.440346 + -7.7901222, + 57.7442293 ], [ - 1.5235504, - 51.440346 + -7.7873756, + 57.6855477 ], [ - 1.5235504, - 51.3331831 + -7.6222332, + 57.6853817 ], [ - 1.4507565, - 51.3331831 + -7.6173779, + 57.5712602 ], [ - 1.4507565, - 51.0207553 + -7.788285, + 57.5709998 ], [ - 1.0699883, - 51.0207553 + -7.7892561, + 57.512109 ], [ - 1.0699883, - 50.9008416 + -7.7038025, + 57.5115874 ], [ - 0.7788126, - 50.9008416 + -7.6999183, + 57.4546902 ], [ - 0.7788126, - 50.729843 + -7.5367796, + 57.4552126 ], [ - -0.7255952, - 50.729843 + -7.5348375, + 57.5126306 ], [ - -0.7255952, - 50.7038437 + -7.4581235, + 57.5131521 ], [ - -1.0074383, - 50.7038437 + -7.4552103, + 57.2824165 ], [ - -1.0074383, - 50.5736307 + -7.6115515, + 57.2845158 ], [ - -2.3625252, - 50.5736307 + -7.6144647, + 57.2272651 ], [ - -2.3625252, - 50.4846421 + -7.451326, + 57.2256881 ], [ - -2.4987805, - 50.4846421 + -7.451326, + 57.1103873 ], [ - -2.4987805, - 50.5736307 + -7.6164068, + 57.1088053 ], [ - -3.4096378, - 50.5736307 + -7.603783, + 56.8792358 + ] + ], + [ + [ + -1.7106618, + 59.5626284 ], [ - -3.4096378, - 50.2057837 + -1.5417509, + 59.562215 ], [ - -3.6922446, - 50.2057837 + -1.5423082, + 59.5037224 ], [ - -3.6922446, - 50.1347737 + -1.7112191, + 59.5041365 + ] + ] + ], + "terms_url": "http://geo.nls.uk/maps/", + "terms_text": "National Library of Scotland Historic Maps" + }, + { + "name": "OS 1:25k historic (OSM)", + "type": "tms", + "template": "http://ooc.openstreetmap.org/os1/{zoom}/{x}/{y}.jpg", + "scaleExtent": [ + 6, + 17 + ], + "polygon": [ + [ + [ + -9, + 49.8 ], [ - -5.005468, - 50.1347737 + -9, + 61.1 ], [ - -5.005468, - 49.9474456 + 1.9, + 61.1 ], [ - -5.2839506, - 49.9474456 + 1.9, + 49.8 ], [ - -5.2839506, - 50.0229734 + -9, + 49.8 ] - ], + ] + ] + }, + { + "name": "OS New Popular Edition historic", + "type": "tms", + "template": "http://ooc.openstreetmap.org/npe/{zoom}/{x}/{y}.png", + "polygon": [ [ [ - -6.4580707, - 49.8673563 + -5.8, + 49.8 ], [ - -6.4580707, - 49.9499935 + -5.8, + 55.8 ], [ - -6.3978807, - 49.9499935 + 1.9, + 55.8 ], [ - -6.3978807, - 50.0053797 + 1.9, + 49.8 ], [ - -6.1799606, - 50.0053797 + -5.8, + 49.8 + ] + ] + ] + }, + { + "name": "OS OpenData Locator", + "type": "tms", + "template": "http://tiles.itoworld.com/os_locator/{zoom}/{x}/{y}.png", + "polygon": [ + [ + [ + -9, + 49.8 ], [ - -6.1799606, - 49.9168614 + -9, + 61.1 ], [ - -6.2540201, - 49.9168614 + 1.9, + 61.1 ], [ - -6.2540201, - 49.8673563 + 1.9, + 49.8 + ], + [ + -9, + 49.8 ] - ], + ] + ], + "overlay": true + }, + { + "name": "OS OpenData StreetView", + "type": "tms", + "template": "http://os.openstreetmap.org/sv/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 1, + 18 + ], + "polygon": [ [ [ - -5.8343165, - 49.932156 + -5.8292886, + 50.0229734 ], [ - -5.8343165, - 49.9754641 + -5.8292886, + 50.254819 ], [ - -5.7683254, - 49.9754641 + -5.373356, + 50.254819 ], [ - -5.7683254, - 49.932156 - ] - ], - [ + -5.373356, + 50.3530588 + ], [ - -1.9483797, - 60.6885737 + -5.1756021, + 50.3530588 ], [ - -1.9483797, - 60.3058841 + -5.1756021, + 50.5925406 ], [ - -1.7543149, - 60.3058841 + -4.9970743, + 50.5925406 ], [ - -1.7543149, - 60.1284428 + -4.9970743, + 50.6935617 ], [ - -1.5754914, - 60.1284428 + -4.7965738, + 50.6935617 ], [ - -1.5754914, - 59.797917 + -4.7965738, + 50.7822112 ], [ - -1.0316959, - 59.797917 + -4.6949503, + 50.7822112 ], [ - -1.0316959, - 60.0354518 + -4.6949503, + 50.9607371 ], [ - -0.6626918, - 60.0354518 + -4.6043131, + 50.9607371 ], [ - -0.6626918, - 60.9103862 + -4.6043131, + 51.0692066 ], [ - -1.1034395, - 60.9103862 + -4.3792215, + 51.0692066 ], [ - -1.1034395, - 60.8040022 + -4.3792215, + 51.2521782 ], [ - -1.3506319, - 60.8040022 + -3.9039346, + 51.2521782 ], [ - -1.3506319, - 60.6885737 - ] - ], - [ - [ - -2.203381, - 60.1968568 + -3.9039346, + 51.2916998 ], [ - -2.203381, - 60.0929443 + -3.7171671, + 51.2916998 ], [ - -1.9864011, - 60.0929443 + -3.7171671, + 51.2453014 ], [ - -1.9864011, - 60.1968568 - ] - ], - [ - [ - -1.7543149, - 59.5698289 + -3.1486246, + 51.2453014 ], [ - -1.7543149, - 59.4639383 + -3.1486246, + 51.362067 ], [ - -1.5373349, - 59.4639383 + -3.7446329, + 51.362067 ], [ - -1.5373349, - 59.5698289 - ] - ], - [ - [ - -4.5585981, - 59.1370518 + -3.7446329, + 51.4340386 ], [ - -4.5585981, - 58.9569099 + -3.8297769, + 51.4340386 ], [ - -4.2867004, - 58.9569099 + -3.8297769, + 51.5298246 ], [ - -4.2867004, - 59.1370518 - ] - ], - [ - [ - -6.2787732, - 59.2025744 + -4.0852091, + 51.5298246 ], [ - -6.2787732, - 59.0227769 + -4.0852091, + 51.4939284 ], [ - -5.6650612, - 59.0227769 + -4.3792215, + 51.4939284 ], [ - -5.6650612, - 59.2025744 - ] - ], - [ - [ - -8.7163482, - 57.9440556 + -4.3792215, + 51.5427168 ], [ - -8.7163482, - 57.7305936 + -5.1444195, + 51.5427168 ], [ - -8.3592926, - 57.7305936 + -5.1444195, + 51.6296003 ], [ - -8.3592926, - 57.9440556 - ] - ], - [ - [ - -7.6077005, - 50.4021026 + -5.7387103, + 51.6296003 ], [ - -7.6077005, - 50.2688657 + -5.7387103, + 51.774037 ], [ - -7.3907205, - 50.2688657 + -5.5095393, + 51.774037 ], [ - -7.3907205, - 50.4021026 - ] - ], - [ - [ - -7.7304303, - 58.3579902 + -5.5095393, + 51.9802596 ], [ - -7.7304303, - 58.248313 + -5.198799, + 51.9802596 ], [ - -7.5134503, - 58.248313 + -5.198799, + 52.0973358 ], [ - -7.5134503, - 58.3579902 - ] - ] - ] - }, - { - "name": "OS Scottish Popular historic", - "type": "tms", - "template": "http://ooc.openstreetmap.org/npescotland/tiles/{zoom}/{x}/{y}.jpg", - "scaleExtent": [ - 6, - 15 - ], - "polygon": [ - [ - [ - -7.8, - 54.5 + -4.8880588, + 52.0973358 ], [ - -7.8, - 61.1 + -4.8880588, + 52.1831557 ], [ - -1.1, - 61.1 + -4.4957492, + 52.1831557 ], [ - -1.1, - 54.5 + -4.4957492, + 52.2925739 ], [ - -7.8, - 54.5 - ] - ] - ] - }, - { - "name": "OpenPT Map (overlay)", - "type": "tms", - "template": "http://openptmap.de/tiles/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 5, - 16 - ], - "polygon": [ - [ + -4.3015365, + 52.2925739 + ], [ - 6.4901072, - 53.665658 + -4.3015365, + 52.3685318 ], [ - 8.5665347, - 53.9848257 + -4.1811246, + 52.3685318 ], [ - 8.1339457, - 54.709715 + -4.1811246, + 52.7933685 ], [ - 8.317796, - 55.0952362 + -4.4413696, + 52.7933685 ], [ - 10.1887438, - 54.7783834 + -4.4413696, + 52.7369614 ], [ - 10.6321475, - 54.4778841 + -4.8569847, + 52.7369614 ], [ - 11.2702164, - 54.6221504 + -4.8569847, + 52.9317255 ], [ - 11.681176, - 54.3709243 + -4.7288044, + 52.9317255 ], [ - 12.0272473, - 54.3898199 + -4.7288044, + 53.5038599 ], [ - 13.3250145, - 54.8531617 + -4.1578191, + 53.5038599 ], [ - 13.9198245, - 54.6972173 + -4.1578191, + 53.4113498 ], [ - 14.2118221, - 54.1308273 + -3.3110518, + 53.4113498 ], [ - 14.493005, - 53.2665063 + -3.3110518, + 53.5038599 ], [ - 14.1577485, - 52.8766495 + -3.2333667, + 53.5038599 ], [ - 14.7525584, - 52.5819369 + -3.2333667, + 54.0159169 ], [ - 15.0986297, - 51.0171541 + -3.3926211, + 54.0159169 ], [ - 14.9364088, - 50.8399279 + -3.3926211, + 54.1980953 ], [ - 14.730929, - 50.7920977 + -3.559644, + 54.1980953 ], [ - 14.4389313, - 50.8808862 + -3.559644, + 54.433732 ], [ - 12.9573138, - 50.3939044 + -3.7188984, + 54.433732 ], [ - 12.51391, - 50.3939044 + -3.7188984, + 54.721897 ], [ - 12.3084302, - 50.1173237 + -4.3015365, + 54.721897 ], [ - 12.6112425, - 49.9088337 + -4.3015365, + 54.6140739 ], [ - 12.394948, - 49.7344006 + -5.0473132, + 54.6140739 ], [ - 12.7734634, - 49.4047626 + -5.0473132, + 54.7532915 ], [ - 14.1469337, - 48.6031036 + -5.2298731, + 54.7532915 ], [ - 14.6768553, - 48.6531391 + -5.2298731, + 55.2190799 ], [ - 15.0661855, - 49.0445497 + -5.6532567, + 55.2190799 ], [ - 16.2666202, - 48.7459305 + -5.6532567, + 55.250088 ], [ - 16.4937294, - 48.8741286 + -5.8979647, + 55.250088 ], [ - 16.904689, - 48.7173975 + -5.8979647, + 55.4822462 ], [ - 16.9371332, - 48.5315383 + -6.5933212, + 55.4822462 ], [ - 16.8384693, - 48.3823161 + -6.5933212, + 56.3013441 ], [ - 17.2017097, - 48.010204 + -7.1727691, + 56.3013441 ], [ - 17.1214145, - 47.6997605 + -7.1727691, + 56.5601822 ], [ - 16.777292, - 47.6585709 + -6.8171722, + 56.5601822 ], [ - 16.6090543, - 47.7460598 + -6.8171722, + 56.6991713 ], [ - 16.410228, - 47.6637214 + -6.5315276, + 56.6991713 ], [ - 16.7352326, - 47.6147714 + -6.5315276, + 56.9066964 ], [ - 16.5555242, - 47.3589738 + -6.811679, + 56.9066964 ], [ - 16.4790525, - 46.9768539 + -6.811679, + 57.3716613 ], [ - 16.0355168, - 46.8096295 + -6.8721038, + 57.3716613 ], [ - 16.0508112, - 46.6366332 + -6.8721038, + 57.5518893 ], [ - 14.9572663, - 46.6313822 + -7.0973235, + 57.5518893 ], [ - 14.574908, - 46.3892866 + -7.0973235, + 57.2411085 ], [ - 12.3954655, - 46.6891149 + -7.1742278, + 57.2411085 ], [ - 12.1507562, - 47.0550608 + -7.1742278, + 56.9066964 ], [ - 11.1183887, - 46.9142058 + -7.3719817, + 56.9066964 ], [ - 11.0342699, - 46.7729797 + -7.3719817, + 56.8075885 ], [ - 10.4836739, - 46.8462544 + -7.5202972, + 56.8075885 ], [ - 10.4607324, - 46.5472973 + -7.5202972, + 56.7142479 ], [ - 10.1013156, - 46.5735879 + -7.8306806, + 56.7142479 ], [ - 10.2007287, - 46.1831867 + -7.8306806, + 56.8994605 ], [ - 9.8948421, - 46.3629068 + -7.6494061, + 56.8994605 ], [ - 9.5966026, - 46.2889758 + -7.6494061, + 57.4739617 ], [ - 9.2983631, - 46.505206 + -7.8306806, + 57.4739617 ], [ - 9.2830687, - 46.2572605 + -7.8306806, + 57.7915584 ], [ - 9.0536537, - 45.7953255 + -7.4736249, + 57.7915584 ], [ - 8.4265861, - 46.2466846 + -7.4736249, + 58.086063 ], [ - 8.4418804, - 46.4736161 + -7.1879804, + 58.086063 ], [ - 7.8759901, - 45.9284607 + -7.1879804, + 58.367197 ], [ - 7.0959791, - 45.8645956 + -6.8034589, + 58.367197 ], [ - 6.7747981, - 46.1620044 + -6.8034589, + 58.4155786 ], [ - 6.8206811, - 46.4051083 + -6.638664, + 58.4155786 ], [ - 6.5453831, - 46.4578142 + -6.638664, + 58.4673277 ], [ - 6.3312624, - 46.3840116 + -6.5178143, + 58.4673277 ], [ - 6.3847926, - 46.2466846 + -6.5178143, + 58.5625632 ], [ - 5.8953739, - 46.0878021 + -6.0536224, + 58.5625632 ], [ - 6.1171418, - 46.3681838 + -6.0536224, + 58.1568843 ], [ - 6.0942003, - 46.5998657 + -6.1470062, + 58.1568843 ], [ - 6.4383228, - 46.7782169 + -6.1470062, + 58.1105865 ], [ - 6.4306756, - 46.9298747 + -6.2799798, + 58.1105865 ], [ - 7.0806847, - 47.3460216 + -6.2799798, + 57.7122664 ], [ - 6.8436226, - 47.3719227 + -6.1591302, + 57.7122664 ], [ - 6.9965659, - 47.5012373 + -6.1591302, + 57.6667563 ], [ - 7.1800979, - 47.5064033 + -5.9339104, + 57.6667563 ], [ - 7.2336281, - 47.439206 + -5.9339104, + 57.8892524 ], [ - 7.4553959, - 47.4805683 + -5.80643, + 57.8892524 ], [ - 7.7842241, - 48.645735 + -5.80643, + 57.9621767 ], [ - 8.1971711, - 49.0282701 + -5.6141692, + 57.9621767 ], [ - 7.6006921, - 49.0382974 + -5.6141692, + 58.0911236 ], [ - 7.4477487, - 49.1634679 + -5.490819, + 58.0911236 ], [ - 7.2030394, - 49.1034255 + -5.490819, + 58.3733281 ], [ - 6.6677378, - 49.1634679 + -5.3199118, + 58.3733281 ], [ - 6.6371491, - 49.3331933 + -5.3199118, + 58.75015 ], [ - 6.3542039, - 49.4576194 + -3.5719977, + 58.75015 ], [ - 6.5453831, - 49.8043366 + -3.5719977, + 59.2091788 ], [ - 6.2471436, - 49.873384 + -3.1944501, + 59.2091788 ], [ - 6.0789059, - 50.1534883 + -3.1944501, + 59.4759216 ], [ - 6.3618511, - 50.3685934 + -2.243583, + 59.4759216 ], [ - 6.0865531, - 50.7039632 + -2.243583, + 59.1388749 ], [ - 5.8800796, - 51.0513752 + -2.4611012, + 59.1388749 ], [ - 6.1247889, - 51.1618085 + -2.4611012, + 58.8185938 ], [ - 6.1936134, - 51.491527 + -2.7407675, + 58.8185938 ], [ - 5.9641984, - 51.7526501 + -2.7407675, + 58.5804743 ], [ - 6.0253758, - 51.8897286 + -2.9116746, + 58.5804743 ], [ - 6.4536171, - 51.8661241 + -2.9116746, + 58.1157523 ], [ - 6.8436226, - 51.9557552 + -3.4865441, + 58.1157523 ], [ - 6.6906793, - 52.0499105 + -3.4865441, + 57.740386 ], [ - 7.0042131, - 52.2282603 + -1.7153245, + 57.740386 ], [ - 7.0195074, - 52.4525245 + -1.7153245, + 57.2225558 ], [ - 6.6983264, - 52.4665032 + -1.9794538, + 57.2225558 ], [ - 6.6906793, - 52.6524628 + -1.9794538, + 56.8760742 ], [ - 7.0348017, - 52.6385432 + -2.1658979, + 56.8760742 ], [ - 7.0730376, - 52.8330151 + -2.1658979, + 56.6333186 ], [ - 7.2183337, - 52.9852064 + -2.3601106, + 56.6333186 ], [ - 7.1953922, - 53.3428087 + -2.3601106, + 56.0477521 ], [ - 7.0042131, - 53.3291098 - ] - ] - ], - "terms_url": "http://openstreetmap.org/", - "terms_text": "© OpenStreetMap contributors, CC-BY-SA" - }, - { - "name": "OpenStreetMap (Mapnik)", - "type": "tms", - "description": "The default OpenStreetMap layer.", - "template": "http://tile.openstreetmap.org/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 0, - 18 - ], - "terms_url": "http://openstreetmap.org/", - "terms_text": "© OpenStreetMap contributors, CC-BY-SA", - "default": true - }, - { - "name": "Pangasinán/Bulacan (Phillipines HiRes)", - "type": "tms", - "template": "http://gravitystorm.dev.openstreetmap.org/imagery/philippines/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 12, - 19 - ], - "polygon": [ - [ - [ - 120.336593, - 15.985768 + -1.9794538, + 56.0477521 ], [ - 120.445995, - 15.984 + -1.9794538, + 55.8650949 ], [ - 120.446134, - 15.974459 + -1.4745008, + 55.8650949 ], [ - 120.476464, - 15.974592 + -1.4745008, + 55.2499926 ], [ - 120.594247, - 15.946832 + -1.3221997, + 55.2499926 ], [ - 120.598064, - 16.090795 + -1.3221997, + 54.8221737 ], [ - 120.596537, - 16.197999 + -1.0550014, + 54.8221737 ], [ - 120.368537, - 16.218527 + -1.0550014, + 54.6746628 ], [ - 120.347576, - 16.042308 + -0.6618765, + 54.6746628 ], [ - 120.336593, - 15.985768 - ] - ], - [ - [ - 120.8268, - 15.3658 + -0.6618765, + 54.5527463 ], [ - 121.2684, - 15.2602 + -0.3247617, + 54.5527463 ], [ - 121.2699, - 14.7025 + -0.3247617, + 54.2865195 ], [ - 120.695, - 14.8423 - ] - ] - ] - }, - { - "name": "Slovakia EEA CORINE 2006", - "type": "tms", - "template": "http://www.freemap.sk/tms/clc/{zoom}/{x}/{y}.png", - "polygon": [ - [ + 0.0092841, + 54.2865195 + ], [ - 19.83682, - 49.25529 + 0.0092841, + 53.7938518 ], [ - 19.80075, - 49.42385 + 0.2081962, + 53.7938518 ], [ - 19.60437, - 49.48058 + 0.2081962, + 53.5217726 ], [ - 19.49179, - 49.63961 + 0.4163548, + 53.5217726 ], [ - 19.21831, - 49.52604 + 0.4163548, + 53.0298851 ], [ - 19.16778, - 49.42521 + 1.4273388, + 53.0298851 ], [ - 19.00308, - 49.42236 + 1.4273388, + 52.92021 ], [ - 18.97611, - 49.5308 + 1.8333912, + 52.92021 ], [ - 18.54685, - 49.51425 + 1.8333912, + 52.042488 ], [ - 18.31432, - 49.33818 + 1.5235504, + 52.042488 ], [ - 18.15913, - 49.2961 + 1.5235504, + 51.8261335 ], [ - 18.05564, - 49.11134 + 1.2697049, + 51.8261335 ], [ - 17.56396, - 48.84938 + 1.2697049, + 51.6967453 ], [ - 17.17929, - 48.88816 + 1.116651, + 51.6967453 ], [ - 17.058, - 48.81105 + 1.116651, + 51.440346 ], [ - 16.90426, - 48.61947 + 1.5235504, + 51.440346 ], [ - 16.79685, - 48.38561 + 1.5235504, + 51.3331831 ], [ - 17.06762, - 48.01116 + 1.4507565, + 51.3331831 ], [ - 17.32787, - 47.97749 + 1.4507565, + 51.0207553 ], [ - 17.51699, - 47.82535 + 1.0699883, + 51.0207553 ], [ - 17.74776, - 47.73093 + 1.0699883, + 50.9008416 ], [ - 18.29515, - 47.72075 + 0.7788126, + 50.9008416 ], [ - 18.67959, - 47.75541 + 0.7788126, + 50.729843 ], [ - 18.89755, - 47.81203 + -0.7255952, + 50.729843 ], [ - 18.79463, - 47.88245 + -0.7255952, + 50.7038437 ], [ - 18.84318, - 48.04046 + -1.0074383, + 50.7038437 ], [ - 19.46212, - 48.05333 + -1.0074383, + 50.5736307 ], [ - 19.62064, - 48.22938 + -2.3625252, + 50.5736307 ], [ - 19.89585, - 48.09387 + -2.3625252, + 50.4846421 ], [ - 20.33766, - 48.2643 + -2.4987805, + 50.4846421 ], [ - 20.55395, - 48.52358 + -2.4987805, + 50.5736307 ], [ - 20.82335, - 48.55714 + -3.4096378, + 50.5736307 ], [ - 21.10271, - 48.47096 + -3.4096378, + 50.2057837 ], [ - 21.45863, - 48.55513 + -3.6922446, + 50.2057837 ], [ - 21.74536, - 48.31435 + -3.6922446, + 50.1347737 ], [ - 22.15293, - 48.37179 + -5.005468, + 50.1347737 ], [ - 22.61255, - 49.08914 + -5.005468, + 49.9474456 ], [ - 22.09997, - 49.23814 + -5.2839506, + 49.9474456 ], [ - 21.9686, - 49.36363 + -5.2839506, + 50.0229734 + ] + ], + [ + [ + -6.4580707, + 49.8673563 ], [ - 21.6244, - 49.46989 + -6.4580707, + 49.9499935 ], [ - 21.06873, - 49.46402 + -6.3978807, + 49.9499935 ], [ - 20.94336, - 49.31088 + -6.3978807, + 50.0053797 ], [ - 20.73052, - 49.44006 + -6.1799606, + 50.0053797 ], [ - 20.22804, - 49.41714 + -6.1799606, + 49.9168614 ], [ - 20.05234, - 49.23052 + -6.2540201, + 49.9168614 ], [ - 19.83682, - 49.25529 + -6.2540201, + 49.8673563 ] - ] - ], - "terms_url": "http://www.eea.europa.eu/data-and-maps/data/clc-2006-vector-data-version-1", - "terms_text": "EEA Corine 2006" - }, - { - "name": "Slovakia EEA GMES Urban Atlas", - "type": "tms", - "template": "http://www.freemap.sk/tms/urbanatlas/{zoom}/{x}/{y}.png", - "polygon": [ + ], [ [ - 19.83682, - 49.25529 - ], - [ - 19.80075, - 49.42385 + -5.8343165, + 49.932156 ], [ - 19.60437, - 49.48058 + -5.8343165, + 49.9754641 ], [ - 19.49179, - 49.63961 + -5.7683254, + 49.9754641 ], [ - 19.21831, - 49.52604 - ], + -5.7683254, + 49.932156 + ] + ], + [ [ - 19.16778, - 49.42521 + -1.9483797, + 60.6885737 ], [ - 19.00308, - 49.42236 + -1.9483797, + 60.3058841 ], [ - 18.97611, - 49.5308 + -1.7543149, + 60.3058841 ], [ - 18.54685, - 49.51425 + -1.7543149, + 60.1284428 ], [ - 18.31432, - 49.33818 + -1.5754914, + 60.1284428 ], [ - 18.15913, - 49.2961 + -1.5754914, + 59.797917 ], [ - 18.05564, - 49.11134 + -1.0316959, + 59.797917 ], [ - 17.56396, - 48.84938 + -1.0316959, + 60.0354518 ], [ - 17.17929, - 48.88816 + -0.6626918, + 60.0354518 ], [ - 17.058, - 48.81105 + -0.6626918, + 60.9103862 ], [ - 16.90426, - 48.61947 + -1.1034395, + 60.9103862 ], [ - 16.79685, - 48.38561 + -1.1034395, + 60.8040022 ], [ - 17.06762, - 48.01116 + -1.3506319, + 60.8040022 ], [ - 17.32787, - 47.97749 - ], + -1.3506319, + 60.6885737 + ] + ], + [ [ - 17.51699, - 47.82535 + -2.203381, + 60.1968568 ], [ - 17.74776, - 47.73093 + -2.203381, + 60.0929443 ], [ - 18.29515, - 47.72075 + -1.9864011, + 60.0929443 ], [ - 18.67959, - 47.75541 - ], + -1.9864011, + 60.1968568 + ] + ], + [ [ - 18.89755, - 47.81203 + -1.7543149, + 59.5698289 ], [ - 18.79463, - 47.88245 + -1.7543149, + 59.4639383 ], [ - 18.84318, - 48.04046 + -1.5373349, + 59.4639383 ], [ - 19.46212, - 48.05333 - ], + -1.5373349, + 59.5698289 + ] + ], + [ [ - 19.62064, - 48.22938 + -4.5585981, + 59.1370518 ], [ - 19.89585, - 48.09387 + -4.5585981, + 58.9569099 ], [ - 20.33766, - 48.2643 + -4.2867004, + 58.9569099 ], [ - 20.55395, - 48.52358 - ], + -4.2867004, + 59.1370518 + ] + ], + [ [ - 20.82335, - 48.55714 + -6.2787732, + 59.2025744 ], [ - 21.10271, - 48.47096 + -6.2787732, + 59.0227769 ], [ - 21.45863, - 48.55513 + -5.6650612, + 59.0227769 ], [ - 21.74536, - 48.31435 - ], + -5.6650612, + 59.2025744 + ] + ], + [ [ - 22.15293, - 48.37179 + -8.7163482, + 57.9440556 ], [ - 22.61255, - 49.08914 + -8.7163482, + 57.7305936 ], [ - 22.09997, - 49.23814 + -8.3592926, + 57.7305936 ], [ - 21.9686, - 49.36363 - ], + -8.3592926, + 57.9440556 + ] + ], + [ [ - 21.6244, - 49.46989 + -7.6077005, + 50.4021026 ], [ - 21.06873, - 49.46402 + -7.6077005, + 50.2688657 ], [ - 20.94336, - 49.31088 + -7.3907205, + 50.2688657 ], [ - 20.73052, - 49.44006 + -7.3907205, + 50.4021026 + ] + ], + [ + [ + -7.7304303, + 58.3579902 ], [ - 20.22804, - 49.41714 + -7.7304303, + 58.248313 ], [ - 20.05234, - 49.23052 + -7.5134503, + 58.248313 ], [ - 19.83682, - 49.25529 + -7.5134503, + 58.3579902 ] ] - ], - "terms_url": "http://www.eea.europa.eu/data-and-maps/data/urban-atlas", - "terms_text": "EEA GMES Urban Atlas" + ] }, { - "name": "Slovakia Historic Maps", + "name": "OS Scottish Popular historic", "type": "tms", - "template": "http://tms.freemap.sk/historicke/{zoom}/{x}/{y}.png", + "template": "http://ooc.openstreetmap.org/npescotland/tiles/{zoom}/{x}/{y}.jpg", "scaleExtent": [ - 0, - 12 + 6, + 15 ], "polygon": [ [ [ - 16.8196949, - 47.4927236 + -7.8, + 54.5 ], [ - 16.8196949, - 49.5030322 + -7.8, + 61.1 ], [ - 22.8388318, - 49.5030322 + -1.1, + 61.1 ], [ - 22.8388318, - 47.4927236 + -1.1, + 54.5 ], [ - 16.8196949, - 47.4927236 + -7.8, + 54.5 ] ] ] }, { - "name": "South Africa CD:NGI Aerial", + "name": "OpenPT Map (overlay)", "type": "tms", - "template": "http://{switch:a,b,c}.aerial.openstreetmap.org.za/ngi-aerial/{zoom}/{x}/{y}.jpg", + "template": "http://openptmap.de/tiles/{zoom}/{x}/{y}.png", "scaleExtent": [ - 1, - 22 + 5, + 16 ], "polygon": [ [ [ - 17.8396817, - -32.7983384 + 6.4901072, + 53.665658 ], [ - 17.8893509, - -32.6972835 + 8.5665347, + 53.9848257 ], [ - 18.00364, - -32.6982187 + 8.1339457, + 54.709715 ], [ - 18.0991679, - -32.7485251 + 8.317796, + 55.0952362 ], [ - 18.2898747, - -32.5526645 + 10.1887438, + 54.7783834 ], [ - 18.2930182, - -32.0487089 + 10.6321475, + 54.4778841 ], [ - 18.105455, - -31.6454966 + 11.2702164, + 54.6221504 ], [ - 17.8529257, - -31.3443951 + 11.681176, + 54.3709243 ], [ - 17.5480046, - -30.902171 + 12.0272473, + 54.3898199 ], [ - 17.4044506, - -30.6374731 + 13.3250145, + 54.8531617 ], [ - 17.2493704, - -30.3991663 + 13.9198245, + 54.6972173 ], [ - 16.9936977, - -29.6543552 + 14.2118221, + 54.1308273 ], [ - 16.7987996, - -29.19437 + 14.493005, + 53.2665063 ], [ - 16.5494139, - -28.8415949 + 14.1577485, + 52.8766495 ], [ - 16.4498691, - -28.691876 + 14.7525584, + 52.5819369 ], [ - 16.4491046, - -28.5515766 + 15.0986297, + 51.0171541 ], [ - 16.6002551, - -28.4825663 + 14.9364088, + 50.8399279 ], [ - 16.7514057, - -28.4486958 + 14.730929, + 50.7920977 ], [ - 16.7462192, - -28.2458973 + 14.4389313, + 50.8808862 ], [ - 16.8855148, - -28.04729 + 12.9573138, + 50.3939044 ], [ - 16.9929502, - -28.0244005 + 12.51391, + 50.3939044 ], [ - 17.0529659, - -28.0257086 + 12.3084302, + 50.1173237 ], [ - 17.1007562, - -28.0338839 + 12.6112425, + 49.9088337 ], [ - 17.2011527, - -28.0930546 + 12.394948, + 49.7344006 ], [ - 17.2026346, - -28.2328424 + 12.7734634, + 49.4047626 ], [ - 17.2474611, - -28.2338215 + 14.1469337, + 48.6031036 ], [ - 17.2507953, - -28.198892 + 14.6768553, + 48.6531391 ], [ - 17.3511919, - -28.1975861 + 15.0661855, + 49.0445497 ], [ - 17.3515624, - -28.2442655 + 16.2666202, + 48.7459305 ], [ - 17.4015754, - -28.2452446 + 16.4937294, + 48.8741286 ], [ - 17.4149122, - -28.3489751 + 16.904689, + 48.7173975 ], [ - 17.4008345, - -28.547997 + 16.9371332, + 48.5315383 ], [ - 17.4526999, - -28.5489733 + 16.8384693, + 48.3823161 ], [ - 17.4512071, - -28.6495106 + 17.2017097, + 48.010204 ], [ - 17.4983599, - -28.6872054 + 17.1214145, + 47.6997605 ], [ - 17.6028204, - -28.6830048 + 16.777292, + 47.6585709 ], [ - 17.6499732, - -28.6967928 + 16.6090543, + 47.7460598 ], [ - 17.6525928, - -28.7381457 + 16.410228, + 47.6637214 ], [ - 17.801386, - -28.7381457 + 16.7352326, + 47.6147714 ], [ - 17.9994276, - -28.7560602 + 16.5555242, + 47.3589738 ], [ - 18.0002748, - -28.7956172 + 16.4790525, + 46.9768539 ], [ - 18.1574507, - -28.8718055 + 16.0355168, + 46.8096295 ], [ - 18.5063811, - -28.8718055 + 16.0508112, + 46.6366332 ], [ - 18.6153564, - -28.8295875 + 14.9572663, + 46.6313822 ], [ - 18.9087513, - -28.8277516 + 14.574908, + 46.3892866 ], [ - 19.1046973, - -28.9488548 + 12.3954655, + 46.6891149 ], [ - 19.1969071, - -28.9378513 + 12.1507562, + 47.0550608 ], [ - 19.243012, - -28.8516164 + 11.1183887, + 46.9142058 ], [ - 19.2314858, - -28.802963 + 11.0342699, + 46.7729797 ], [ - 19.2587296, - -28.7009928 + 10.4836739, + 46.8462544 ], [ - 19.4431493, - -28.6973163 + 10.4607324, + 46.5472973 ], [ - 19.5500289, - -28.4958332 + 10.1013156, + 46.5735879 ], [ - 19.6967264, - -28.4939914 + 10.2007287, + 46.1831867 ], [ - 19.698822, - -28.4479358 + 9.8948421, + 46.3629068 ], [ - 19.8507587, - -28.4433291 + 9.5966026, + 46.2889758 ], [ - 19.8497109, - -28.4027818 + 9.2983631, + 46.505206 ], [ - 19.9953605, - -28.399095 + 9.2830687, + 46.2572605 ], [ - 19.9893671, - -24.7497859 + 9.0536537, + 45.7953255 ], [ - 20.2916682, - -24.9192346 + 8.4265861, + 46.2466846 ], [ - 20.4724562, - -25.1501701 + 8.4418804, + 46.4736161 ], [ - 20.6532441, - -25.4529449 + 7.8759901, + 45.9284607 ], [ - 20.733265, - -25.6801957 + 7.0959791, + 45.8645956 ], [ - 20.8281046, - -25.8963498 + 6.7747981, + 46.1620044 ], [ - 20.8429232, - -26.215851 + 6.8206811, + 46.4051083 ], [ - 20.6502804, - -26.4840868 + 6.5453831, + 46.4578142 ], [ - 20.6532441, - -26.8204869 + 6.3312624, + 46.3840116 ], [ - 21.0889134, - -26.846933 + 6.3847926, + 46.2466846 ], [ - 21.6727695, - -26.8389998 + 5.8953739, + 46.0878021 ], [ - 21.7765003, - -26.6696268 + 6.1171418, + 46.3681838 ], [ - 21.9721069, - -26.6431395 + 6.0942003, + 46.5998657 ], [ - 22.2803355, - -26.3274702 + 6.4383228, + 46.7782169 ], [ - 22.5707817, - -26.1333967 + 6.4306756, + 46.9298747 ], [ - 22.7752795, - -25.6775246 + 7.0806847, + 47.3460216 ], [ - 23.0005235, - -25.2761948 + 6.8436226, + 47.3719227 ], [ - 23.4658301, - -25.2735148 + 6.9965659, + 47.5012373 ], [ - 23.883717, - -25.597366 + 7.1800979, + 47.5064033 ], [ - 24.2364017, - -25.613402 + 7.2336281, + 47.439206 ], [ - 24.603905, - -25.7896563 + 7.4553959, + 47.4805683 ], [ - 25.110704, - -25.7389432 + 7.7842241, + 48.645735 ], [ - 25.5078447, - -25.6855376 + 8.1971711, + 49.0282701 ], [ - 25.6441766, - -25.4823781 + 7.6006921, + 49.0382974 ], [ - 25.8419267, - -24.7805437 + 7.4477487, + 49.1634679 ], [ - 25.846641, - -24.7538456 + 7.2030394, + 49.1034255 ], [ - 26.3928487, - -24.6332894 + 6.6677378, + 49.1634679 ], [ - 26.4739066, - -24.5653312 + 6.6371491, + 49.3331933 ], [ - 26.5089966, - -24.4842437 + 6.3542039, + 49.4576194 ], [ - 26.5861946, - -24.4075775 + 6.5453831, + 49.8043366 ], [ - 26.7300635, - -24.3014458 + 6.2471436, + 49.873384 ], [ - 26.8567384, - -24.2499463 + 6.0789059, + 50.1534883 ], [ - 26.8574402, - -24.1026901 + 6.3618511, + 50.3685934 ], [ - 26.9215471, - -23.8990957 + 6.0865531, + 50.7039632 ], [ - 26.931831, - -23.8461891 + 5.8800796, + 51.0513752 ], [ - 26.9714827, - -23.6994344 + 6.1247889, + 51.1618085 ], [ - 27.0006074, - -23.6367644 + 6.1936134, + 51.491527 ], [ - 27.0578041, - -23.6052574 + 5.9641984, + 51.7526501 ], [ - 27.1360547, - -23.5203437 + 6.0253758, + 51.8897286 ], [ - 27.3339623, - -23.3973792 + 6.4536171, + 51.8661241 ], [ - 27.5144057, - -23.3593929 + 6.8436226, + 51.9557552 ], [ - 27.5958145, - -23.2085465 + 6.6906793, + 52.0499105 ], [ - 27.8098634, - -23.0994957 + 7.0042131, + 52.2282603 ], [ - 27.8828506, - -23.0620496 + 7.0195074, + 52.4525245 ], [ - 27.9382928, - -22.9496487 + 6.6983264, + 52.4665032 ], [ - 28.0407556, - -22.8255118 + 6.6906793, + 52.6524628 ], [ - 28.2056786, - -22.6552861 + 7.0348017, + 52.6385432 ], [ - 28.3397223, - -22.5639374 + 7.0730376, + 52.8330151 ], [ - 28.4906093, - -22.560697 + 7.2183337, + 52.9852064 ], [ - 28.6108769, - -22.5400248 + 7.1953922, + 53.3428087 ], [ - 28.828175, - -22.4550173 - ], + 7.0042131, + 53.3291098 + ] + ] + ], + "terms_url": "http://openstreetmap.org/", + "terms_text": "© OpenStreetMap contributors, CC-BY-SA" + }, + { + "name": "OpenStreetMap (Mapnik)", + "type": "tms", + "description": "The default OpenStreetMap layer.", + "template": "http://tile.openstreetmap.org/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 18 + ], + "terms_url": "http://openstreetmap.org/", + "terms_text": "© OpenStreetMap contributors, CC-BY-SA", + "default": true + }, + { + "name": "OpenStreetMap GPS traces", + "type": "tms", + "description": "Public GPS traces uploaded to OpenStreetMap.", + "template": "http://{switch:a,b,c}.gps-tile.openstreetmap.org/lines/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 20 + ], + "terms_url": "http://www.openstreetmap.org/copyright", + "terms_text": "© OpenStreetMap contributors", + "terms_html": "© OpenStreetMap contributors. North: South: East: West: ", + "overlay": true + }, + { + "name": "Pangasinán/Bulacan (Phillipines HiRes)", + "type": "tms", + "template": "http://gravitystorm.dev.openstreetmap.org/imagery/philippines/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 12, + 19 + ], + "polygon": [ + [ [ - 28.9285324, - -22.4232328 + 120.336593, + 15.985768 ], [ - 28.9594116, - -22.3090081 + 120.445995, + 15.984 ], [ - 29.0162574, - -22.208335 + 120.446134, + 15.974459 ], [ - 29.2324117, - -22.1693453 + 120.476464, + 15.974592 ], [ - 29.3531213, - -22.1842926 + 120.594247, + 15.946832 ], [ - 29.6548952, - -22.1186426 + 120.598064, + 16.090795 ], [ - 29.7777102, - -22.1361956 + 120.596537, + 16.197999 ], [ - 29.9292989, - -22.1849425 + 120.368537, + 16.218527 ], [ - 30.1166795, - -22.2830348 + 120.347576, + 16.042308 ], [ - 30.2563377, - -22.2914767 - ], + 120.336593, + 15.985768 + ] + ], + [ [ - 30.3033582, - -22.3395204 + 120.8268, + 15.3658 ], [ - 30.5061784, - -22.3057617 + 121.2684, + 15.2602 ], [ - 30.8374279, - -22.284983 + 121.2699, + 14.7025 ], [ - 31.0058599, - -22.3077095 - ], + 120.695, + 14.8423 + ] + ] + ] + }, + { + "name": "Slovakia EEA CORINE 2006", + "type": "tms", + "template": "http://www.freemap.sk/tms/clc/{zoom}/{x}/{y}.png", + "polygon": [ + [ [ - 31.1834152, - -22.3232913 + 19.83682, + 49.25529 ], [ - 31.2930586, - -22.3674647 + 19.80075, + 49.42385 ], [ - 31.5680579, - -23.1903385 + 19.60437, + 49.48058 ], [ - 31.5568311, - -23.4430809 + 19.49179, + 49.63961 ], [ - 31.6931122, - -23.6175209 + 19.21831, + 49.52604 ], [ - 31.7119696, - -23.741136 + 19.16778, + 49.42521 ], [ - 31.7774743, - -23.8800628 + 19.00308, + 49.42236 ], [ - 31.8886337, - -23.9481098 + 18.97611, + 49.5308 ], [ - 31.9144386, - -24.1746736 + 18.54685, + 49.51425 ], [ - 31.9948307, - -24.3040878 + 18.31432, + 49.33818 ], [ - 32.0166656, - -24.4405988 + 18.15913, + 49.2961 ], [ - 32.0077331, - -24.6536578 + 18.05564, + 49.11134 ], [ - 32.019643, - -24.9140701 + 17.56396, + 48.84938 ], [ - 32.035523, - -25.0849767 + 17.17929, + 48.88816 ], [ - 32.019643, - -25.3821442 + 17.058, + 48.81105 ], [ - 31.9928457, - -25.4493771 + 16.90426, + 48.61947 ], [ - 31.9997931, - -25.5165725 + 16.79685, + 48.38561 ], [ - 32.0057481, - -25.6078978 + 17.06762, + 48.01116 ], [ - 32.0057481, - -25.6624806 + 17.32787, + 47.97749 ], [ - 31.9362735, - -25.8403721 + 17.51699, + 47.82535 ], [ - 31.9809357, - -25.9546537 + 17.74776, + 47.73093 ], [ - 31.8687838, - -26.0037251 + 18.29515, + 47.72075 ], [ - 31.4162062, - -25.7277683 + 18.67959, + 47.75541 ], [ - 31.3229117, - -25.7438611 + 18.89755, + 47.81203 ], [ - 31.2504595, - -25.8296526 + 18.79463, + 47.88245 ], [ - 31.1393001, - -25.9162746 + 18.84318, + 48.04046 ], [ - 31.1164727, - -25.9912361 + 19.46212, + 48.05333 ], [ - 30.9656135, - -26.2665756 + 19.62064, + 48.22938 ], [ - 30.8921689, - -26.3279703 + 19.89585, + 48.09387 ], [ - 30.8534616, - -26.4035568 + 20.33766, + 48.2643 ], [ - 30.8226943, - -26.4488849 + 20.55395, + 48.52358 ], [ - 30.8022583, - -26.5240694 + 20.82335, + 48.55714 ], [ - 30.8038369, - -26.8082089 + 21.10271, + 48.47096 ], [ - 30.9020939, - -26.7807451 + 21.45863, + 48.55513 ], [ - 30.9100338, - -26.8489495 + 21.74536, + 48.31435 ], [ - 30.9824859, - -26.9082627 + 22.15293, + 48.37179 ], [ - 30.976531, - -27.0029222 + 22.61255, + 49.08914 ], [ - 31.0034434, - -27.0441587 + 22.09997, + 49.23814 ], [ - 31.1543322, - -27.1980416 + 21.9686, + 49.36363 ], [ - 31.5015607, - -27.311117 + 21.6244, + 49.46989 ], [ - 31.9700183, - -27.311117 + 21.06873, + 49.46402 ], [ - 31.9700183, - -27.120472 + 20.94336, + 49.31088 ], [ - 31.9769658, - -27.050664 + 20.73052, + 49.44006 ], [ - 32.0002464, - -26.7983892 + 20.22804, + 49.41714 ], [ - 32.1069826, - -26.7984645 + 20.05234, + 49.23052 ], [ - 32.3114546, - -26.8479493 + 19.83682, + 49.25529 + ] + ] + ], + "terms_url": "http://www.eea.europa.eu/data-and-maps/data/clc-2006-vector-data-version-1", + "terms_text": "EEA Corine 2006" + }, + { + "name": "Slovakia EEA GMES Urban Atlas", + "type": "tms", + "template": "http://www.freemap.sk/tms/urbanatlas/{zoom}/{x}/{y}.png", + "polygon": [ + [ + [ + 19.83682, + 49.25529 ], [ - 32.899986, - -26.8516059 + 19.80075, + 49.42385 ], [ - 32.886091, - -26.9816971 + 19.60437, + 49.48058 ], [ - 32.709427, - -27.4785436 + 19.49179, + 49.63961 ], [ - 32.6240724, - -27.7775144 + 19.21831, + 49.52604 ], [ - 32.5813951, - -28.07479 + 19.16778, + 49.42521 ], [ - 32.5387178, - -28.2288046 + 19.00308, + 49.42236 ], [ - 32.4275584, - -28.5021568 + 18.97611, + 49.5308 ], [ - 32.3640388, - -28.5945699 + 18.54685, + 49.51425 ], [ - 32.0702603, - -28.8469827 + 18.31432, + 49.33818 ], [ - 31.9878832, - -28.9069497 + 18.15913, + 49.2961 ], [ - 31.7764818, - -28.969487 + 18.05564, + 49.11134 ], [ - 31.4638459, - -29.2859343 + 17.56396, + 48.84938 ], [ - 31.359634, - -29.3854348 + 17.17929, + 48.88816 ], [ - 31.1680825, - -29.6307408 + 17.058, + 48.81105 ], [ - 31.064863, - -29.7893535 + 16.90426, + 48.61947 ], [ - 31.0534493, - -29.8470469 + 16.79685, + 48.38561 ], [ - 31.0669933, - -29.8640319 + 17.06762, + 48.01116 ], [ - 31.0455459, - -29.9502017 + 17.32787, + 47.97749 ], [ - 30.9518556, - -30.0033946 + 17.51699, + 47.82535 ], [ - 30.8651833, - -30.1024093 + 17.74776, + 47.73093 ], [ - 30.7244725, - -30.392502 + 18.29515, + 47.72075 ], [ - 30.3556256, - -30.9308873 + 18.67959, + 47.75541 ], [ - 30.0972364, - -31.2458274 + 18.89755, + 47.81203 ], [ - 29.8673136, - -31.4304296 + 18.79463, + 47.88245 ], [ - 29.7409393, - -31.5014699 + 18.84318, + 48.04046 ], [ - 29.481312, - -31.6978686 + 19.46212, + 48.05333 ], [ - 28.8943171, - -32.2898903 + 19.62064, + 48.22938 ], [ - 28.5497137, - -32.5894641 + 19.89585, + 48.09387 ], [ - 28.1436499, - -32.8320732 + 20.33766, + 48.2643 ], [ - 28.0748735, - -32.941689 + 20.55395, + 48.52358 ], [ - 27.8450942, - -33.082869 + 20.82335, + 48.55714 ], [ - 27.3757956, - -33.3860685 + 21.10271, + 48.47096 ], [ - 26.8805407, - -33.6458951 + 21.45863, + 48.55513 ], [ - 26.5916871, - -33.7480756 + 21.74536, + 48.31435 ], [ - 26.4527308, - -33.7935795 + 22.15293, + 48.37179 ], [ - 26.206754, - -33.7548943 + 22.61255, + 49.08914 ], [ - 26.0077897, - -33.7223961 + 22.09997, + 49.23814 ], [ - 25.8055494, - -33.7524272 + 21.9686, + 49.36363 ], [ - 25.7511073, - -33.8006512 + 21.6244, + 49.46989 ], [ - 25.6529079, - -33.8543597 + 21.06873, + 49.46402 ], [ - 25.6529079, - -33.9469768 + 20.94336, + 49.31088 ], [ - 25.7195789, - -34.0040115 + 20.73052, + 49.44006 ], [ - 25.7202807, - -34.0511235 + 20.22804, + 49.41714 ], [ - 25.5508915, - -34.063151 + 20.05234, + 49.23052 ], [ - 25.3504571, - -34.0502627 - ], + 19.83682, + 49.25529 + ] + ] + ], + "terms_url": "http://www.eea.europa.eu/data-and-maps/data/urban-atlas", + "terms_text": "EEA GMES Urban Atlas" + }, + { + "name": "Slovakia Historic Maps", + "type": "tms", + "template": "http://tms.freemap.sk/historicke/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 12 + ], + "polygon": [ + [ [ - 25.2810609, - -34.0020322 + 16.8196949, + 47.4927236 ], [ - 25.0476316, - -33.9994588 + 16.8196949, + 49.5030322 ], [ - 24.954724, - -34.0043594 + 22.8388318, + 49.5030322 ], [ - 24.9496586, - -34.1010363 + 22.8388318, + 47.4927236 ], [ - 24.8770358, - -34.1506456 - ], + 16.8196949, + 47.4927236 + ] + ] + ] + }, + { + "name": "South Africa CD:NGI Aerial", + "type": "tms", + "template": "http://{switch:a,b,c}.aerial.openstreetmap.org.za/ngi-aerial/{zoom}/{x}/{y}.jpg", + "scaleExtent": [ + 1, + 22 + ], + "polygon": [ + [ [ - 24.8762914, - -34.2005281 + 17.8396817, + -32.7983384 ], [ - 24.8532574, - -34.2189562 + 17.8893509, + -32.6972835 ], [ - 24.7645287, - -34.2017946 + 18.00364, + -32.6982187 ], [ - 24.5001356, - -34.2003254 + 18.0991679, + -32.7485251 ], [ - 24.3486733, - -34.1163824 + 18.2898747, + -32.5526645 ], [ - 24.1988819, - -34.1019039 + 18.2930182, + -32.0487089 ], [ - 23.9963377, - -34.0514443 + 18.105455, + -31.6454966 ], [ - 23.8017509, - -34.0524332 + 17.8529257, + -31.3443951 ], [ - 23.7493589, - -34.0111855 + 17.5480046, + -30.902171 ], [ - 23.4973536, - -34.009014 + 17.4044506, + -30.6374731 ], [ - 23.4155191, - -34.0434586 + 17.2493704, + -30.3991663 ], [ - 23.4154284, - -34.1140433 + 16.9936977, + -29.6543552 ], [ - 22.9000853, - -34.0993009 + 16.7987996, + -29.19437 ], [ - 22.8412418, - -34.0547911 + 16.5494139, + -28.8415949 ], [ - 22.6470321, - -34.0502627 + 16.4498691, + -28.691876 ], [ - 22.6459843, - -34.0072768 + 16.4491046, + -28.5515766 ], [ - 22.570016, - -34.0064081 + 16.6002551, + -28.4825663 ], [ - 22.5050499, - -34.0645866 + 16.7514057, + -28.4486958 ], [ - 22.2519968, - -34.0645866 + 16.7462192, + -28.2458973 ], [ - 22.2221334, - -34.1014701 + 16.8855148, + -28.04729 ], [ - 22.1621197, - -34.1057019 + 16.9929502, + -28.0244005 ], [ - 22.1712431, - -34.1521766 + 17.0529659, + -28.0257086 ], [ - 22.1576913, - -34.2180897 + 17.1007562, + -28.0338839 ], [ - 22.0015632, - -34.2172232 + 17.2011527, + -28.0930546 ], [ - 21.9496952, - -34.3220009 + 17.2026346, + -28.2328424 ], [ - 21.8611528, - -34.4007145 + 17.2474611, + -28.2338215 ], [ - 21.5614708, - -34.4020114 + 17.2507953, + -28.198892 ], [ - 21.5468011, - -34.3661242 + 17.3511919, + -28.1975861 ], [ - 21.501744, - -34.3669892 + 17.3515624, + -28.2442655 ], [ - 21.5006961, - -34.4020114 + 17.4015754, + -28.2452446 ], [ - 21.4194886, - -34.4465247 + 17.4149122, + -28.3489751 ], [ - 21.1978706, - -34.4478208 + 17.4008345, + -28.547997 ], [ - 21.0988193, - -34.3991325 + 17.4526999, + -28.5489733 ], [ - 21.0033746, - -34.3753872 + 17.4512071, + -28.6495106 ], [ - 20.893192, - -34.3997115 + 17.4983599, + -28.6872054 ], [ - 20.8976647, - -34.4854003 + 17.6028204, + -28.6830048 ], [ - 20.7446802, - -34.4828092 + 17.6499732, + -28.6967928 ], [ - 20.5042011, - -34.486264 + 17.6525928, + -28.7381457 ], [ - 20.2527197, - -34.701477 + 17.801386, + -28.7381457 ], [ - 20.0803502, - -34.8361855 + 17.9994276, + -28.7560602 ], [ - 19.9923317, - -34.8379056 + 18.0002748, + -28.7956172 ], [ - 19.899074, - -34.8275845 + 18.1574507, + -28.8718055 ], [ - 19.8938348, - -34.7936018 + 18.5063811, + -28.8718055 ], [ - 19.5972963, - -34.7961833 + 18.6153564, + -28.8295875 ], [ - 19.3929677, - -34.642015 + 18.9087513, + -28.8277516 ], [ - 19.2877095, - -34.6404784 + 19.1046973, + -28.9488548 ], [ - 19.2861377, - -34.5986563 + 19.1969071, + -28.9378513 ], [ - 19.3474363, - -34.5244458 + 19.243012, + -28.8516164 ], [ - 19.3285256, - -34.4534372 + 19.2314858, + -28.802963 ], [ - 19.098001, - -34.449981 + 19.2587296, + -28.7009928 ], [ - 19.0725583, - -34.3802371 + 19.4431493, + -28.6973163 ], [ - 19.0023531, - -34.3525593 + 19.5500289, + -28.4958332 ], [ - 18.9520568, - -34.3949373 + 19.6967264, + -28.4939914 ], [ - 18.7975006, - -34.3936403 + 19.698822, + -28.4479358 ], [ - 18.7984174, - -34.1016376 + 19.8507587, + -28.4433291 ], [ - 18.501748, - -34.1015292 + 19.8497109, + -28.4027818 ], [ - 18.4999545, - -34.3616945 + 19.9953605, + -28.399095 ], [ - 18.4477325, - -34.3620007 + 19.9893671, + -24.7497859 ], [ - 18.4479944, - -34.3522691 + 20.2916682, + -24.9192346 ], [ - 18.3974362, - -34.3514041 + 20.4724562, + -25.1501701 ], [ - 18.3971742, - -34.3022959 + 20.6532441, + -25.4529449 ], [ - 18.3565705, - -34.3005647 + 20.733265, + -25.6801957 ], [ - 18.3479258, - -34.2020436 + 20.8281046, + -25.8963498 ], [ - 18.2972095, - -34.1950274 + 20.8429232, + -26.215851 ], [ - 18.2951139, - -33.9937138 + 20.6502804, + -26.4840868 ], [ - 18.3374474, - -33.9914079 + 20.6532441, + -26.8204869 ], [ - 18.3476638, - -33.8492427 + 21.0889134, + -26.846933 ], [ - 18.3479258, - -33.781555 + 21.6727695, + -26.8389998 ], [ - 18.4124718, - -33.7448849 + 21.7765003, + -26.6696268 ], [ - 18.3615477, - -33.6501624 + 21.9721069, + -26.6431395 ], [ - 18.2992013, - -33.585591 + 22.2803355, + -26.3274702 ], [ - 18.2166839, - -33.448872 + 22.5707817, + -26.1333967 ], [ - 18.1389858, - -33.3974083 + 22.7752795, + -25.6775246 ], [ - 17.9473472, - -33.1602647 + 23.0005235, + -25.2761948 ], [ - 17.8855247, - -33.0575732 + 23.4658301, + -25.2735148 ], [ - 17.8485884, - -32.9668505 + 23.883717, + -25.597366 ], [ - 17.8396817, - -32.8507302 - ] - ] - ] - }, - { - "name": "Stadt Uster Orthophoto 2008 10cm", - "type": "tms", - "template": "http://mapproxy.sosm.ch:8080/tiles/uster/EPSG900913/{zoom}/{x}/{y}.png?origin=nw", - "polygon": [ - [ - [ - 8.6, - 47.31 + 24.2364017, + -25.613402 ], [ - 8.6, - 47.39 + 24.603905, + -25.7896563 ], [ - 8.77, - 47.39 + 25.110704, + -25.7389432 ], [ - 8.77, - 47.31 + 25.5078447, + -25.6855376 ], [ - 8.6, - 47.31 - ] - ] - ], - "terms_text": "Stadt Uster Vermessung Orthophoto 2008" - }, - { - "name": "Stevns (Denmark)", - "type": "tms", - "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/stevns/2009/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 0, - 20 - ], - "polygon": [ - [ + 25.6441766, + -25.4823781 + ], [ - 12.0913942, - 55.3491574 + 25.8419267, + -24.7805437 ], [ - 12.0943104, - 55.3842256 + 25.846641, + -24.7538456 ], [ - 12.1573875, - 55.3833103 + 26.3928487, + -24.6332894 ], [ - 12.1587287, - 55.4013326 + 26.4739066, + -24.5653312 ], [ - 12.1903468, - 55.400558 + 26.5089966, + -24.4842437 ], [ - 12.1931411, - 55.4364665 + 26.5861946, + -24.4075775 ], [ - 12.2564251, - 55.4347995 + 26.7300635, + -24.3014458 ], [ - 12.2547073, - 55.4168882 + 26.8567384, + -24.2499463 ], [ - 12.3822489, - 55.4134349 + 26.8574402, + -24.1026901 ], [ - 12.3795942, - 55.3954143 + 26.9215471, + -23.8990957 ], [ - 12.4109213, - 55.3946958 + 26.931831, + -23.8461891 ], [ - 12.409403, - 55.3766417 + 26.9714827, + -23.6994344 ], [ - 12.4407807, - 55.375779 + 27.0006074, + -23.6367644 ], [ - 12.4394142, - 55.3578314 + 27.0578041, + -23.6052574 ], [ - 12.4707413, - 55.3569971 + 27.1360547, + -23.5203437 ], [ - 12.4629475, - 55.2672214 + 27.3339623, + -23.3973792 ], [ - 12.4315633, - 55.2681491 + 27.5144057, + -23.3593929 ], [ - 12.430045, - 55.2502103 + 27.5958145, + -23.2085465 ], [ - 12.3672011, - 55.2519673 + 27.8098634, + -23.0994957 ], [ - 12.3656858, - 55.2340267 + 27.8828506, + -23.0620496 ], [ - 12.2714604, - 55.2366031 + 27.9382928, + -22.9496487 ], [ - 12.2744467, - 55.272476 + 28.0407556, + -22.8255118 ], [ - 12.2115654, - 55.2741475 + 28.2056786, + -22.6552861 ], [ - 12.2130078, - 55.2920322 + 28.3397223, + -22.5639374 ], [ - 12.1815665, - 55.2928638 + 28.4906093, + -22.560697 ], [ - 12.183141, - 55.3107091 + 28.6108769, + -22.5400248 ], [ - 12.2144897, - 55.3100981 + 28.828175, + -22.4550173 ], [ - 12.2159927, - 55.3279764 + 28.9285324, + -22.4232328 ], [ - 12.1214458, - 55.3303379 + 28.9594116, + -22.3090081 ], [ - 12.1229489, - 55.3483291 - ] - ] - ], - "terms_text": "Stevns Kommune" - }, - { - "name": "Surrey Air Survey", - "type": "tms", - "template": "http://gravitystorm.dev.openstreetmap.org/surrey/{zoom}/{x}/{y}.png", - "polygon": [ - [ - [ - -0.856, - 51.071 + 29.0162574, + -22.208335 ], [ - -0.856, - 51.473 + 29.2324117, + -22.1693453 ], [ - 0.062, - 51.473 + 29.3531213, + -22.1842926 ], [ - 0.062, - 51.071 + 29.6548952, + -22.1186426 ], [ - -0.856, - 51.071 - ] - ] - ] - }, - { - "name": "TIGER 2012 Roads Overlay", - "type": "tms", - "description": "Public domain road data from the US Government.", - "template": "http://{switch:a,b,c}.tile.openstreetmap.us/tiger2012_roads_expanded/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 16, - 19 - ], - "polygon": [ - [ - [ - -124.7617886, - 48.4130148 + 29.7777102, + -22.1361956 ], [ - -124.6059492, - 45.90245 + 29.9292989, + -22.1849425 ], [ - -124.9934269, - 40.0557614 + 30.1166795, + -22.2830348 ], [ - -122.5369737, - 36.8566086 + 30.2563377, + -22.2914767 ], [ - -119.9775867, - 33.0064099 + 30.3033582, + -22.3395204 ], [ - -117.675935, - 32.4630223 + 30.5061784, + -22.3057617 ], [ - -114.8612307, - 32.4799891 + 30.8374279, + -22.284983 ], [ - -111.0089311, - 31.336015 + 31.0058599, + -22.3077095 ], [ - -108.1992687, - 31.3260016 + 31.1834152, + -22.3232913 ], [ - -108.1871123, - 31.7755116 + 31.2930586, + -22.3674647 ], [ - -106.5307225, - 31.7820947 + 31.5680579, + -23.1903385 ], [ - -106.4842052, - 31.7464455 + 31.5568311, + -23.4430809 ], [ - -106.429317, - 31.7520583 + 31.6931122, + -23.6175209 ], [ - -106.2868855, - 31.5613291 + 31.7119696, + -23.741136 ], [ - -106.205248, - 31.446704 + 31.7774743, + -23.8800628 ], [ - -105.0205259, - 30.5360988 + 31.8886337, + -23.9481098 ], [ - -104.5881916, - 29.6997856 + 31.9144386, + -24.1746736 ], [ - -103.2518856, - 28.8908685 + 31.9948307, + -24.3040878 ], [ - -102.7173632, - 29.3920567 + 32.0166656, + -24.4405988 ], [ - -102.1513983, - 29.7475702 + 32.0077331, + -24.6536578 ], [ - -101.2552871, - 29.4810523 + 32.019643, + -24.9140701 ], [ - -100.0062436, - 28.0082173 + 32.035523, + -25.0849767 ], [ - -99.2351068, - 26.4475962 + 32.019643, + -25.3821442 ], [ - -98.0109067, - 25.9928035 + 31.9928457, + -25.4493771 ], [ - -97.435024, - 25.8266009 + 31.9997931, + -25.5165725 ], [ - -96.9555259, - 25.9821589 + 32.0057481, + -25.6078978 ], [ - -96.8061741, - 27.7978168 + 32.0057481, + -25.6624806 ], [ - -95.5563349, - 28.5876066 + 31.9362735, + -25.8403721 ], [ - -93.7405308, - 29.4742093 + 31.9809357, + -25.9546537 ], [ - -90.9028456, - 28.8564513 + 31.8687838, + -26.0037251 ], [ - -88.0156706, - 28.9944338 + 31.4162062, + -25.7277683 ], [ - -88.0162494, - 30.0038862 + 31.3229117, + -25.7438611 ], [ - -86.0277506, - 30.0047454 + 31.2504595, + -25.8296526 ], [ - -84.0187909, - 28.9961781 + 31.1393001, + -25.9162746 ], [ - -81.9971976, - 25.9826768 + 31.1164727, + -25.9912361 ], [ - -81.9966618, - 25.0134917 + 30.9656135, + -26.2665756 ], [ - -84.0165592, - 25.0125783 + 30.8921689, + -26.3279703 ], [ - -84.0160068, - 24.0052745 + 30.8534616, + -26.4035568 ], [ - -80.0199985, - 24.007096 + 30.8226943, + -26.4488849 ], [ - -79.8901116, - 26.8550713 + 30.8022583, + -26.5240694 ], [ - -80.0245309, - 32.0161282 + 30.8038369, + -26.8082089 ], [ - -75.4147385, - 35.0531894 + 30.9020939, + -26.7807451 ], [ - -74.0211163, - 39.5727927 + 30.9100338, + -26.8489495 ], [ - -72.002019, - 40.9912464 + 30.9824859, + -26.9082627 ], [ - -69.8797398, - 40.9920457 + 30.976531, + -27.0029222 ], [ - -69.8489304, - 43.2619916 + 31.0034434, + -27.0441587 ], [ - -66.9452845, - 44.7104937 + 31.1543322, + -27.1980416 ], [ - -67.7596632, - 47.0990024 + 31.5015607, + -27.311117 ], [ - -69.2505131, - 47.5122328 + 31.9700183, + -27.311117 ], [ - -70.4614886, - 46.2176574 + 31.9700183, + -27.120472 ], [ - -71.412273, - 45.254878 + 31.9769658, + -27.050664 ], [ - -72.0222508, - 45.0059846 + 32.0002464, + -26.7983892 ], [ - -75.0798841, - 44.9802854 + 32.1069826, + -26.7984645 ], [ - -76.9023061, - 43.8024568 + 32.3114546, + -26.8479493 ], [ - -78.7623935, - 43.6249578 + 32.899986, + -26.8516059 ], [ - -79.15798, - 43.4462589 + 32.886091, + -26.9816971 ], [ - -79.0060087, - 42.8005317 + 32.709427, + -27.4785436 ], [ - -82.662475, - 41.6889458 + 32.6240724, + -27.7775144 ], [ - -82.1761642, - 43.588535 + 32.5813951, + -28.07479 ], [ - -83.2813977, - 46.138853 + 32.5387178, + -28.2288046 ], [ - -87.5064535, - 48.0142702 + 32.4275584, + -28.5021568 ], [ - -88.3492194, - 48.2963271 + 32.3640388, + -28.5945699 ], [ - -89.4353148, - 47.9837822 + 32.0702603, + -28.8469827 ], [ - -93.9981078, - 49.0067142 + 31.9878832, + -28.9069497 ], [ - -95.1105379, - 49.412004 + 31.7764818, + -28.969487 ], [ - -96.0131199, - 49.0060547 + 31.4638459, + -29.2859343 ], [ - -123.3228926, - 49.0042878 + 31.359634, + -29.3854348 ], [ - -123.2275233, - 48.1849927 - ] - ], - [ - [ - -160.5787616, - 22.5062947 + 31.1680825, + -29.6307408 ], [ - -160.5782192, - 21.4984647 + 31.064863, + -29.7893535 ], [ - -158.7470604, - 21.2439843 + 31.0534493, + -29.8470469 ], [ - -157.5083185, - 20.995803 + 31.0669933, + -29.8640319 ], [ - -155.9961942, - 18.7790194 + 31.0455459, + -29.9502017 ], [ - -154.6217803, - 18.7586966 + 30.9518556, + -30.0033946 ], [ - -154.6890176, - 19.8805722 + 30.8651833, + -30.1024093 ], [ - -156.2927622, - 21.2225888 + 30.7244725, + -30.392502 ], [ - -157.5047384, - 21.9984962 + 30.3556256, + -30.9308873 ], [ - -159.0093692, - 22.5070181 - ] - ], - [ - [ - -167.1571546, - 68.721974 + 30.0972364, + -31.2458274 ], [ - -164.8553982, - 67.0255078 + 29.8673136, + -31.4304296 ], [ - -168.002195, - 66.0017503 + 29.7409393, + -31.5014699 ], [ - -169.0087448, - 66.001546 + 29.481312, + -31.6978686 ], [ - -169.0075381, - 64.9987675 + 28.8943171, + -32.2898903 ], [ - -172.5143281, - 63.8767267 + 28.5497137, + -32.5894641 ], [ - -173.8197023, - 59.74014 + 28.1436499, + -32.8320732 ], [ - -162.5018149, - 58.0005815 + 28.0748735, + -32.941689 ], [ - -160.0159024, - 58.0012389 + 27.8450942, + -33.082869 ], [ - -160.0149725, - 57.000035 + 27.3757956, + -33.3860685 ], [ - -160.5054788, - 56.9999017 + 26.8805407, + -33.6458951 ], [ - -165.8092575, - 54.824847 + 26.5916871, + -33.7480756 ], [ - -178.000097, - 52.2446469 + 26.4527308, + -33.7935795 ], [ - -177.9992996, - 51.2554252 + 26.206754, + -33.7548943 ], [ - -171.4689067, - 51.8215329 + 26.0077897, + -33.7223961 ], [ - -162.40251, - 53.956664 + 25.8055494, + -33.7524272 ], [ - -159.0075717, - 55.002502 + 25.7511073, + -33.8006512 ], [ - -158.0190709, - 55.0027849 + 25.6529079, + -33.8543597 ], [ - -151.9963213, - 55.9991902 + 25.6529079, + -33.9469768 ], [ - -151.500341, - 57.9987853 + 25.7195789, + -34.0040115 ], [ - -151.5012894, - 58.9919816 + 25.7202807, + -34.0511235 ], [ - -138.5159989, - 58.9953194 + 25.5508915, + -34.063151 ], [ - -138.5150471, - 57.9986434 + 25.3504571, + -34.0502627 ], [ - -133.9948193, - 54.0031685 + 25.2810609, + -34.0020322 ], [ - -130.0044418, - 54.0043387 + 25.0476316, + -33.9994588 ], [ - -130.0070826, - 57.0000507 + 24.954724, + -34.0043594 ], [ - -131.975877, - 56.9995156 - ], - [ - -135.1229873, - 59.756601 - ], - [ - -138.0071813, - 59.991805 - ], - [ - -139.1715881, - 60.4127229 - ], - [ - -140.9874011, - 61.0118551 - ], - [ - -140.9683975, - 69.9535069 + 24.9496586, + -34.1010363 ], [ - -156.176891, - 71.5633329 + 24.8770358, + -34.1506456 ], [ - -160.413634, - 70.7397728 + 24.8762914, + -34.2005281 ], [ - -163.0218273, - 69.9707435 + 24.8532574, + -34.2189562 ], [ - -164.9717003, - 68.994689 - ] - ] - ], - "overlay": true - }, - { - "name": "Toulouse - Orthophotoplan 2007", - "type": "tms", - "template": "http://wms.openstreetmap.fr/tms/1.0.0/toulouse_ortho2007/{zoom}/{x}/{y}", - "scaleExtent": [ - 0, - 22 - ], - "polygon": [ - [ - [ - 1.1919978, - 43.6328791 + 24.7645287, + -34.2017946 ], [ - 1.2015377, - 43.6329729 + 24.5001356, + -34.2003254 ], [ - 1.2011107, - 43.6554932 + 24.3486733, + -34.1163824 ], [ - 1.2227985, - 43.6557029 + 24.1988819, + -34.1019039 ], [ - 1.2226231, - 43.6653353 + 23.9963377, + -34.0514443 ], [ - 1.2275341, - 43.6653849 + 23.8017509, + -34.0524332 ], [ - 1.2275417, - 43.6656387 + 23.7493589, + -34.0111855 ], [ - 1.2337568, - 43.6656883 + 23.4973536, + -34.009014 ], [ - 1.2337644, - 43.6650153 + 23.4155191, + -34.0434586 ], [ - 1.2351218, - 43.6650319 + 23.4154284, + -34.1140433 ], [ - 1.2350913, - 43.6670729 + 22.9000853, + -34.0993009 ], [ - 1.2443566, - 43.6671556 + 22.8412418, + -34.0547911 ], [ - 1.2441584, - 43.6743925 + 22.6470321, + -34.0502627 ], [ - 1.2493973, - 43.6744256 + 22.6459843, + -34.0072768 ], [ - 1.2493973, - 43.6746628 + 22.570016, + -34.0064081 ], [ - 1.2555666, - 43.6747234 + 22.5050499, + -34.0645866 ], [ - 1.2555742, - 43.6744532 + 22.2519968, + -34.0645866 ], [ - 1.2569545, - 43.6744697 + 22.2221334, + -34.1014701 ], [ - 1.2568782, - 43.678529 + 22.1621197, + -34.1057019 ], [ - 1.2874873, - 43.6788257 + 22.1712431, + -34.1521766 ], [ - 1.2870803, - 43.7013229 + 22.1576913, + -34.2180897 ], [ - 1.3088219, - 43.7014632 + 22.0015632, + -34.2172232 ], [ - 1.3086493, - 43.7127673 + 21.9496952, + -34.3220009 ], [ - 1.3303262, - 43.7129544 + 21.8611528, + -34.4007145 ], [ - 1.3300242, - 43.7305221 + 21.5614708, + -34.4020114 ], [ - 1.3367106, - 43.7305845 + 21.5468011, + -34.3661242 ], [ - 1.3367322, - 43.7312235 + 21.501744, + -34.3669892 ], [ - 1.3734338, - 43.7310456 + 21.5006961, + -34.4020114 ], [ - 1.3735848, - 43.7245772 + 21.4194886, + -34.4465247 ], [ - 1.4604504, - 43.7252947 + 21.1978706, + -34.4478208 ], [ - 1.4607783, - 43.7028034 + 21.0988193, + -34.3991325 ], [ - 1.4824875, - 43.7029516 + 21.0033746, + -34.3753872 ], [ - 1.4829828, - 43.6692071 + 20.893192, + -34.3997115 ], [ - 1.5046832, - 43.6693616 + 20.8976647, + -34.4854003 ], [ - 1.5048383, - 43.6581174 + 20.7446802, + -34.4828092 ], [ - 1.5265475, - 43.6582656 + 20.5042011, + -34.486264 ], [ - 1.5266945, - 43.6470298 + 20.2527197, + -34.701477 ], [ - 1.548368, - 43.6471633 + 20.0803502, + -34.8361855 ], [ - 1.5485357, - 43.6359385 + 19.9923317, + -34.8379056 ], [ - 1.5702172, - 43.636082 + 19.899074, + -34.8275845 ], [ - 1.5705123, - 43.6135777 + 19.8938348, + -34.7936018 ], [ - 1.5488166, - 43.6134276 + 19.5972963, + -34.7961833 ], [ - 1.549097, - 43.5909479 + 19.3929677, + -34.642015 ], [ - 1.5707695, - 43.5910694 + 19.2877095, + -34.6404784 ], [ - 1.5709373, - 43.5798341 + 19.2861377, + -34.5986563 ], [ - 1.5793714, - 43.5798894 + 19.3474363, + -34.5244458 ], [ - 1.5794782, - 43.5737682 + 19.3285256, + -34.4534372 ], [ - 1.5809119, - 43.5737792 + 19.098001, + -34.449981 ], [ - 1.5810859, - 43.5573794 + 19.0725583, + -34.3802371 ], [ - 1.5712334, - 43.5573131 + 19.0023531, + -34.3525593 ], [ - 1.5716504, - 43.5235497 + 18.9520568, + -34.3949373 ], [ - 1.3984804, - 43.5222618 + 18.7975006, + -34.3936403 ], [ - 1.3986509, - 43.5110113 + 18.7984174, + -34.1016376 ], [ - 1.3120959, - 43.5102543 + 18.501748, + -34.1015292 ], [ - 1.3118968, - 43.5215192 + 18.4999545, + -34.3616945 ], [ - 1.2902569, - 43.5213126 + 18.4477325, + -34.3620007 ], [ - 1.2898637, - 43.5438168 + 18.4479944, + -34.3522691 ], [ - 1.311517, - 43.5440133 + 18.3974362, + -34.3514041 ], [ - 1.3113271, - 43.5552596 + 18.3971742, + -34.3022959 ], [ - 1.3036924, - 43.5551924 + 18.3565705, + -34.3005647 ], [ - 1.3036117, - 43.5595099 + 18.3479258, + -34.2020436 ], [ - 1.2955449, - 43.5594317 + 18.2972095, + -34.1950274 ], [ - 1.2955449, - 43.5595489 + 18.2951139, + -33.9937138 ], [ - 1.2895595, - 43.5594473 + 18.3374474, + -33.9914079 ], [ - 1.2892899, - 43.5775366 + 18.3476638, + -33.8492427 ], [ - 1.2675698, - 43.5773647 + 18.3479258, + -33.781555 ], [ - 1.2673973, - 43.5886141 + 18.4124718, + -33.7448849 ], [ - 1.25355, - 43.5885047 + 18.3615477, + -33.6501624 ], [ - 1.2533774, - 43.5956282 + 18.2992013, + -33.585591 ], [ - 1.2518029, - 43.5956282 + 18.2166839, + -33.448872 ], [ - 1.2518029, - 43.5949409 + 18.1389858, + -33.3974083 ], [ - 1.2350437, - 43.5947847 + 17.9473472, + -33.1602647 ], [ - 1.2350437, - 43.5945972 + 17.8855247, + -33.0575732 ], [ - 1.2239572, - 43.5945972 + 17.8485884, + -32.9668505 ], [ - 1.2239357, - 43.5994708 - ], + 17.8396817, + -32.8507302 + ] + ] + ] + }, + { + "name": "Stadt Uster Orthophoto 2008 10cm", + "type": "tms", + "template": "http://mapproxy.sosm.ch:8080/tiles/uster/EPSG900913/{zoom}/{x}/{y}.png?origin=nw", + "polygon": [ + [ [ - 1.2139708, - 43.599299 + 8.6, + 47.31 ], [ - 1.2138845, - 43.6046408 + 8.6, + 47.39 ], [ - 1.2020647, - 43.6044846 + 8.77, + 47.39 ], [ - 1.2019464, - 43.61048 + 8.77, + 47.31 ], [ - 1.1924294, - 43.6103695 + 8.6, + 47.31 ] ] ], - "terms_url": "https://wiki.openstreetmap.org/wiki/Toulouse/ToulouseMetropoleData", - "terms_text": "ToulouseMetropole" + "terms_text": "Stadt Uster Vermessung Orthophoto 2008" }, { - "name": "Toulouse - Orthophotoplan 2011", + "name": "Stevns (Denmark)", "type": "tms", - "template": "http://wms.openstreetmap.fr/tms/1.0.0/toulouse_ortho2011/{zoom}/{x}/{y}", + "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/stevns/2009/{zoom}/{x}/{y}.png", "scaleExtent": [ 0, - 22 + 20 ], "polygon": [ [ [ - 1.1135067, - 43.6867566 + 12.0913942, + 55.3491574 ], [ - 1.1351836, - 43.6870842 + 12.0943104, + 55.3842256 ], [ - 1.1348907, - 43.6983471 + 12.1573875, + 55.3833103 ], [ - 1.1782867, - 43.6990338 + 12.1587287, + 55.4013326 ], [ - 1.1779903, - 43.7102786 + 12.1903468, + 55.400558 ], [ - 1.1996591, - 43.7106144 + 12.1931411, + 55.4364665 ], [ - 1.1993387, - 43.7218722 + 12.2564251, + 55.4347995 ], [ - 1.2427356, - 43.7225269 + 12.2547073, + 55.4168882 ], [ - 1.2424336, - 43.7337491 + 12.3822489, + 55.4134349 ], [ - 1.2641536, - 43.734092 + 12.3795942, + 55.3954143 ], [ - 1.2638301, - 43.7453588 + 12.4109213, + 55.3946958 ], [ - 1.2855285, - 43.7456548 + 12.409403, + 55.3766417 ], [ - 1.2852481, - 43.756935 + 12.4407807, + 55.375779 ], [ - 1.306925, - 43.757231 + 12.4394142, + 55.3578314 ], [ - 1.3066446, - 43.7684779 + 12.4707413, + 55.3569971 ], [ - 1.3283431, - 43.7687894 + 12.4629475, + 55.2672214 ], [ - 1.3280842, - 43.780034 + 12.4315633, + 55.2681491 ], [ - 1.4367275, - 43.7815757 + 12.430045, + 55.2502103 ], [ - 1.4373098, - 43.7591004 + 12.3672011, + 55.2519673 ], [ - 1.4590083, - 43.7593653 + 12.3656858, + 55.2340267 ], [ - 1.4593318, - 43.7481479 + 12.2714604, + 55.2366031 ], [ - 1.4810303, - 43.7483972 + 12.2744467, + 55.272476 ], [ - 1.4813322, - 43.7371777 + 12.2115654, + 55.2741475 ], [ - 1.5030307, - 43.7374115 + 12.2130078, + 55.2920322 ], [ - 1.5035915, - 43.7149664 + 12.1815665, + 55.2928638 ], [ - 1.5253115, - 43.7151846 + 12.183141, + 55.3107091 ], [ - 1.5256135, - 43.7040057 + 12.2144897, + 55.3100981 ], [ - 1.5472688, - 43.7042552 + 12.2159927, + 55.3279764 ], [ - 1.5475708, - 43.6930431 + 12.1214458, + 55.3303379 ], [ - 1.5692045, - 43.6932926 - ], + 12.1229489, + 55.3483291 + ] + ] + ], + "terms_text": "Stevns Kommune" + }, + { + "name": "Surrey Air Survey", + "type": "tms", + "template": "http://gravitystorm.dev.openstreetmap.org/surrey/{zoom}/{x}/{y}.png", + "polygon": [ + [ [ - 1.5695712, - 43.6820316 + -0.856, + 51.071 ], [ - 1.5912049, - 43.6822656 + -0.856, + 51.473 ], [ - 1.5917441, - 43.6597998 + 0.062, + 51.473 ], [ - 1.613421, - 43.6600339 + 0.062, + 51.071 ], [ - 1.613723, - 43.6488291 - ], + -0.856, + 51.071 + ] + ] + ] + }, + { + "name": "TIGER 2012 Roads Overlay", + "type": "tms", + "description": "Public domain road data from the US Government.", + "template": "http://{switch:a,b,c}.tile.openstreetmap.us/tiger2012_roads_expanded/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 16, + 19 + ], + "polygon": [ + [ [ - 1.6353783, - 43.6490788 + -124.7617886, + 48.4130148 ], [ - 1.6384146, - 43.5140731 + -124.6059492, + 45.90245 ], [ - 1.2921649, - 43.5094658 + -124.9934269, + 40.0557614 ], [ - 1.2918629, - 43.5206966 + -122.5369737, + 36.8566086 ], [ - 1.2702076, - 43.5203994 + -119.9775867, + 33.0064099 ], [ - 1.2698841, - 43.5316437 + -117.675935, + 32.4630223 ], [ - 1.2482288, - 43.531331 + -114.8612307, + 32.4799891 ], [ - 1.2476048, - 43.5537788 + -111.0089311, + 31.336015 ], [ - 1.2259628, - 43.5534914 + -108.1992687, + 31.3260016 ], [ - 1.2256819, - 43.564716 + -108.1871123, + 31.7755116 ], [ - 1.2039835, - 43.564419 + -106.5307225, + 31.7820947 ], [ - 1.2033148, - 43.5869049 + -106.4842052, + 31.7464455 ], [ - 1.1816164, - 43.5865611 + -106.429317, + 31.7520583 ], [ - 1.1810237, - 43.6090368 + -106.2868855, + 31.5613291 ], [ - 1.1592821, - 43.6086932 + -106.205248, + 31.446704 ], [ - 1.1589585, - 43.6199523 + -105.0205259, + 30.5360988 ], [ - 1.1372601, - 43.6196244 + -104.5881916, + 29.6997856 ], [ - 1.1365933, - 43.642094 + -103.2518856, + 28.8908685 ], [ - 1.1149055, - 43.6417629 - ] - ] - ], - "terms_url": "https://wiki.openstreetmap.org/wiki/Toulouse/ToulouseMetropoleData", - "terms_text": "ToulouseMetropole" - }, - { - "name": "Tours - Orthophotos 2008", - "type": "tms", - "template": "http://tms.mapspot.ge/tms/2/nonstandard/{zoom}/{x}/{y}.jpeg", - "polygon": [ - [ - [ - 0.5457462, - 47.465264 + -102.7173632, + 29.3920567 ], [ - 0.54585, - 47.4608163 + -102.1513983, + 29.7475702 ], [ - 0.5392188, - 47.4606983 + -101.2552871, + 29.4810523 ], [ - 0.5393484, - 47.456243 + -100.0062436, + 28.0082173 ], [ - 0.5327959, - 47.4561003 + -99.2351068, + 26.4475962 ], [ - 0.5329011, - 47.451565 + -98.0109067, + 25.9928035 ], [ - 0.52619, - 47.4514013 + -97.435024, + 25.8266009 ], [ - 0.5265854, - 47.4424884 + -96.9555259, + 25.9821589 ], [ - 0.5000941, - 47.4420739 + -96.8061741, + 27.7978168 ], [ - 0.5002357, - 47.4375835 + -95.5563349, + 28.5876066 ], [ - 0.4936014, - 47.4374324 + -93.7405308, + 29.4742093 ], [ - 0.4937, - 47.4329285 + -90.9028456, + 28.8564513 ], [ - 0.4606141, - 47.4324593 + -88.0156706, + 28.9944338 ], [ - 0.4607248, - 47.4279827 + -88.0162494, + 30.0038862 ], [ - 0.4541016, - 47.4278125 + -86.0277506, + 30.0047454 ], [ - 0.454932, - 47.4053921 + -84.0187909, + 28.9961781 ], [ - 0.4615431, - 47.4054476 + -81.9971976, + 25.9826768 ], [ - 0.4619097, - 47.3964924 + -81.9966618, + 25.0134917 ], [ - 0.4684346, - 47.3966005 + -84.0165592, + 25.0125783 ], [ - 0.4691319, - 47.3786415 + -84.0160068, + 24.0052745 ], [ - 0.4757125, - 47.3787609 + -80.0199985, + 24.007096 ], [ - 0.4762116, - 47.3652018 + -79.8901116, + 26.8550713 ], [ - 0.4828297, - 47.3653499 + -80.0245309, + 32.0161282 ], [ - 0.4832223, - 47.3518574 + -75.4147385, + 35.0531894 ], [ - 0.5097927, - 47.3522592 + -74.0211163, + 39.5727927 ], [ - 0.5095688, - 47.3567713 + -72.002019, + 40.9912464 ], [ - 0.5227698, - 47.3569785 + -69.8797398, + 40.9920457 ], [ - 0.5226429, - 47.3614867 + -69.8489304, + 43.2619916 ], [ - 0.5490721, - 47.3618878 + -66.9452845, + 44.7104937 ], [ - 0.5489087, - 47.3663307 + -67.7596632, + 47.0990024 ], [ - 0.5555159, - 47.3664985 + -69.2505131, + 47.5122328 ], [ - 0.5559105, - 47.3575522 + -70.4614886, + 46.2176574 ], [ - 0.6152789, - 47.358407 + -71.412273, + 45.254878 ], [ - 0.6152963, - 47.362893 + -72.0222508, + 45.0059846 ], [ - 0.6285093, - 47.3630936 + -75.0798841, + 44.9802854 ], [ - 0.6288256, - 47.353987 + -76.9023061, + 43.8024568 ], [ - 0.6155012, - 47.3538823 + -78.7623935, + 43.6249578 ], [ - 0.6157682, - 47.3493424 + -79.15798, + 43.4462589 ], [ - 0.6090956, - 47.3492991 + -79.0060087, + 42.8005317 ], [ - 0.6094735, - 47.3402962 + -82.662475, + 41.6889458 ], [ - 0.6160477, - 47.3404448 + -82.1761642, + 43.588535 ], [ - 0.616083, - 47.3369074 + -83.2813977, + 46.138853 ], [ - 0.77497, - 47.3388218 + -87.5064535, + 48.0142702 ], [ - 0.7745786, - 47.351628 + -88.3492194, + 48.2963271 ], [ - 0.7680363, - 47.3515901 + -89.4353148, + 47.9837822 ], [ - 0.767589, - 47.3605298 + -93.9981078, + 49.0067142 ], [ - 0.7742443, - 47.3606238 + -95.1105379, + 49.412004 ], [ - 0.7733465, - 47.3921266 + -96.0131199, + 49.0060547 ], [ - 0.7667434, - 47.3920195 + -123.3228926, + 49.0042878 ], [ - 0.7664411, - 47.4010837 - ], + -123.2275233, + 48.1849927 + ] + ], + [ [ - 0.7730647, - 47.4011115 + -160.5787616, + 22.5062947 ], [ - 0.7728868, - 47.4101297 + -160.5782192, + 21.4984647 ], [ - 0.7661849, - 47.4100226 + -158.7470604, + 21.2439843 ], [ - 0.7660267, - 47.4145044 + -157.5083185, + 20.995803 ], [ - 0.7527613, - 47.4143038 + -155.9961942, + 18.7790194 ], [ - 0.7529788, - 47.4098086 + -154.6217803, + 18.7586966 ], [ - 0.7462373, - 47.4097016 + -154.6890176, + 19.8805722 ], [ - 0.7459424, - 47.4232208 + -156.2927622, + 21.2225888 ], [ - 0.7392324, - 47.4231451 + -157.5047384, + 21.9984962 ], [ - 0.738869, - 47.4366116 + -159.0093692, + 22.5070181 + ] + ], + [ + [ + -167.1571546, + 68.721974 ], [ - 0.7323267, - 47.4365171 + -164.8553982, + 67.0255078 ], [ - 0.7321869, - 47.4410556 + -168.002195, + 66.0017503 ], [ - 0.7255048, - 47.44098 + -169.0087448, + 66.001546 ], [ - 0.7254209, - 47.4453479 + -169.0075381, + 64.9987675 ], [ - 0.7318793, - 47.4454803 + -172.5143281, + 63.8767267 ], [ - 0.7318514, - 47.4501126 + -173.8197023, + 59.74014 ], [ - 0.7384496, - 47.450226 + -162.5018149, + 58.0005815 ], [ - 0.7383098, - 47.454631 + -160.0159024, + 58.0012389 ], [ - 0.7449359, - 47.4547444 + -160.0149725, + 57.000035 ], [ - 0.7443209, - 47.4771985 + -160.5054788, + 56.9999017 ], [ - 0.7310685, - 47.4769717 + -165.8092575, + 54.824847 ], [ - 0.7309008, - 47.4815445 + -178.000097, + 52.2446469 ], [ - 0.7176205, - 47.4812611 + -177.9992996, + 51.2554252 ], [ - 0.7177883, - 47.4768394 + -171.4689067, + 51.8215329 ], [ - 0.69777, - 47.4764993 + -162.40251, + 53.956664 ], [ - 0.6980496, - 47.4719827 + -159.0075717, + 55.002502 ], [ - 0.6914514, - 47.4718882 + -158.0190709, + 55.0027849 ], [ - 0.6917309, - 47.4630241 + -151.9963213, + 55.9991902 ], [ - 0.6851048, - 47.4629295 + -151.500341, + 57.9987853 ], [ - 0.684937, - 47.4673524 + -151.5012894, + 58.9919816 ], [ - 0.678255, - 47.4673335 + -138.5159989, + 58.9953194 ], [ - 0.6779754, - 47.4762158 + -138.5150471, + 57.9986434 ], [ - 0.6714051, - 47.4761592 + -133.9948193, + 54.0031685 ], [ - 0.6710417, - 47.4881952 + -130.0044418, + 54.0043387 ], [ - 0.6577334, - 47.4879685 + -130.0070826, + 57.0000507 ], [ - 0.6578173, - 47.48504 + -131.975877, + 56.9995156 ], [ - 0.6511911, - 47.4848322 + -135.1229873, + 59.756601 ], [ - 0.6514707, - 47.4758568 + -138.0071813, + 59.991805 ], [ - 0.6448166, - 47.4757245 + -139.1715881, + 60.4127229 ], [ - 0.6449284, - 47.4712646 + -140.9874011, + 61.0118551 ], [ - 0.6117976, - 47.4707543 + -140.9683975, + 69.9535069 ], [ - 0.6118815, - 47.4663129 - ], - [ - 0.6052833, - 47.4661239 - ], - [ - 0.6054231, - 47.4616631 - ], - [ - 0.5988808, - 47.4615497 + -156.176891, + 71.5633329 ], [ - 0.5990206, - 47.4570886 + -160.413634, + 70.7397728 ], [ - 0.572488, - 47.4566916 + -163.0218273, + 69.9707435 ], [ - 0.5721805, - 47.4656513 + -164.9717003, + 68.994689 ] ] ], - "terms_url": "http://wiki.openstreetmap.org/wiki/Tours/Orthophoto", - "terms_text": "Orthophoto Tour(s) Plus 2008" + "overlay": true }, { - "name": "Tours - Orthophotos 2008-2010", + "name": "Toulouse - Orthophotoplan 2007", "type": "tms", - "template": "http://wms.openstreetmap.fr/tms/1.0.0/tours/{zoom}/{x}/{y}", + "template": "http://wms.openstreetmap.fr/tms/1.0.0/toulouse_ortho2007/{zoom}/{x}/{y}", "scaleExtent": [ 0, - 20 + 22 ], "polygon": [ [ [ - 0.5457462, - 47.465264 + 1.1919978, + 43.6328791 ], [ - 0.54585, - 47.4608163 + 1.2015377, + 43.6329729 ], [ - 0.5392188, - 47.4606983 + 1.2011107, + 43.6554932 ], [ - 0.5393484, - 47.456243 + 1.2227985, + 43.6557029 ], [ - 0.5327959, - 47.4561003 + 1.2226231, + 43.6653353 ], [ - 0.5329011, - 47.451565 + 1.2275341, + 43.6653849 ], [ - 0.52619, - 47.4514013 + 1.2275417, + 43.6656387 ], [ - 0.5265854, - 47.4424884 + 1.2337568, + 43.6656883 ], [ - 0.5000941, - 47.4420739 + 1.2337644, + 43.6650153 ], [ - 0.5002357, - 47.4375835 + 1.2351218, + 43.6650319 ], [ - 0.4936014, - 47.4374324 + 1.2350913, + 43.6670729 ], [ - 0.4937, - 47.4329285 + 1.2443566, + 43.6671556 ], [ - 0.4606141, - 47.4324593 + 1.2441584, + 43.6743925 ], [ - 0.4607248, - 47.4279827 + 1.2493973, + 43.6744256 ], [ - 0.4541016, - 47.4278125 + 1.2493973, + 43.6746628 ], [ - 0.454932, - 47.4053921 + 1.2555666, + 43.6747234 ], [ - 0.4615431, - 47.4054476 + 1.2555742, + 43.6744532 ], [ - 0.4619097, - 47.3964924 + 1.2569545, + 43.6744697 ], [ - 0.4684346, - 47.3966005 + 1.2568782, + 43.678529 ], [ - 0.4691319, - 47.3786415 + 1.2874873, + 43.6788257 ], [ - 0.4757125, - 47.3787609 + 1.2870803, + 43.7013229 ], [ - 0.4762116, - 47.3652018 + 1.3088219, + 43.7014632 ], [ - 0.4828297, - 47.3653499 + 1.3086493, + 43.7127673 ], [ - 0.4829611, - 47.3608321 + 1.3303262, + 43.7129544 ], [ - 0.4763543, - 47.360743 + 1.3300242, + 43.7305221 ], [ - 0.476654, - 47.3517263 + 1.3367106, + 43.7305845 ], [ - 0.4700497, - 47.3516186 + 1.3367322, + 43.7312235 ], [ - 0.4701971, - 47.3471313 + 1.3734338, + 43.7310456 ], [ - 0.4637503, - 47.3470104 + 1.3735848, + 43.7245772 ], [ - 0.4571425, - 47.3424146 + 1.4604504, + 43.7252947 ], [ - 0.4572922, - 47.3379061 + 1.4607783, + 43.7028034 ], [ - 0.4506741, - 47.3378081 + 1.4824875, + 43.7029516 ], [ - 0.4508379, - 47.3333051 + 1.4829828, + 43.6692071 ], [ - 0.4442212, - 47.3332032 + 1.5046832, + 43.6693616 ], [ - 0.4443809, - 47.328711 + 1.5048383, + 43.6581174 ], [ - 0.4311392, - 47.3284977 + 1.5265475, + 43.6582656 ], [ - 0.4316262, - 47.3150004 + 1.5266945, + 43.6470298 ], [ - 0.4382432, - 47.3151136 + 1.548368, + 43.6471633 ], [ - 0.4383815, - 47.3106174 + 1.5485357, + 43.6359385 ], [ - 0.4714487, - 47.3111374 + 1.5702172, + 43.636082 ], [ - 0.4713096, - 47.3156565 + 1.5705123, + 43.6135777 ], [ - 0.477888, - 47.3157542 + 1.5488166, + 43.6134276 ], [ - 0.4780733, - 47.3112802 + 1.549097, + 43.5909479 ], [ - 0.4846826, - 47.3113639 + 1.5707695, + 43.5910694 ], [ - 0.4848576, - 47.3068686 + 1.5709373, + 43.5798341 ], [ - 0.4914359, - 47.3069803 + 1.5793714, + 43.5798894 ], [ - 0.491745, - 47.2979733 + 1.5794782, + 43.5737682 ], [ - 0.4851578, - 47.2978722 + 1.5809119, + 43.5737792 ], [ - 0.4854269, - 47.2888744 + 1.5810859, + 43.5573794 ], [ - 0.4788485, - 47.2887697 + 1.5712334, + 43.5573131 ], [ - 0.4791574, - 47.2797818 + 1.5716504, + 43.5235497 ], [ - 0.4857769, - 47.2799005 + 1.3984804, + 43.5222618 ], [ - 0.4859107, - 47.2753885 + 1.3986509, + 43.5110113 ], [ - 0.492539, - 47.2755029 + 1.3120959, + 43.5102543 ], [ - 0.4926669, - 47.2710127 + 1.3118968, + 43.5215192 ], [ - 0.4992986, - 47.2711066 + 1.2902569, + 43.5213126 ], [ - 0.4994296, - 47.2666116 + 1.2898637, + 43.5438168 ], [ - 0.5192658, - 47.2669245 + 1.311517, + 43.5440133 ], [ - 0.5194225, - 47.2624231 + 1.3113271, + 43.5552596 ], [ - 0.5260186, - 47.2625205 + 1.3036924, + 43.5551924 ], [ - 0.5258735, - 47.2670183 + 1.3036117, + 43.5595099 ], [ - 0.5456972, - 47.2673383 + 1.2955449, + 43.5594317 ], [ - 0.5455537, - 47.2718283 + 1.2955449, + 43.5595489 ], [ - 0.5587737, - 47.2720366 + 1.2895595, + 43.5594473 ], [ - 0.5586259, - 47.2765185 + 1.2892899, + 43.5775366 ], [ - 0.5652252, - 47.2766278 + 1.2675698, + 43.5773647 ], [ - 0.5650848, - 47.2811206 + 1.2673973, + 43.5886141 ], [ - 0.5716753, - 47.2812285 + 1.25355, + 43.5885047 ], [ - 0.5715223, - 47.2857217 + 1.2533774, + 43.5956282 ], [ - 0.5781436, - 47.2858299 + 1.2518029, + 43.5956282 ], [ - 0.5779914, - 47.2903294 + 1.2518029, + 43.5949409 ], [ - 0.5846023, - 47.2904263 + 1.2350437, + 43.5947847 ], [ - 0.5843076, - 47.2994231 + 1.2350437, + 43.5945972 ], [ - 0.597499, - 47.2996094 + 1.2239572, + 43.5945972 ], [ - 0.5976637, - 47.2951375 + 1.2239357, + 43.5994708 ], [ - 0.6571596, - 47.2960036 + 1.2139708, + 43.599299 ], [ - 0.6572988, - 47.2915091 + 1.2138845, + 43.6046408 ], [ - 0.6705019, - 47.2917186 + 1.2020647, + 43.6044846 ], [ - 0.6703475, - 47.2962082 + 1.2019464, + 43.61048 ], [ - 0.6836175, - 47.2963688 + 1.1924294, + 43.6103695 + ] + ] + ], + "terms_url": "https://wiki.openstreetmap.org/wiki/Toulouse/ToulouseMetropoleData", + "terms_text": "ToulouseMetropole" + }, + { + "name": "Toulouse - Orthophotoplan 2011", + "type": "tms", + "template": "http://wms.openstreetmap.fr/tms/1.0.0/toulouse_ortho2011/{zoom}/{x}/{y}", + "scaleExtent": [ + 0, + 22 + ], + "polygon": [ + [ + [ + 1.1135067, + 43.6867566 ], [ - 0.6834322, - 47.3008929 + 1.1351836, + 43.6870842 ], [ - 0.690062, - 47.3009558 + 1.1348907, + 43.6983471 ], [ - 0.6899241, - 47.3054703 + 1.1782867, + 43.6990338 ], [ - 0.7362019, - 47.3061157 + 1.1779903, + 43.7102786 ], [ - 0.7360848, - 47.3106063 + 1.1996591, + 43.7106144 ], [ - 0.7559022, - 47.3108935 + 1.1993387, + 43.7218722 ], [ - 0.7557718, - 47.315392 + 1.2427356, + 43.7225269 ], [ - 0.7623755, - 47.3154716 + 1.2424336, + 43.7337491 ], [ - 0.7622314, - 47.3199941 + 1.2641536, + 43.734092 ], [ - 0.7754911, - 47.3201546 + 1.2638301, + 43.7453588 ], [ - 0.77497, - 47.3388218 + 1.2855285, + 43.7456548 ], [ - 0.7745786, - 47.351628 + 1.2852481, + 43.756935 ], [ - 0.7680363, - 47.3515901 + 1.306925, + 43.757231 ], [ - 0.767589, - 47.3605298 + 1.3066446, + 43.7684779 ], [ - 0.7742443, - 47.3606238 + 1.3283431, + 43.7687894 ], [ - 0.7733465, - 47.3921266 + 1.3280842, + 43.780034 ], [ - 0.7667434, - 47.3920195 + 1.4367275, + 43.7815757 ], [ - 0.7664411, - 47.4010837 + 1.4373098, + 43.7591004 ], [ - 0.7730647, - 47.4011115 + 1.4590083, + 43.7593653 ], [ - 0.7728868, - 47.4101297 + 1.4593318, + 43.7481479 ], [ - 0.7661849, - 47.4100226 + 1.4810303, + 43.7483972 ], [ - 0.7660267, - 47.4145044 + 1.4813322, + 43.7371777 ], [ - 0.7527613, - 47.4143038 + 1.5030307, + 43.7374115 ], [ - 0.7529788, - 47.4098086 + 1.5035915, + 43.7149664 ], [ - 0.7462373, - 47.4097016 + 1.5253115, + 43.7151846 ], [ - 0.7459424, - 47.4232208 + 1.5256135, + 43.7040057 ], [ - 0.7392324, - 47.4231451 + 1.5472688, + 43.7042552 ], [ - 0.738869, - 47.4366116 + 1.5475708, + 43.6930431 ], [ - 0.7323267, - 47.4365171 + 1.5692045, + 43.6932926 ], [ - 0.7321869, - 47.4410556 + 1.5695712, + 43.6820316 ], [ - 0.7255048, - 47.44098 + 1.5912049, + 43.6822656 ], [ - 0.7254209, - 47.4453479 + 1.5917441, + 43.6597998 ], [ - 0.7318793, - 47.4454803 + 1.613421, + 43.6600339 ], [ - 0.7318514, - 47.4501126 + 1.613723, + 43.6488291 ], [ - 0.7384496, - 47.450226 - ], - [ - 0.7383098, - 47.454631 - ], - [ - 0.7449359, - 47.4547444 - ], - [ - 0.7443209, - 47.4771985 - ], - [ - 0.7310685, - 47.4769717 - ], - [ - 0.7309008, - 47.4815445 - ], - [ - 0.7176205, - 47.4812611 - ], - [ - 0.7177883, - 47.4768394 - ], - [ - 0.69777, - 47.4764993 - ], - [ - 0.6980496, - 47.4719827 - ], - [ - 0.6914514, - 47.4718882 - ], - [ - 0.6917309, - 47.4630241 - ], - [ - 0.6851048, - 47.4629295 - ], - [ - 0.684937, - 47.4673524 + 1.6353783, + 43.6490788 ], [ - 0.678255, - 47.4673335 + 1.6384146, + 43.5140731 ], [ - 0.6779754, - 47.4762158 + 1.2921649, + 43.5094658 ], [ - 0.6714051, - 47.4761592 + 1.2918629, + 43.5206966 ], [ - 0.6710417, - 47.4881952 + 1.2702076, + 43.5203994 ], [ - 0.6577334, - 47.4879685 + 1.2698841, + 43.5316437 ], [ - 0.6578173, - 47.48504 + 1.2482288, + 43.531331 ], [ - 0.6511911, - 47.4848322 + 1.2476048, + 43.5537788 ], [ - 0.6514707, - 47.4758568 + 1.2259628, + 43.5534914 ], [ - 0.6448166, - 47.4757245 + 1.2256819, + 43.564716 ], [ - 0.6449284, - 47.4712646 + 1.2039835, + 43.564419 ], [ - 0.6117976, - 47.4707543 + 1.2033148, + 43.5869049 ], [ - 0.6118815, - 47.4663129 + 1.1816164, + 43.5865611 ], [ - 0.6052833, - 47.4661239 + 1.1810237, + 43.6090368 ], [ - 0.6054231, - 47.4616631 + 1.1592821, + 43.6086932 ], [ - 0.5988808, - 47.4615497 + 1.1589585, + 43.6199523 ], [ - 0.5990206, - 47.4570886 + 1.1372601, + 43.6196244 ], [ - 0.572488, - 47.4566916 + 1.1365933, + 43.642094 ], [ - 0.5721805, - 47.4656513 + 1.1149055, + 43.6417629 ] ] ], - "terms_url": "http://wiki.openstreetmap.org/wiki/Tours/Orthophoto", - "terms_text": "Orthophoto Tour(s) Plus 2008" + "terms_url": "https://wiki.openstreetmap.org/wiki/Toulouse/ToulouseMetropoleData", + "terms_text": "ToulouseMetropole" }, { - "name": "USGS Large Scale Imagery", + "name": "Tours - Orthophotos 2008", "type": "tms", - "template": "http://{switch:a,b,c}.tile.openstreetmap.us/usgs_large_scale/{zoom}/{x}/{y}.jpg", - "scaleExtent": [ - 12, - 20 - ], + "template": "http://tms.mapspot.ge/tms/2/nonstandard/{zoom}/{x}/{y}.jpeg", "polygon": [ [ [ - -123.2549305, - 48.7529029 + 0.5457462, + 47.465264 ], [ - -123.2549305, - 48.5592263 + 0.54585, + 47.4608163 ], [ - -123.192224, - 48.5592263 + 0.5392188, + 47.4606983 ], [ - -123.192224, - 48.4348366 + 0.5393484, + 47.456243 ], [ - -122.9419646, - 48.4348366 + 0.5327959, + 47.4561003 ], [ - -122.9419646, - 48.3720812 + 0.5329011, + 47.451565 ], [ - -122.8806229, - 48.3720812 + 0.52619, + 47.4514013 ], [ - -122.8806229, - 48.3094763 + 0.5265854, + 47.4424884 ], [ - -122.8167566, - 48.3094763 + 0.5000941, + 47.4420739 ], [ - -122.8167566, - 48.1904587 + 0.5002357, + 47.4375835 ], [ - -123.0041133, - 48.1904587 + 0.4936014, + 47.4374324 ], [ - -123.0041133, - 48.1275918 + 0.4937, + 47.4329285 ], [ - -123.058416, - 48.1275918 + 0.4606141, + 47.4324593 ], [ - -123.058416, - 48.190514 + 0.4607248, + 47.4279827 ], [ - -123.254113, - 48.190514 + 0.4541016, + 47.4278125 ], [ - -123.254113, - 48.1274982 + 0.454932, + 47.4053921 ], [ - -123.3706593, - 48.1274982 + 0.4615431, + 47.4054476 ], [ - -123.3706593, - 48.1908403 + 0.4619097, + 47.3964924 ], [ - -124.0582632, - 48.1908403 + 0.4684346, + 47.3966005 ], [ - -124.0582632, - 48.253442 + 0.4691319, + 47.3786415 ], [ - -124.1815163, - 48.253442 + 0.4757125, + 47.3787609 ], [ - -124.1815163, - 48.3164666 + 0.4762116, + 47.3652018 ], [ - -124.4319117, - 48.3164666 + 0.4828297, + 47.3653499 ], [ - -124.4319117, - 48.3782613 + 0.4832223, + 47.3518574 ], [ - -124.5564618, - 48.3782613 + 0.5097927, + 47.3522592 ], [ - -124.5564618, - 48.4408305 + 0.5095688, + 47.3567713 ], [ - -124.7555107, - 48.4408305 + 0.5227698, + 47.3569785 ], [ - -124.7555107, - 48.1914986 + 0.5226429, + 47.3614867 ], [ - -124.8185282, - 48.1914986 + 0.5490721, + 47.3618878 ], [ - -124.8185282, - 48.1228381 + 0.5489087, + 47.3663307 ], [ - -124.7552951, - 48.1228381 + 0.5555159, + 47.3664985 ], [ - -124.7552951, - 47.5535253 + 0.5559105, + 47.3575522 ], [ - -124.3812108, - 47.5535253 + 0.6152789, + 47.358407 ], [ - -124.3812108, - 47.1218696 + 0.6152963, + 47.362893 ], [ - -124.1928897, - 47.1218696 + 0.6285093, + 47.3630936 ], [ - -124.1928897, - 43.7569431 + 0.6288256, + 47.353987 ], [ - -124.4443382, - 43.7569431 + 0.6155012, + 47.3538823 ], [ - -124.4443382, - 43.1425556 + 0.6157682, + 47.3493424 ], [ - -124.6398855, - 43.1425556 + 0.6090956, + 47.3492991 ], [ - -124.6398855, - 42.6194503 + 0.6094735, + 47.3402962 ], [ - -124.4438525, - 42.6194503 + 0.6160477, + 47.3404448 ], [ - -124.4438525, - 39.8080662 + 0.616083, + 47.3369074 ], [ - -123.8815685, - 39.8080662 + 0.77497, + 47.3388218 ], [ - -123.8815685, - 39.1102825 + 0.7745786, + 47.351628 ], [ - -123.75805, - 39.1102825 + 0.7680363, + 47.3515901 ], [ - -123.75805, - 38.4968799 + 0.767589, + 47.3605298 ], [ - -123.2702803, - 38.4968799 + 0.7742443, + 47.3606238 ], [ - -123.2702803, - 37.9331905 + 0.7733465, + 47.3921266 ], [ - -122.8148084, - 37.9331905 + 0.7667434, + 47.3920195 ], [ - -122.8148084, - 37.8019606 + 0.7664411, + 47.4010837 ], [ - -122.5664316, - 37.8019606 + 0.7730647, + 47.4011115 ], [ - -122.5664316, - 36.9319611 + 0.7728868, + 47.4101297 ], [ - -121.8784026, - 36.9319611 + 0.7661849, + 47.4100226 ], [ - -121.8784026, - 36.6897596 + 0.7660267, + 47.4145044 ], [ - -122.0034748, - 36.6897596 + 0.7527613, + 47.4143038 ], [ - -122.0034748, - 36.4341056 + 0.7529788, + 47.4098086 ], [ - -121.9414159, - 36.4341056 + 0.7462373, + 47.4097016 ], [ - -121.9414159, - 35.9297636 + 0.7459424, + 47.4232208 ], [ - -121.5040977, - 35.9297636 + 0.7392324, + 47.4231451 ], [ - -121.5040977, - 35.8100273 + 0.738869, + 47.4366116 ], [ - -121.3790276, - 35.8100273 + 0.7323267, + 47.4365171 ], [ - -121.3790276, - 35.4239164 + 0.7321869, + 47.4410556 ], [ - -120.9426515, - 35.4239164 + 0.7255048, + 47.44098 ], [ - -120.9426515, - 35.1849683 + 0.7254209, + 47.4453479 ], [ - -120.8171978, - 35.1849683 + 0.7318793, + 47.4454803 ], [ - -120.8171978, - 35.1219894 + 0.7318514, + 47.4501126 ], [ - -120.6918447, - 35.1219894 + 0.7384496, + 47.450226 ], [ - -120.6918447, - 34.4966794 + 0.7383098, + 47.454631 ], [ - -120.5045898, - 34.4966794 + 0.7449359, + 47.4547444 ], [ - -120.5045898, - 34.4339651 + 0.7443209, + 47.4771985 ], [ - -120.0078775, - 34.4339651 + 0.7310685, + 47.4769717 ], [ - -120.0078775, - 34.3682626 + 0.7309008, + 47.4815445 ], [ - -119.5283517, - 34.3682626 + 0.7176205, + 47.4812611 ], [ - -119.5283517, - 34.0576434 + 0.7177883, + 47.4768394 ], [ - -119.0060985, - 34.0576434 + 0.69777, + 47.4764993 ], [ - -119.0060985, - 33.9975267 + 0.6980496, + 47.4719827 ], [ - -118.5046259, - 33.9975267 + 0.6914514, + 47.4718882 ], [ - -118.5046259, - 33.8694631 + 0.6917309, + 47.4630241 ], [ - -118.4413209, - 33.8694631 + 0.6851048, + 47.4629295 ], [ - -118.4413209, - 33.6865253 + 0.684937, + 47.4673524 ], [ - -118.066912, - 33.6865253 + 0.678255, + 47.4673335 ], [ - -118.066912, - 33.3063832 + 0.6779754, + 47.4762158 ], [ - -117.5030045, - 33.3063832 + 0.6714051, + 47.4761592 ], [ - -117.5030045, - 33.0500337 + 0.6710417, + 47.4881952 ], [ - -117.3188195, - 33.0500337 + 0.6577334, + 47.4879685 ], [ - -117.3188195, - 32.6205888 + 0.6578173, + 47.48504 ], [ - -117.1917023, - 32.6205888 + 0.6511911, + 47.4848322 ], [ - -117.1917023, - 32.4974566 + 0.6514707, + 47.4758568 ], [ - -116.746496, - 32.4974566 + 0.6448166, + 47.4757245 ], [ - -116.746496, - 32.5609161 + 0.6449284, + 47.4712646 ], [ - -115.9970138, - 32.5609161 + 0.6117976, + 47.4707543 ], [ - -115.9970138, - 32.6264942 + 0.6118815, + 47.4663129 ], [ - -114.8808125, - 32.6264942 + 0.6052833, + 47.4661239 ], [ - -114.8808125, - 32.4340796 + 0.6054231, + 47.4616631 ], [ - -114.6294474, - 32.4340796 + 0.5988808, + 47.4615497 ], [ - -114.6294474, - 32.3731636 + 0.5990206, + 47.4570886 ], [ - -114.4447437, - 32.3731636 + 0.572488, + 47.4566916 ], [ - -114.4447437, - 32.3075418 - ], + 0.5721805, + 47.4656513 + ] + ] + ], + "terms_url": "http://wiki.openstreetmap.org/wiki/Tours/Orthophoto", + "terms_text": "Orthophoto Tour(s) Plus 2008" + }, + { + "name": "Tours - Orthophotos 2008-2010", + "type": "tms", + "template": "http://wms.openstreetmap.fr/tms/1.0.0/tours/{zoom}/{x}/{y}", + "scaleExtent": [ + 0, + 20 + ], + "polygon": [ + [ [ - -114.2557628, - 32.3075418 + 0.5457462, + 47.465264 ], [ - -114.2557628, - 32.2444561 + 0.54585, + 47.4608163 ], [ - -114.0680274, - 32.2444561 + 0.5392188, + 47.4606983 ], [ - -114.0680274, - 32.1829113 + 0.5393484, + 47.456243 ], [ - -113.8166499, - 32.1829113 + 0.5327959, + 47.4561003 ], [ - -113.8166499, - 32.1207622 + 0.5329011, + 47.451565 ], [ - -113.6307421, - 32.1207622 + 0.52619, + 47.4514013 ], [ - -113.6307421, - 32.0565099 + 0.5265854, + 47.4424884 ], [ - -113.4417495, - 32.0565099 + 0.5000941, + 47.4420739 ], [ - -113.4417495, - 31.9984372 + 0.5002357, + 47.4375835 ], [ - -113.2546027, - 31.9984372 + 0.4936014, + 47.4374324 ], [ - -113.2546027, - 31.9325434 + 0.4937, + 47.4329285 ], [ - -113.068072, - 31.9325434 + 0.4606141, + 47.4324593 ], [ - -113.068072, - 31.8718062 + 0.4607248, + 47.4279827 ], [ - -112.8161105, - 31.8718062 + 0.4541016, + 47.4278125 ], [ - -112.8161105, - 31.8104171 + 0.454932, + 47.4053921 ], [ - -112.6308756, - 31.8104171 + 0.4615431, + 47.4054476 ], [ - -112.6308756, - 31.7464723 + 0.4619097, + 47.3964924 ], [ - -112.4418918, - 31.7464723 + 0.4684346, + 47.3966005 ], [ - -112.4418918, - 31.6856001 + 0.4691319, + 47.3786415 ], [ - -112.257192, - 31.6856001 + 0.4757125, + 47.3787609 ], [ - -112.257192, - 31.6210352 + 0.4762116, + 47.3652018 ], [ - -112.0033787, - 31.6210352 + 0.4828297, + 47.3653499 ], [ - -112.0033787, - 31.559584 + 0.4829611, + 47.3608321 ], [ - -111.815619, - 31.559584 + 0.4763543, + 47.360743 ], [ - -111.815619, - 31.4970238 + 0.476654, + 47.3517263 ], [ - -111.6278586, - 31.4970238 + 0.4700497, + 47.3516186 ], [ - -111.6278586, - 31.4339867 + 0.4701971, + 47.3471313 ], [ - -111.4418978, - 31.4339867 + 0.4637503, + 47.3470104 ], [ - -111.4418978, - 31.3733859 + 0.4571425, + 47.3424146 ], [ - -111.2559708, - 31.3733859 + 0.4572922, + 47.3379061 ], [ - -111.2559708, - 31.3113225 + 0.4506741, + 47.3378081 ], [ - -108.1845822, - 31.3113225 + 0.4508379, + 47.3333051 ], [ - -108.1845822, - 31.7459502 + 0.4442212, + 47.3332032 ], [ - -106.5065055, - 31.7459502 + 0.4443809, + 47.328711 ], [ - -106.5065055, - 31.6842308 + 0.4311392, + 47.3284977 ], [ - -106.3797265, - 31.6842308 + 0.4316262, + 47.3150004 ], [ - -106.3797265, - 31.621752 + 0.4382432, + 47.3151136 ], [ - -106.317434, - 31.621752 + 0.4383815, + 47.3106174 ], [ - -106.317434, - 31.4968167 + 0.4714487, + 47.3111374 ], [ - -106.2551769, - 31.4968167 + 0.4713096, + 47.3156565 ], [ - -106.2551769, - 31.4344889 + 0.477888, + 47.3157542 ], [ - -106.1924698, - 31.4344889 + 0.4780733, + 47.3112802 ], [ - -106.1924698, - 31.3721296 + 0.4846826, + 47.3113639 ], [ - -106.0039212, - 31.3721296 + 0.4848576, + 47.3068686 ], [ - -106.0039212, - 31.309328 + 0.4914359, + 47.3069803 ], [ - -105.9416582, - 31.309328 + 0.491745, + 47.2979733 ], [ - -105.9416582, - 31.2457547 + 0.4851578, + 47.2978722 ], [ - -105.8798174, - 31.2457547 + 0.4854269, + 47.2888744 ], [ - -105.8798174, - 31.1836194 + 0.4788485, + 47.2887697 ], [ - -105.8162349, - 31.1836194 + 0.4791574, + 47.2797818 ], [ - -105.8162349, - 31.1207155 + 0.4857769, + 47.2799005 ], [ - -105.6921198, - 31.1207155 + 0.4859107, + 47.2753885 ], [ - -105.6921198, - 31.0584835 + 0.492539, + 47.2755029 ], [ - -105.6302881, - 31.0584835 + 0.4926669, + 47.2710127 ], [ - -105.6302881, - 30.9328271 + 0.4992986, + 47.2711066 ], [ - -105.5044418, - 30.9328271 + 0.4994296, + 47.2666116 ], [ - -105.5044418, - 30.8715864 + 0.5192658, + 47.2669245 ], [ - -105.4412973, - 30.8715864 + 0.5194225, + 47.2624231 ], [ - -105.4412973, - 30.808463 + 0.5260186, + 47.2625205 ], [ - -105.3781497, - 30.808463 + 0.5258735, + 47.2670183 ], [ - -105.3781497, - 30.7471828 + 0.5456972, + 47.2673383 ], [ - -105.1904658, - 30.7471828 + 0.5455537, + 47.2718283 ], [ - -105.1904658, - 30.6843231 + 0.5587737, + 47.2720366 ], [ - -105.1286244, - 30.6843231 + 0.5586259, + 47.2765185 ], [ - -105.1286244, - 30.6199737 + 0.5652252, + 47.2766278 ], [ - -105.0036504, - 30.6199737 + 0.5650848, + 47.2811206 ], [ - -105.0036504, - 30.5589058 + 0.5716753, + 47.2812285 ], [ - -104.9417962, - 30.5589058 + 0.5715223, + 47.2857217 ], [ - -104.9417962, - 30.4963236 + 0.5781436, + 47.2858299 ], [ - -104.8782018, - 30.4963236 + 0.5779914, + 47.2903294 ], [ - -104.8782018, - 30.3098261 + 0.5846023, + 47.2904263 ], [ - -104.8155257, - 30.3098261 + 0.5843076, + 47.2994231 ], [ - -104.8155257, - 30.2478305 + 0.597499, + 47.2996094 ], [ - -104.7536079, - 30.2478305 + 0.5976637, + 47.2951375 ], [ - -104.7536079, - 29.9353916 + 0.6571596, + 47.2960036 ], [ - -104.690949, - 29.9353916 + 0.6572988, + 47.2915091 ], [ - -104.690949, - 29.8090156 + 0.6705019, + 47.2917186 ], [ - -104.6291301, - 29.8090156 + 0.6703475, + 47.2962082 ], [ - -104.6291301, - 29.6843577 + 0.6836175, + 47.2963688 ], [ - -104.5659869, - 29.6843577 + 0.6834322, + 47.3008929 ], [ - -104.5659869, - 29.6223459 + 0.690062, + 47.3009558 ], [ - -104.5037188, - 29.6223459 + 0.6899241, + 47.3054703 ], [ - -104.5037188, - 29.5595436 + 0.7362019, + 47.3061157 ], [ - -104.4410072, - 29.5595436 + 0.7360848, + 47.3106063 ], [ - -104.4410072, - 29.4974832 + 0.7559022, + 47.3108935 ], [ - -104.2537551, - 29.4974832 + 0.7557718, + 47.315392 ], [ - -104.2537551, - 29.3716718 + 0.7623755, + 47.3154716 ], [ - -104.1291984, - 29.3716718 + 0.7622314, + 47.3199941 ], [ - -104.1291984, - 29.3091621 + 0.7754911, + 47.3201546 ], [ - -104.0688737, - 29.3091621 + 0.77497, + 47.3388218 ], [ - -104.0688737, - 29.2467276 + 0.7745786, + 47.351628 ], [ - -103.8187309, - 29.2467276 + 0.7680363, + 47.3515901 ], [ - -103.8187309, - 29.1843076 + 0.767589, + 47.3605298 ], [ - -103.755736, - 29.1843076 + 0.7742443, + 47.3606238 ], [ - -103.755736, - 29.1223174 + 0.7733465, + 47.3921266 ], [ - -103.5667542, - 29.1223174 + 0.7667434, + 47.3920195 ], [ - -103.5667542, - 29.0598119 + 0.7664411, + 47.4010837 ], [ - -103.5049819, - 29.0598119 + 0.7730647, + 47.4011115 ], [ - -103.5049819, - 28.9967506 + 0.7728868, + 47.4101297 ], [ - -103.3165753, - 28.9967506 + 0.7661849, + 47.4100226 ], [ - -103.3165753, - 28.9346923 + 0.7660267, + 47.4145044 ], [ - -103.0597572, - 28.9346923 + 0.7527613, + 47.4143038 ], [ - -103.0597572, - 29.0592965 + 0.7529788, + 47.4098086 ], [ - -102.9979694, - 29.0592965 + 0.7462373, + 47.4097016 ], [ - -102.9979694, - 29.1212855 + 0.7459424, + 47.4232208 ], [ - -102.9331397, - 29.1212855 + 0.7392324, + 47.4231451 ], [ - -102.9331397, - 29.1848575 + 0.738869, + 47.4366116 ], [ - -102.8095989, - 29.1848575 + 0.7323267, + 47.4365171 ], [ - -102.8095989, - 29.2526154 + 0.7321869, + 47.4410556 ], [ - -102.8701345, - 29.2526154 + 0.7255048, + 47.44098 ], [ - -102.8701345, - 29.308096 + 0.7254209, + 47.4453479 ], [ - -102.8096681, - 29.308096 + 0.7318793, + 47.4454803 ], [ - -102.8096681, - 29.3715484 + 0.7318514, + 47.4501126 ], [ - -102.7475655, - 29.3715484 + 0.7384496, + 47.450226 ], [ - -102.7475655, - 29.5581899 + 0.7383098, + 47.454631 ], [ - -102.684554, - 29.5581899 + 0.7449359, + 47.4547444 ], [ - -102.684554, - 29.6847655 + 0.7443209, + 47.4771985 ], [ - -102.4967764, - 29.6847655 + 0.7310685, + 47.4769717 ], [ - -102.4967764, - 29.7457694 + 0.7309008, + 47.4815445 ], [ - -102.3086647, - 29.7457694 + 0.7176205, + 47.4812611 ], [ - -102.3086647, - 29.8086627 + 0.7177883, + 47.4768394 ], [ - -102.1909323, - 29.8086627 + 0.69777, + 47.4764993 ], [ - -102.1909323, - 29.7460097 + 0.6980496, + 47.4719827 ], [ - -101.5049914, - 29.7460097 + 0.6914514, + 47.4718882 ], [ - -101.5049914, - 29.6846777 + 0.6917309, + 47.4630241 ], [ - -101.3805796, - 29.6846777 + 0.6851048, + 47.4629295 ], [ - -101.3805796, - 29.5594459 + 0.684937, + 47.4673524 ], [ - -101.3175057, - 29.5594459 + 0.678255, + 47.4673335 ], [ - -101.3175057, - 29.4958934 + 0.6779754, + 47.4762158 ], [ - -101.1910075, - 29.4958934 + 0.6714051, + 47.4761592 ], [ - -101.1910075, - 29.4326115 + 0.6710417, + 47.4881952 ], [ - -101.067501, - 29.4326115 + 0.6577334, + 47.4879685 ], [ - -101.067501, - 29.308808 + 0.6578173, + 47.48504 ], [ - -100.9418897, - 29.308808 + 0.6511911, + 47.4848322 ], [ - -100.9418897, - 29.2456231 + 0.6514707, + 47.4758568 ], [ - -100.8167271, - 29.2456231 + 0.6448166, + 47.4757245 ], [ - -100.8167271, - 29.1190449 + 0.6449284, + 47.4712646 ], [ - -100.7522672, - 29.1190449 + 0.6117976, + 47.4707543 ], [ - -100.7522672, - 29.0578214 + 0.6118815, + 47.4663129 ], [ - -100.6925358, - 29.0578214 + 0.6052833, + 47.4661239 ], [ - -100.6925358, - 28.8720431 + 0.6054231, + 47.4616631 ], [ - -100.6290158, - 28.8720431 + 0.5988808, + 47.4615497 ], [ - -100.6290158, - 28.8095363 + 0.5990206, + 47.4570886 ], [ - -100.5679901, - 28.8095363 + 0.572488, + 47.4566916 ], [ - -100.5679901, - 28.622554 + 0.5721805, + 47.4656513 + ] + ] + ], + "terms_url": "http://wiki.openstreetmap.org/wiki/Tours/Orthophoto", + "terms_text": "Orthophoto Tour(s) Plus 2008" + }, + { + "name": "USGS Large Scale Imagery", + "type": "tms", + "template": "http://{switch:a,b,c}.tile.openstreetmap.us/usgs_large_scale/{zoom}/{x}/{y}.jpg", + "scaleExtent": [ + 12, + 20 + ], + "polygon": [ + [ + [ + -123.2549305, + 48.7529029 ], [ - -100.5040411, - 28.622554 + -123.2549305, + 48.5592263 ], [ - -100.5040411, - 28.5583804 + -123.192224, + 48.5592263 ], [ - -100.4421832, - 28.5583804 + -123.192224, + 48.4348366 ], [ - -100.4421832, - 28.4968266 + -122.9419646, + 48.4348366 ], [ - -100.379434, - 28.4968266 + -122.9419646, + 48.3720812 ], [ - -100.379434, - 28.3092865 + -122.8806229, + 48.3720812 ], [ - -100.3171942, - 28.3092865 + -122.8806229, + 48.3094763 ], [ - -100.3171942, - 28.1835681 + -122.8167566, + 48.3094763 ], [ - -100.254483, - 28.1835681 + -122.8167566, + 48.1904587 ], [ - -100.254483, - 28.1213885 + -123.0041133, + 48.1904587 ], [ - -100.1282282, - 28.1213885 + -123.0041133, + 48.1275918 ], [ - -100.1282282, - 28.059215 + -123.058416, + 48.1275918 ], [ - -100.0659537, - 28.059215 + -123.058416, + 48.190514 ], [ - -100.0659537, - 27.9966087 + -123.254113, + 48.190514 ], [ - -100.0023855, - 27.9966087 + -123.254113, + 48.1274982 ], [ - -100.0023855, - 27.9332152 + -123.3706593, + 48.1274982 ], [ - -99.9426497, - 27.9332152 + -123.3706593, + 48.1908403 ], [ - -99.9426497, - 27.7454658 + -124.0582632, + 48.1908403 ], [ - -99.816851, - 27.7454658 + -124.0582632, + 48.253442 ], [ - -99.816851, - 27.6834301 + -124.1815163, + 48.253442 ], [ - -99.7541346, - 27.6834301 + -124.1815163, + 48.3164666 ], [ - -99.7541346, - 27.6221543 + -124.4319117, + 48.3164666 ], [ - -99.6291629, - 27.6221543 + -124.4319117, + 48.3782613 ], [ - -99.6291629, - 27.5588977 + -124.5564618, + 48.3782613 ], [ - -99.5672838, - 27.5588977 + -124.5564618, + 48.4408305 ], [ - -99.5672838, - 27.4353752 + -124.7555107, + 48.4408305 ], [ - -99.5041798, - 27.4353752 + -124.7555107, + 48.1914986 ], [ - -99.5041798, - 27.3774021 + -124.8185282, + 48.1914986 ], [ - -99.5671796, - 27.3774021 + -124.8185282, + 48.1228381 ], [ - -99.5671796, - 27.2463726 + -124.7552951, + 48.1228381 ], [ - -99.504975, - 27.2463726 + -124.7552951, + 47.5535253 ], [ - -99.504975, - 26.9965649 + -124.3812108, + 47.5535253 ], [ - -99.4427427, - 26.9965649 + -124.3812108, + 47.1218696 ], [ - -99.4427427, - 26.872803 + -124.1928897, + 47.1218696 ], [ - -99.3800633, - 26.872803 + -124.1928897, + 43.7569431 ], [ - -99.3800633, - 26.8068179 + -124.4443382, + 43.7569431 ], [ - -99.3190684, - 26.8068179 + -124.4443382, + 43.1425556 ], [ - -99.3190684, - 26.7473614 + -124.6398855, + 43.1425556 ], [ - -99.2537541, - 26.7473614 + -124.6398855, + 42.6194503 ], [ - -99.2537541, - 26.6210068 + -124.4438525, + 42.6194503 ], [ - -99.1910617, - 26.6210068 + -124.4438525, + 39.8080662 ], [ - -99.1910617, - 26.4956737 + -123.8815685, + 39.8080662 ], [ - -99.1300639, - 26.4956737 + -123.8815685, + 39.1102825 ], [ - -99.1300639, - 26.3713808 + -123.75805, + 39.1102825 ], [ - -99.0029473, - 26.3713808 + -123.75805, + 38.4968799 ], [ - -99.0029473, - 26.3093836 + -123.2702803, + 38.4968799 ], [ - -98.816572, - 26.3093836 + -123.2702803, + 37.9331905 ], [ - -98.816572, - 26.2457762 + -122.8148084, + 37.9331905 ], [ - -98.6920082, - 26.2457762 + -122.8148084, + 37.8019606 ], [ - -98.6920082, - 26.1837096 + -122.5664316, + 37.8019606 ], [ - -98.4440896, - 26.1837096 + -122.5664316, + 36.9319611 ], [ - -98.4440896, - 26.1217217 + -121.8784026, + 36.9319611 ], [ - -98.3823181, - 26.1217217 + -121.8784026, + 36.6897596 ], [ - -98.3823181, - 26.0596488 + -122.0034748, + 36.6897596 ], [ - -98.2532707, - 26.0596488 + -122.0034748, + 36.4341056 ], [ - -98.2532707, - 25.9986871 + -121.9414159, + 36.4341056 ], [ - -98.0109084, - 25.9986871 + -121.9414159, + 35.9297636 ], [ - -98.0109084, - 25.9932255 + -121.5040977, + 35.9297636 ], [ - -97.6932319, - 25.9932255 + -121.5040977, + 35.8100273 ], [ - -97.6932319, - 25.9334103 + -121.3790276, + 35.8100273 ], [ - -97.6313904, - 25.9334103 + -121.3790276, + 35.4239164 ], [ - -97.6313904, - 25.8695893 + -120.9426515, + 35.4239164 ], [ - -97.5046779, - 25.8695893 + -120.9426515, + 35.1849683 ], [ - -97.5046779, - 25.8073488 + -120.8171978, + 35.1849683 ], [ - -97.3083401, - 25.8073488 + -120.8171978, + 35.1219894 ], [ - -97.3083401, - 25.8731159 + -120.6918447, + 35.1219894 ], [ - -97.2456326, - 25.8731159 + -120.6918447, + 34.4966794 ], [ - -97.2456326, - 25.9353731 + -120.5045898, + 34.4966794 ], [ - -97.1138939, - 25.9353731 + -120.5045898, + 34.4339651 ], [ - -97.1138939, - 27.6809179 + -120.0078775, + 34.4339651 ], [ - -97.0571035, - 27.6809179 + -120.0078775, + 34.3682626 ], [ - -97.0571035, - 27.8108242 + -119.5283517, + 34.3682626 ], [ - -95.5810766, - 27.8108242 + -119.5283517, + 34.0576434 ], [ - -95.5810766, - 28.7468827 + -119.0060985, + 34.0576434 ], [ - -94.271041, - 28.7468827 + -119.0060985, + 33.9975267 ], [ - -94.271041, - 29.5594076 + -118.5046259, + 33.9975267 ], [ - -92.5029947, - 29.5594076 + -118.5046259, + 33.8694631 ], [ - -92.5029947, - 29.4974754 + -118.4413209, + 33.8694631 ], [ - -91.8776216, - 29.4974754 + -118.4413209, + 33.6865253 ], [ - -91.8776216, - 29.3727013 + -118.066912, + 33.6865253 ], [ - -91.378418, - 29.3727013 + -118.066912, + 33.3063832 ], [ - -91.378418, - 29.2468326 + -117.5030045, + 33.3063832 ], [ - -91.3153953, - 29.2468326 + -117.5030045, + 33.0500337 ], [ - -91.3153953, - 29.1844301 + -117.3188195, + 33.0500337 ], [ - -91.1294702, - 29.1844301 + -117.3188195, + 32.6205888 ], [ - -91.1294702, - 29.1232559 + -117.1917023, + 32.6205888 ], [ - -91.0052632, - 29.1232559 + -117.1917023, + 32.4974566 ], [ - -91.0052632, - 28.9968437 + -116.746496, + 32.4974566 ], [ - -89.4500159, - 28.9968437 + -116.746496, + 32.5609161 ], [ - -89.4500159, - 28.8677422 + -115.9970138, + 32.5609161 ], [ - -88.8104309, - 28.8677422 + -115.9970138, + 32.6264942 ], [ - -88.8104309, - 30.1841864 + -114.8808125, + 32.6264942 ], [ - -85.8791527, - 30.1841864 + -114.8808125, + 32.4340796 ], [ - -85.8791527, - 29.5455038 + -114.6294474, + 32.4340796 ], [ - -84.8368083, - 29.5455038 + -114.6294474, + 32.3731636 ], [ - -84.8368083, - 29.6225158 + -114.4447437, + 32.3731636 ], [ - -84.7482786, - 29.6225158 + -114.4447437, + 32.3075418 ], [ - -84.7482786, - 29.683624 + -114.2557628, + 32.3075418 ], [ - -84.685894, - 29.683624 + -114.2557628, + 32.2444561 ], [ - -84.685894, - 29.7468386 + -114.0680274, + 32.2444561 ], [ - -83.6296975, - 29.7468386 + -114.0680274, + 32.1829113 ], [ - -83.6296975, - 29.4324361 + -113.8166499, + 32.1829113 ], [ - -83.3174937, - 29.4324361 + -113.8166499, + 32.1207622 ], [ - -83.3174937, - 29.0579442 + -113.6307421, + 32.1207622 ], [ - -82.879659, - 29.0579442 + -113.6307421, + 32.0565099 ], [ - -82.879659, - 27.7453529 + -113.4417495, + 32.0565099 ], [ - -82.8182822, - 27.7453529 + -113.4417495, + 31.9984372 ], [ - -82.8182822, - 26.9290868 + -113.2546027, + 31.9984372 ], [ - -82.3796782, - 26.9290868 + -113.2546027, + 31.9325434 ], [ - -82.3796782, - 26.3694183 + -113.068072, + 31.9325434 ], [ - -81.8777106, - 26.3694183 + -113.068072, + 31.8718062 ], [ - -81.8777106, - 25.805971 + -112.8161105, + 31.8718062 ], [ - -81.5036862, - 25.805971 + -112.8161105, + 31.8104171 ], [ - -81.5036862, - 25.7474753 + -112.6308756, + 31.8104171 ], [ - -81.4405462, - 25.7474753 + -112.6308756, + 31.7464723 ], [ - -81.4405462, - 25.6851489 + -112.4418918, + 31.7464723 ], [ - -81.3155883, - 25.6851489 + -112.4418918, + 31.6856001 ], [ - -81.3155883, - 25.5600985 + -112.257192, + 31.6856001 ], [ - -81.2538534, - 25.5600985 + -112.257192, + 31.6210352 ], [ - -81.2538534, - 25.4342361 + -112.0033787, + 31.6210352 ], [ - -81.1902012, - 25.4342361 + -112.0033787, + 31.559584 ], [ - -81.1902012, - 25.1234341 + -111.815619, + 31.559584 ], [ - -81.1288133, - 25.1234341 + -111.815619, + 31.4970238 ], [ - -81.1288133, - 25.0619389 + -111.6278586, + 31.4970238 ], [ - -81.0649231, - 25.0619389 + -111.6278586, + 31.4339867 ], [ - -81.0649231, - 24.8157807 + -111.4418978, + 31.4339867 ], [ - -81.6289469, - 24.8157807 + -111.4418978, + 31.3733859 ], [ - -81.6289469, - 24.7538367 + -111.2559708, + 31.3733859 ], [ - -81.6907173, - 24.7538367 + -111.2559708, + 31.3113225 ], [ - -81.6907173, - 24.6899374 + -108.1845822, + 31.3113225 ], [ - -81.8173189, - 24.6899374 + -108.1845822, + 31.7459502 ], [ - -81.8173189, - 24.6279161 + -106.5065055, + 31.7459502 ], [ - -82.1910041, - 24.6279161 + -106.5065055, + 31.6842308 ], [ - -82.1910041, - 24.496294 + -106.3797265, + 31.6842308 ], [ - -81.6216596, - 24.496294 + -106.3797265, + 31.621752 ], [ - -81.6216596, - 24.559484 + -106.317434, + 31.621752 ], [ - -81.372006, - 24.559484 + -106.317434, + 31.4968167 ], [ - -81.372006, - 24.6220687 + -106.2551769, + 31.4968167 ], [ - -81.0593278, - 24.6220687 + -106.2551769, + 31.4344889 ], [ - -81.0593278, - 24.684826 + -106.1924698, + 31.4344889 ], [ - -80.9347147, - 24.684826 + -106.1924698, + 31.3721296 ], [ - -80.9347147, - 24.7474828 + -106.0039212, + 31.3721296 ], [ - -80.7471081, - 24.7474828 + -106.0039212, + 31.309328 ], [ - -80.7471081, - 24.8100618 + -105.9416582, + 31.309328 ], [ - -80.3629898, - 24.8100618 + -105.9416582, + 31.2457547 ], [ - -80.3629898, - 25.1175858 + -105.8798174, + 31.2457547 ], [ - -80.122344, - 25.1175858 + -105.8798174, + 31.1836194 ], [ - -80.122344, - 25.7472357 + -105.8162349, + 31.1836194 ], [ - -80.0588458, - 25.7472357 + -105.8162349, + 31.1207155 ], [ - -80.0588458, - 26.3708251 + -105.6921198, + 31.1207155 ], [ - -79.995837, - 26.3708251 + -105.6921198, + 31.0584835 ], [ - -79.995837, - 26.9398003 + -105.6302881, + 31.0584835 ], [ - -80.0587265, - 26.9398003 + -105.6302881, + 30.9328271 ], [ - -80.0587265, - 27.1277466 + -105.5044418, + 30.9328271 ], [ - -80.1226251, - 27.1277466 + -105.5044418, + 30.8715864 ], [ - -80.1226251, - 27.2534279 + -105.4412973, + 30.8715864 ], [ - -80.1846956, - 27.2534279 + -105.4412973, + 30.808463 ], [ - -80.1846956, - 27.3781229 + -105.3781497, + 30.808463 ], [ - -80.246175, - 27.3781229 + -105.3781497, + 30.7471828 ], [ - -80.246175, - 27.5658729 + -105.1904658, + 30.7471828 ], [ - -80.3094768, - 27.5658729 + -105.1904658, + 30.6843231 ], [ - -80.3094768, - 27.7530311 + -105.1286244, + 30.6843231 ], [ - -80.3721485, - 27.7530311 + -105.1286244, + 30.6199737 ], [ - -80.3721485, - 27.8774451 + -105.0036504, + 30.6199737 ], [ - -80.4351457, - 27.8774451 + -105.0036504, + 30.5589058 ], [ - -80.4351457, - 28.0033366 + -104.9417962, + 30.5589058 ], [ - -80.4966078, - 28.0033366 + -104.9417962, + 30.4963236 ], [ - -80.4966078, - 28.1277326 + -104.8782018, + 30.4963236 ], [ - -80.5587159, - 28.1277326 + -104.8782018, + 30.3098261 ], [ - -80.5587159, - 28.3723509 + -104.8155257, + 30.3098261 ], [ - -80.4966335, - 28.3723509 + -104.8155257, + 30.2478305 ], [ - -80.4966335, - 29.5160326 + -104.7536079, + 30.2478305 ], [ - -81.1213644, - 29.5160326 + -104.7536079, + 29.9353916 ], [ - -81.1213644, - 31.6846966 + -104.690949, + 29.9353916 ], [ - -80.6018723, - 31.6846966 + -104.690949, + 29.8090156 ], [ - -80.6018723, - 32.2475309 + -104.6291301, + 29.8090156 ], [ - -79.4921024, - 32.2475309 + -104.6291301, + 29.6843577 ], [ - -79.4921024, - 32.9970261 + -104.5659869, + 29.6843577 ], [ - -79.1116488, - 32.9970261 + -104.5659869, + 29.6223459 ], [ - -79.1116488, - 33.3729457 + -104.5037188, + 29.6223459 ], [ - -78.6153621, - 33.3729457 + -104.5037188, + 29.5595436 ], [ - -78.6153621, - 33.8097638 + -104.4410072, + 29.5595436 ], [ - -77.9316963, - 33.8097638 + -104.4410072, + 29.4974832 ], [ - -77.9316963, - 33.8718243 + -104.2537551, + 29.4974832 ], [ - -77.8692252, - 33.8718243 + -104.2537551, + 29.3716718 ], [ - -77.8692252, - 34.0552454 + -104.1291984, + 29.3716718 ], [ - -77.6826392, - 34.0552454 + -104.1291984, + 29.3091621 ], [ - -77.6826392, - 34.2974598 + -104.0688737, + 29.3091621 ], [ - -77.2453509, - 34.2974598 + -104.0688737, + 29.2467276 ], [ - -77.2453509, - 34.5598585 + -103.8187309, + 29.2467276 ], [ - -76.4973277, - 34.5598585 + -103.8187309, + 29.1843076 ], [ - -76.4973277, - 34.622796 + -103.755736, + 29.1843076 ], [ - -76.4337602, - 34.622796 + -103.755736, + 29.1223174 ], [ - -76.4337602, - 34.6849285 + -103.5667542, + 29.1223174 ], [ - -76.373212, - 34.6849285 + -103.5667542, + 29.0598119 ], [ - -76.373212, - 34.7467674 + -103.5049819, + 29.0598119 ], [ - -76.3059364, - 34.7467674 + -103.5049819, + 28.9967506 ], [ - -76.3059364, - 34.808551 + -103.3165753, + 28.9967506 ], [ - -76.2468017, - 34.808551 + -103.3165753, + 28.9346923 ], [ - -76.2468017, - 34.8728418 + -103.0597572, + 28.9346923 ], [ - -76.1825922, - 34.8728418 + -103.0597572, + 29.0592965 ], [ - -76.1825922, - 34.9335332 + -102.9979694, + 29.0592965 ], [ - -76.120814, - 34.9335332 + -102.9979694, + 29.1212855 ], [ - -76.120814, - 34.9952359 + -102.9331397, + 29.1212855 ], [ - -75.9979015, - 34.9952359 + -102.9331397, + 29.1848575 ], [ - -75.9979015, - 35.0578182 + -102.8095989, + 29.1848575 ], [ - -75.870338, - 35.0578182 + -102.8095989, + 29.2526154 ], [ - -75.870338, - 35.1219097 + -102.8701345, + 29.2526154 ], [ - -75.7462194, - 35.1219097 + -102.8701345, + 29.308096 ], [ - -75.7462194, - 35.1818911 + -102.8096681, + 29.308096 ], [ - -75.4929694, - 35.1818911 + -102.8096681, + 29.3715484 ], [ - -75.4929694, - 35.3082988 + -102.7475655, + 29.3715484 ], [ - -75.4325662, - 35.3082988 + -102.7475655, + 29.5581899 ], [ - -75.4325662, - 35.7542495 + -102.684554, + 29.5581899 ], [ - -75.4969907, - 35.7542495 + -102.684554, + 29.6847655 ], [ - -75.4969907, - 37.8105602 + -102.4967764, + 29.6847655 ], [ - -75.3082972, - 37.8105602 + -102.4967764, + 29.7457694 ], [ - -75.3082972, - 37.8720088 + -102.3086647, + 29.7457694 ], [ - -75.245601, - 37.8720088 + -102.3086647, + 29.8086627 ], [ - -75.245601, - 37.9954849 + -102.1909323, + 29.8086627 ], [ - -75.1828751, - 37.9954849 + -102.1909323, + 29.7460097 ], [ - -75.1828751, - 38.0585079 + -101.5049914, + 29.7460097 ], [ - -75.1184793, - 38.0585079 + -101.5049914, + 29.6846777 ], [ - -75.1184793, - 38.2469091 + -101.3805796, + 29.6846777 ], [ - -75.0592098, - 38.2469091 + -101.3805796, + 29.5594459 ], [ - -75.0592098, - 38.3704316 + -101.3175057, + 29.5594459 ], [ - -74.9948111, - 38.3704316 + -101.3175057, + 29.4958934 ], [ - -74.9948111, - 38.8718417 + -101.1910075, + 29.4958934 ], [ - -74.4878252, - 38.8718417 + -101.1910075, + 29.4326115 ], [ - -74.4878252, - 39.3089428 + -101.067501, + 29.4326115 ], [ - -74.1766317, - 39.3089428 + -101.067501, + 29.308808 ], [ - -74.1766317, - 39.6224653 + -100.9418897, + 29.308808 ], [ - -74.0567045, - 39.6224653 + -100.9418897, + 29.2456231 ], [ - -74.0567045, - 39.933178 + -100.8167271, + 29.2456231 ], [ - -73.9959035, - 39.933178 + -100.8167271, + 29.1190449 ], [ - -73.9959035, - 40.1854852 + -100.7522672, + 29.1190449 ], [ - -73.9341593, - 40.1854852 + -100.7522672, + 29.0578214 ], [ - -73.9341593, - 40.4959486 + -100.6925358, + 29.0578214 ], [ - -73.8723024, - 40.4959486 + -100.6925358, + 28.8720431 ], [ - -73.8723024, - 40.5527135 + -100.6290158, + 28.8720431 ], [ - -71.8074506, - 40.5527135 + -100.6290158, + 28.8095363 ], [ - -71.8074506, - 41.3088005 + -100.5679901, + 28.8095363 ], [ - -70.882512, - 41.3088005 + -100.5679901, + 28.622554 ], [ - -70.882512, - 41.184978 + -100.5040411, + 28.622554 ], [ - -70.7461947, - 41.184978 + -100.5040411, + 28.5583804 ], [ - -70.7461947, - 41.3091865 + -100.4421832, + 28.5583804 ], [ - -70.4337553, - 41.3091865 + -100.4421832, + 28.4968266 ], [ - -70.4337553, - 41.4963885 + -100.379434, + 28.4968266 ], [ - -69.9334281, - 41.4963885 + -100.379434, + 28.3092865 ], [ - -69.9334281, - 41.6230802 + -100.3171942, + 28.3092865 ], [ - -69.869857, - 41.6230802 + -100.3171942, + 28.1835681 ], [ - -69.869857, - 41.8776895 + -100.254483, + 28.1835681 ], [ - -69.935791, - 41.8776895 + -100.254483, + 28.1213885 ], [ - -69.935791, - 42.0032342 + -100.1282282, + 28.1213885 ], [ - -69.9975823, - 42.0032342 + -100.1282282, + 28.059215 ], [ - -69.9975823, - 42.0650191 + -100.0659537, + 28.059215 ], [ - -70.0606103, - 42.0650191 + -100.0659537, + 27.9966087 ], [ - -70.0606103, - 42.1294348 + -100.0023855, + 27.9966087 ], [ - -70.5572884, - 42.1294348 + -100.0023855, + 27.9332152 ], [ - -70.5572884, - 43.2487079 + -99.9426497, + 27.9332152 ], [ - -70.4974097, - 43.2487079 + -99.9426497, + 27.7454658 ], [ - -70.4974097, - 43.3092194 + -99.816851, + 27.7454658 ], [ - -70.3704249, - 43.3092194 + -99.816851, + 27.6834301 ], [ - -70.3704249, - 43.371963 + -99.7541346, + 27.6834301 ], [ - -70.3085701, - 43.371963 + -99.7541346, + 27.6221543 ], [ - -70.3085701, - 43.4969879 + -99.6291629, + 27.6221543 ], [ - -70.183921, - 43.4969879 + -99.6291629, + 27.5588977 ], [ - -70.183921, - 43.6223531 + -99.5672838, + 27.5588977 ], [ - -70.057583, - 43.6223531 + -99.5672838, + 27.4353752 ], [ - -70.057583, - 43.6850173 + -99.5041798, + 27.4353752 ], [ - -69.7455247, - 43.6850173 + -99.5041798, + 27.3774021 ], [ - -69.7455247, - 43.7476571 + -99.5671796, + 27.3774021 ], [ - -69.2472845, - 43.7476571 + -99.5671796, + 27.2463726 ], [ - -69.2472845, - 43.8107035 + -99.504975, + 27.2463726 ], [ - -69.0560701, - 43.8107035 + -99.504975, + 26.9965649 ], [ - -69.0560701, - 43.8717247 + -99.4427427, + 26.9965649 ], [ - -68.9950522, - 43.8717247 + -99.4427427, + 26.872803 ], [ - -68.9950522, - 43.9982022 + -99.3800633, + 26.872803 ], [ - -68.4963672, - 43.9982022 + -99.3800633, + 26.8068179 ], [ - -68.4963672, - 44.0597368 + -99.3190684, + 26.8068179 ], [ - -68.3081038, - 44.0597368 + -99.3190684, + 26.7473614 ], [ - -68.3081038, - 44.122137 + -99.2537541, + 26.7473614 ], [ - -68.1851802, - 44.122137 + -99.2537541, + 26.6210068 ], [ - -68.1851802, - 44.3081382 + -99.1910617, + 26.6210068 ], [ - -67.9956019, - 44.3081382 + -99.1910617, + 26.4956737 ], [ - -67.9956019, - 44.3727489 + -99.1300639, + 26.4956737 ], [ - -67.8103041, - 44.3727489 + -99.1300639, + 26.3713808 ], [ - -67.8103041, - 44.435178 + -99.0029473, + 26.3713808 ], [ - -67.4965289, - 44.435178 + -99.0029473, + 26.3093836 ], [ - -67.4965289, - 44.4968776 + -98.816572, + 26.3093836 ], [ - -67.37102, - 44.4968776 + -98.816572, + 26.2457762 ], [ - -67.37102, - 44.5600642 + -98.6920082, + 26.2457762 ], [ - -67.1848753, - 44.5600642 + -98.6920082, + 26.1837096 ], [ - -67.1848753, - 44.6213345 + -98.4440896, + 26.1837096 ], [ - -67.1221208, - 44.6213345 + -98.4440896, + 26.1217217 ], [ - -67.1221208, - 44.6867918 + -98.3823181, + 26.1217217 ], [ - -67.059365, - 44.6867918 + -98.3823181, + 26.0596488 ], [ - -67.059365, - 44.7473657 + -98.2532707, + 26.0596488 ], [ - -66.9311098, - 44.7473657 + -98.2532707, + 25.9986871 ], [ - -66.9311098, - 44.9406566 + -98.0109084, + 25.9986871 ], [ - -66.994683, - 44.9406566 + -98.0109084, + 25.9932255 ], [ - -66.994683, - 45.0024514 + -97.6932319, + 25.9932255 ], [ - -67.0595847, - 45.0024514 + -97.6932319, + 25.9334103 ], [ - -67.0595847, - 45.1273377 + -97.6313904, + 25.9334103 ], [ - -67.1201974, - 45.1273377 + -97.6313904, + 25.8695893 ], [ - -67.1201974, - 45.1910115 + -97.5046779, + 25.8695893 ], [ - -67.2469811, - 45.1910115 + -97.5046779, + 25.8073488 ], [ - -67.2469811, - 45.253442 + -97.3083401, + 25.8073488 ], [ - -67.3177546, - 45.253442 + -97.3083401, + 25.8731159 ], [ - -67.3177546, - 45.1898369 + -97.2456326, + 25.8731159 ], [ - -67.370749, - 45.1898369 + -97.2456326, + 25.9353731 ], [ - -67.370749, - 45.2534001 + -97.1138939, + 25.9353731 ], [ - -67.4326888, - 45.2534001 + -97.1138939, + 27.6809179 ], [ - -67.4326888, - 45.3083409 + -97.0571035, + 27.6809179 ], [ - -67.3708571, - 45.3083409 + -97.0571035, + 27.8108242 ], [ - -67.3708571, - 45.4396986 + -95.5810766, + 27.8108242 ], [ - -67.4305573, - 45.4396986 + -95.5810766, + 28.7468827 ], [ - -67.4305573, - 45.4950095 + -94.271041, + 28.7468827 ], [ - -67.37099, - 45.4950095 + -94.271041, + 29.5594076 ], [ - -67.37099, - 45.6264543 + -92.5029947, + 29.5594076 ], [ - -67.6214982, - 45.6264543 + -92.5029947, + 29.4974754 ], [ - -67.6214982, - 45.6896133 + -91.8776216, + 29.4974754 ], [ - -67.683828, - 45.6896133 + -91.8776216, + 29.3727013 ], [ - -67.683828, - 45.753259 + -91.378418, + 29.3727013 ], [ - -67.7462097, - 45.753259 + -91.378418, + 29.2468326 ], [ - -67.7462097, - 47.1268165 + -91.3153953, + 29.2468326 ], [ - -67.8700141, - 47.1268165 + -91.3153953, + 29.1844301 ], [ - -67.8700141, - 47.1900278 + -91.1294702, + 29.1844301 ], [ - -67.9323803, - 47.1900278 + -91.1294702, + 29.1232559 ], [ - -67.9323803, - 47.2539678 + -91.0052632, + 29.1232559 ], [ - -67.9959387, - 47.2539678 + -91.0052632, + 28.9968437 ], [ - -67.9959387, - 47.3149737 + -89.4500159, + 28.9968437 ], [ - -68.1206676, - 47.3149737 + -89.4500159, + 28.8677422 ], [ - -68.1206676, - 47.3780823 + -88.8104309, + 28.8677422 ], [ - -68.4423175, - 47.3780823 + -88.8104309, + 30.1841864 ], [ - -68.4423175, - 47.3166082 + -85.8791527, + 30.1841864 ], [ - -68.6314305, - 47.3166082 + -85.8791527, + 29.5455038 ], [ - -68.6314305, - 47.2544676 + -84.8368083, + 29.5455038 ], [ - -68.9978037, - 47.2544676 + -84.8368083, + 29.6225158 ], [ - -68.9978037, - 47.439895 + -84.7482786, + 29.6225158 ], [ - -69.0607223, - 47.439895 + -84.7482786, + 29.683624 ], [ - -69.0607223, - 47.5047558 + -84.685894, + 29.683624 ], [ - -69.2538122, - 47.5047558 + -84.685894, + 29.7468386 ], [ - -69.2538122, - 47.4398084 + -83.6296975, + 29.7468386 ], [ - -69.3179284, - 47.4398084 + -83.6296975, + 29.4324361 ], [ - -69.3179284, - 47.378601 + -83.3174937, + 29.4324361 ], [ - -69.4438546, - 47.378601 + -83.3174937, + 29.0579442 ], [ - -69.4438546, - 47.3156274 + -82.879659, + 29.0579442 ], [ - -69.5038204, - 47.3156274 + -82.879659, + 27.7453529 ], [ - -69.5038204, - 47.2525839 + -82.8182822, + 27.7453529 ], [ - -69.5667838, - 47.2525839 + -82.8182822, + 26.9290868 ], [ - -69.5667838, - 47.1910884 + -82.3796782, + 26.9290868 ], [ - -69.6303478, - 47.1910884 + -82.3796782, + 26.3694183 ], [ - -69.6303478, - 47.128701 + -81.8777106, + 26.3694183 ], [ - -69.6933103, - 47.128701 + -81.8777106, + 25.805971 ], [ - -69.6933103, - 47.0654307 + -81.5036862, + 25.805971 ], [ - -69.7557063, - 47.0654307 + -81.5036862, + 25.7474753 ], [ - -69.7557063, - 47.0042751 + -81.4405462, + 25.7474753 ], [ - -69.8180391, - 47.0042751 + -81.4405462, + 25.6851489 ], [ - -69.8180391, - 46.9415344 + -81.3155883, + 25.6851489 ], [ - -69.8804023, - 46.9415344 + -81.3155883, + 25.5600985 ], [ - -69.8804023, - 46.8792519 + -81.2538534, + 25.5600985 ], [ - -69.9421674, - 46.8792519 + -81.2538534, + 25.4342361 ], [ - -69.9421674, - 46.8177399 + -81.1902012, + 25.4342361 ], [ - -70.0063088, - 46.8177399 + -81.1902012, + 25.1234341 ], [ - -70.0063088, - 46.6920295 + -81.1288133, + 25.1234341 ], [ - -70.0704265, - 46.6920295 + -81.1288133, + 25.0619389 ], [ - -70.0704265, - 46.4425926 + -81.0649231, + 25.0619389 ], [ - -70.1945902, - 46.4425926 + -81.0649231, + 24.8157807 ], [ - -70.1945902, - 46.3785887 + -81.6289469, + 24.8157807 ], [ - -70.2562047, - 46.3785887 + -81.6289469, + 24.7538367 ], [ - -70.2562047, - 46.3152628 + -81.6907173, + 24.7538367 ], [ - -70.3203651, - 46.3152628 + -81.6907173, + 24.6899374 ], [ - -70.3203651, - 46.0651209 + -81.8173189, + 24.6899374 ], [ - -70.3814988, - 46.0651209 + -81.8173189, + 24.6279161 ], [ - -70.3814988, - 45.93552 + -82.1910041, + 24.6279161 ], [ - -70.3201618, - 45.93552 + -82.1910041, + 24.496294 ], [ - -70.3201618, - 45.879479 + -81.6216596, + 24.496294 ], [ - -70.4493131, - 45.879479 + -81.6216596, + 24.559484 ], [ - -70.4493131, - 45.7538713 + -81.372006, + 24.559484 ], [ - -70.5070021, - 45.7538713 + -81.372006, + 24.6220687 ], [ - -70.5070021, - 45.6916912 + -81.0593278, + 24.6220687 ], [ - -70.6316642, - 45.6916912 + -81.0593278, + 24.684826 ], [ - -70.6316642, - 45.6291619 + -80.9347147, + 24.684826 ], [ - -70.7575538, - 45.6291619 + -80.9347147, + 24.7474828 ], [ - -70.7575538, - 45.4414685 + -80.7471081, + 24.7474828 ], [ - -70.8809878, - 45.4414685 + -80.7471081, + 24.8100618 ], [ - -70.8809878, - 45.3780612 + -80.3629898, + 24.8100618 ], [ - -71.13328, - 45.3780612 + -80.3629898, + 25.1175858 ], [ - -71.13328, - 45.3151452 + -80.122344, + 25.1175858 ], [ - -71.3830282, - 45.3151452 + -80.122344, + 25.7472357 ], [ - -71.3830282, - 45.253416 + -80.0588458, + 25.7472357 ], [ - -71.5076448, - 45.253416 + -80.0588458, + 26.3708251 ], [ - -71.5076448, - 45.0655726 + -79.995837, + 26.3708251 ], [ - -73.9418929, - 45.0655726 + -79.995837, + 26.9398003 ], [ - -73.9418929, - 45.0031242 + -80.0587265, + 26.9398003 ], [ - -74.7469725, - 45.0031242 + -80.0587265, + 27.1277466 ], [ - -74.7469725, - 45.0649003 + -80.1226251, + 27.1277466 ], [ - -74.8800964, - 45.0649003 + -80.1226251, + 27.2534279 ], [ - -74.8800964, - 45.0029023 + -80.1846956, + 27.2534279 ], [ - -75.0662455, - 45.0029023 + -80.1846956, + 27.3781229 ], [ - -75.0662455, - 44.9415167 + -80.246175, + 27.3781229 ], [ - -75.2539363, - 44.9415167 + -80.246175, + 27.5658729 ], [ - -75.2539363, - 44.8776043 + -80.3094768, + 27.5658729 ], [ - -75.3789648, - 44.8776043 + -80.3094768, + 27.7530311 ], [ - -75.3789648, - 44.8153462 + -80.3721485, + 27.7530311 ], [ - -75.4431283, - 44.8153462 + -80.3721485, + 27.8774451 ], [ - -75.4431283, - 44.7536053 + -80.4351457, + 27.8774451 ], [ - -75.5666566, - 44.7536053 + -80.4351457, + 28.0033366 ], [ - -75.5666566, - 44.6909879 + -80.4966078, + 28.0033366 ], [ - -75.6290205, - 44.6909879 + -80.4966078, + 28.1277326 ], [ - -75.6290205, - 44.6284958 + -80.5587159, + 28.1277326 ], [ - -75.7540484, - 44.6284958 + -80.5587159, + 28.3723509 ], [ - -75.7540484, - 44.566385 + -80.4966335, + 28.3723509 ], [ - -75.817312, - 44.566385 + -80.4966335, + 29.5160326 ], [ - -75.817312, - 44.5028932 + -81.1213644, + 29.5160326 ], [ - -75.8799549, - 44.5028932 + -81.1213644, + 31.6846966 ], [ - -75.8799549, - 44.3784946 + -80.6018723, + 31.6846966 ], [ - -76.1300319, - 44.3784946 + -80.6018723, + 32.2475309 ], [ - -76.1300319, - 44.3159227 + -79.4921024, + 32.2475309 ], [ - -76.1926961, - 44.3159227 + -79.4921024, + 32.9970261 ], [ - -76.1926961, - 44.2534378 + -79.1116488, + 32.9970261 ], [ - -76.3182619, - 44.2534378 + -79.1116488, + 33.3729457 ], [ - -76.3182619, - 44.1916726 + -78.6153621, + 33.3729457 ], [ - -76.3792975, - 44.1916726 + -78.6153621, + 33.8097638 ], [ - -76.3792975, - 44.0653733 + -77.9316963, + 33.8097638 ], [ - -76.4427584, - 44.0653733 + -77.9316963, + 33.8718243 ], [ - -76.4427584, - 43.9963825 + -77.8692252, + 33.8718243 ], [ - -76.317027, - 43.9963825 + -77.8692252, + 34.0552454 ], [ - -76.317027, - 43.9414581 + -77.6826392, + 34.0552454 ], [ - -76.5076611, - 43.9414581 + -77.6826392, + 34.2974598 ], [ - -76.5076611, - 43.8723335 + -77.2453509, + 34.2974598 ], [ - -76.3829974, - 43.8723335 + -77.2453509, + 34.5598585 ], [ - -76.3829974, - 43.8091872 + -76.4973277, + 34.5598585 ], [ - -76.2534102, - 43.8091872 + -76.4973277, + 34.622796 ], [ - -76.2534102, - 43.5665222 + -76.4337602, + 34.622796 ], [ - -76.5064833, - 43.5665222 + -76.4337602, + 34.6849285 ], [ - -76.5064833, - 43.5033881 + -76.373212, + 34.6849285 ], [ - -76.6331208, - 43.5033881 + -76.373212, + 34.7467674 ], [ - -76.6331208, - 43.4432252 + -76.3059364, + 34.7467674 ], [ - -76.6951085, - 43.4432252 + -76.3059364, + 34.808551 ], [ - -76.6951085, - 43.3786858 + -76.2468017, + 34.808551 ], [ - -76.8177798, - 43.3786858 + -76.2468017, + 34.8728418 ], [ - -76.8177798, - 43.318066 + -76.1825922, + 34.8728418 ], [ - -77.682, - 43.318066 + -76.1825922, + 34.9335332 ], [ - -77.682, - 43.3789376 + -76.120814, + 34.9335332 ], [ - -78.0565883, - 43.3789376 + -76.120814, + 34.9952359 ], [ - -78.0565883, - 43.4396918 + -75.9979015, + 34.9952359 ], [ - -78.4389748, - 43.4396918 + -75.9979015, + 35.0578182 ], [ - -78.4389748, - 43.3794382 + -75.870338, + 35.0578182 ], [ - -78.8803396, - 43.3794382 + -75.870338, + 35.1219097 ], [ - -78.8803396, - 43.3149724 + -75.7462194, + 35.1219097 ], [ - -79.1298858, - 43.3149724 + -75.7462194, + 35.1818911 ], [ - -79.1298858, - 43.2429286 + -75.4929694, + 35.1818911 ], [ - -79.0669615, - 43.2429286 + -75.4929694, + 35.3082988 ], [ - -79.0669615, - 43.1299931 + -75.4325662, + 35.3082988 ], [ - -79.1298858, - 43.1299931 + -75.4325662, + 35.7542495 ], [ - -79.1298858, - 43.0577305 + -75.4969907, + 35.7542495 ], [ - -79.071264, - 43.0577305 + -75.4969907, + 37.8105602 ], [ - -79.071264, - 42.9294906 + -75.3082972, + 37.8105602 ], [ - -78.943264, - 42.9294906 + -75.3082972, + 37.8720088 ], [ - -78.943264, - 42.7542165 + -75.245601, + 37.8720088 ], [ - -79.069439, - 42.7542165 + -75.245601, + 37.9954849 ], [ - -79.069439, - 42.6941622 + -75.1828751, + 37.9954849 ], [ - -79.133439, - 42.6941622 + -75.1828751, + 38.0585079 ], [ - -79.133439, - 42.6296973 + -75.1184793, + 38.0585079 ], [ - -79.1947499, - 42.6296973 + -75.1184793, + 38.2469091 ], [ - -79.1947499, - 42.5663538 + -75.0592098, + 38.2469091 ], [ - -79.3786827, - 42.5663538 + -75.0592098, + 38.3704316 ], [ - -79.3786827, - 42.5033425 + -74.9948111, + 38.3704316 ], [ - -79.4442961, - 42.5033425 + -74.9948111, + 38.8718417 ], [ - -79.4442961, - 42.4410614 + -74.4878252, + 38.8718417 ], [ - -79.5679936, - 42.4410614 + -74.4878252, + 39.3089428 ], [ - -79.5679936, - 42.3775264 + -74.1766317, + 39.3089428 ], [ - -79.6906154, - 42.3775264 + -74.1766317, + 39.6224653 ], [ - -79.6906154, - 42.3171086 + -74.0567045, + 39.6224653 ], [ - -79.8164642, - 42.3171086 + -74.0567045, + 39.933178 ], [ - -79.8164642, - 42.2534481 + -73.9959035, + 39.933178 ], [ - -80.0052373, - 42.2534481 + -73.9959035, + 40.1854852 ], [ - -80.0052373, - 42.1909188 + -73.9341593, + 40.1854852 ], [ - -80.1916829, - 42.1909188 + -73.9341593, + 40.4959486 ], [ - -80.1916829, - 42.1272555 + -73.8723024, + 40.4959486 ], [ - -80.3167992, - 42.1272555 + -73.8723024, + 40.5527135 ], [ - -80.3167992, - 42.0669857 + -71.8074506, + 40.5527135 ], [ - -80.5063234, - 42.0669857 + -71.8074506, + 41.3088005 ], [ - -80.5063234, - 42.0034331 + -70.882512, + 41.3088005 ], [ - -80.6930471, - 42.0034331 + -70.882512, + 41.184978 ], [ - -80.6930471, - 41.9415141 + -70.7461947, + 41.184978 ], [ - -80.9440403, - 41.9415141 + -70.7461947, + 41.3091865 ], [ - -80.9440403, - 41.8781193 + -70.4337553, + 41.3091865 ], [ - -81.1942729, - 41.8781193 + -70.4337553, + 41.4963885 ], [ - -81.1942729, - 41.8166455 + -69.9334281, + 41.4963885 ], [ - -81.3190089, - 41.8166455 + -69.9334281, + 41.6230802 ], [ - -81.3190089, - 41.7545453 + -69.869857, + 41.6230802 ], [ - -81.4418435, - 41.7545453 + -69.869857, + 41.8776895 ], [ - -81.4418435, - 41.690965 + -69.935791, + 41.8776895 ], [ - -81.5053523, - 41.690965 + -69.935791, + 42.0032342 ], [ - -81.5053523, - 41.6301643 + -69.9975823, + 42.0032342 ], [ - -82.7470081, - 41.6301643 + -69.9975823, + 42.0650191 ], [ - -82.7470081, - 41.7536942 + -70.0606103, + 42.0650191 ], [ - -82.8839135, - 41.7536942 + -70.0606103, + 42.1294348 ], [ - -82.8839135, - 41.5656075 + -70.5572884, + 42.1294348 ], [ - -82.9957195, - 41.5656075 + -70.5572884, + 43.2487079 ], [ - -82.9957195, - 41.6270375 + -70.4974097, + 43.2487079 ], [ - -83.1257796, - 41.6270375 + -70.4974097, + 43.3092194 ], [ - -83.1257796, - 41.6878411 + -70.3704249, + 43.3092194 ], [ - -83.2474733, - 41.6878411 + -70.3704249, + 43.371963 ], [ - -83.2474733, - 41.7536942 + -70.3085701, + 43.371963 ], [ - -83.3737305, - 41.7536942 + -70.3085701, + 43.4969879 ], [ - -83.3737305, - 41.809276 + -70.183921, + 43.4969879 ], [ - -83.3106019, - 41.809276 + -70.183921, + 43.6223531 ], [ - -83.3106019, - 41.8716064 + -70.057583, + 43.6223531 ], [ - -83.2474733, - 41.8716064 + -70.057583, + 43.6850173 ], [ - -83.2474733, - 41.9361393 + -69.7455247, + 43.6850173 ], [ - -83.1843447, - 41.9361393 + -69.7455247, + 43.7476571 ], [ - -83.1843447, - 41.9960851 + -69.2472845, + 43.7476571 ], [ - -83.1207681, - 41.9960851 + -69.2472845, + 43.8107035 ], [ - -83.1207681, - 42.2464812 + -69.0560701, + 43.8107035 ], [ - -83.0589194, - 42.2464812 + -69.0560701, + 43.8717247 ], [ - -83.0589194, - 42.3089555 + -68.9950522, + 43.8717247 ], [ - -82.8685328, - 42.3089555 + -68.9950522, + 43.9982022 ], [ - -82.8685328, - 42.3717652 + -68.4963672, + 43.9982022 ], [ - -82.8072219, - 42.3717652 + -68.4963672, + 44.0597368 ], [ - -82.8072219, - 42.558553 + -68.3081038, + 44.0597368 ], [ - -82.7553745, - 42.558553 + -68.3081038, + 44.122137 ], [ - -82.7553745, - 42.4954945 + -68.1851802, + 44.122137 ], [ - -82.5599041, - 42.4954945 + -68.1851802, + 44.3081382 ], [ - -82.5599041, - 42.558553 + -67.9956019, + 44.3081382 ], [ - -82.4967755, - 42.558553 + -67.9956019, + 44.3727489 ], [ - -82.4967755, - 42.6833607 + -67.8103041, + 44.3727489 ], [ - -82.4328863, - 42.6833607 + -67.8103041, + 44.435178 ], [ - -82.4328863, - 42.9342196 + -67.4965289, + 44.435178 ], [ - -82.3700552, - 42.9342196 + -67.4965289, + 44.4968776 ], [ - -82.3700552, - 43.0648071 + -67.37102, + 44.4968776 ], [ - -82.4328863, - 43.0648071 + -67.37102, + 44.5600642 ], [ - -82.4328863, - 43.1917566 + -67.1848753, + 44.5600642 ], [ - -82.4947464, - 43.1917566 + -67.1848753, + 44.6213345 ], [ - -82.4947464, - 43.5034627 + -67.1221208, + 44.6213345 ], [ - -82.557133, - 43.5034627 + -67.1221208, + 44.6867918 ], [ - -82.557133, - 43.8160901 + -67.059365, + 44.6867918 ], [ - -82.6197884, - 43.8160901 + -67.059365, + 44.7473657 ], [ - -82.6197884, - 43.9422098 + -66.9311098, + 44.7473657 ], [ - -82.6839499, - 43.9422098 + -66.9311098, + 44.9406566 ], [ - -82.6839499, - 44.0022641 + -66.994683, + 44.9406566 ], [ - -82.7465346, - 44.0022641 + -66.994683, + 45.0024514 ], [ - -82.7465346, - 44.0670545 + -67.0595847, + 45.0024514 ], [ - -82.8708696, - 44.0670545 + -67.0595847, + 45.1273377 ], [ - -82.8708696, - 44.1291935 + -67.1201974, + 45.1273377 ], [ - -83.008517, - 44.1291935 + -67.1201974, + 45.1910115 ], [ - -83.008517, - 44.0664786 + -67.2469811, + 45.1910115 ], [ - -83.1336086, - 44.0664786 + -67.2469811, + 45.253442 ], [ - -83.1336086, - 44.0053949 + -67.3177546, + 45.253442 ], [ - -83.2414522, - 44.0053949 + -67.3177546, + 45.1898369 ], [ - -83.2414522, - 44.9962034 + -67.370749, + 45.1898369 ], [ - -83.1806112, - 44.9962034 + -67.370749, + 45.2534001 ], [ - -83.1806112, - 45.067302 + -67.4326888, + 45.2534001 ], [ - -83.2455172, - 45.067302 + -67.4326888, + 45.3083409 ], [ - -83.2455172, - 45.1287382 + -67.3708571, + 45.3083409 ], [ - -83.3065878, - 45.1287382 + -67.3708571, + 45.4396986 ], [ - -83.3065878, - 45.2551509 + -67.4305573, + 45.4396986 ], [ - -83.3706087, - 45.2551509 + -67.4305573, + 45.4950095 ], [ - -83.3706087, - 45.3165923 + -67.37099, + 45.4950095 ], [ - -83.4325644, - 45.3165923 + -67.37099, + 45.6264543 ], [ - -83.4325644, - 45.3792105 + -67.6214982, + 45.6264543 ], [ - -83.6178415, - 45.3792105 + -67.6214982, + 45.6896133 ], [ - -83.6178415, - 45.4419665 + -67.683828, + 45.6896133 ], [ - -83.8084291, - 45.4419665 + -67.683828, + 45.753259 ], [ - -83.8084291, - 45.5036189 + -67.7462097, + 45.753259 ], [ - -84.0550718, - 45.5036189 + -67.7462097, + 47.1268165 ], [ - -84.0550718, - 45.5647907 + -67.8700141, + 47.1268165 ], [ - -84.1235181, - 45.5647907 + -67.8700141, + 47.1900278 ], [ - -84.1235181, - 45.6287845 + -67.9323803, + 47.1900278 ], [ - -84.1807534, - 45.6287845 + -67.9323803, + 47.2539678 ], [ - -84.1807534, - 45.6914688 + -67.9959387, + 47.2539678 ], [ - -84.3111554, - 45.6914688 + -67.9959387, + 47.3149737 ], [ - -84.3111554, - 45.9337076 + -68.1206676, + 47.3149737 ], [ - -83.8209974, - 45.9337076 + -68.1206676, + 47.3780823 ], [ - -83.8209974, - 45.8725113 + -68.4423175, + 47.3780823 ], [ - -83.4968086, - 45.8725113 + -68.4423175, + 47.3166082 ], [ - -83.4968086, - 45.9337076 + -68.6314305, + 47.3166082 ], [ - -83.4338066, - 45.9337076 + -68.6314305, + 47.2544676 ], [ - -83.4338066, - 46.0016863 + -68.9978037, + 47.2544676 ], [ - -83.4962697, - 46.0016863 + -68.9978037, + 47.439895 ], [ - -83.4962697, - 46.0668178 + -69.0607223, + 47.439895 ], [ - -83.5599956, - 46.0668178 + -69.0607223, + 47.5047558 ], [ - -83.5599956, - 46.1261576 + -69.2538122, + 47.5047558 ], [ - -83.9954558, - 46.1261576 + -69.2538122, + 47.4398084 ], [ - -83.9954558, - 46.1931747 + -69.3179284, + 47.4398084 ], [ - -84.0591816, - 46.1931747 + -69.3179284, + 47.378601 ], [ - -84.0591816, - 46.3814972 + -69.4438546, + 47.378601 ], [ - -84.1152614, - 46.3814972 + -69.4438546, + 47.3156274 ], [ - -84.1152614, - 46.4953584 + -69.5038204, + 47.3156274 ], [ - -84.0591816, - 46.4953584 + -69.5038204, + 47.2525839 ], [ - -84.0591816, - 46.5682653 + -69.5667838, + 47.2525839 ], [ - -84.2579545, - 46.5682653 + -69.5667838, + 47.1910884 ], [ - -84.2579545, - 46.5051232 + -69.6303478, + 47.1910884 ], [ - -84.3071879, - 46.5051232 + -69.6303478, + 47.128701 ], [ - -84.3071879, - 46.5682653 + -69.6933103, + 47.128701 ], [ - -84.4415364, - 46.5682653 + -69.6933103, + 47.0654307 ], [ - -84.4415364, - 46.504525 + -69.7557063, + 47.0654307 ], [ - -84.9965729, - 46.504525 + -69.7557063, + 47.0042751 ], [ - -84.9965729, - 46.6842882 + -69.8180391, + 47.0042751 ], [ - -84.9298158, - 46.6842882 + -69.8180391, + 46.9415344 ], [ - -84.9298158, - 46.818077 + -69.8804023, + 46.9415344 ], [ - -85.3165894, - 46.818077 + -69.8804023, + 46.8792519 ], [ - -85.3165894, - 46.7535825 + -69.9421674, + 46.8792519 ], [ - -87.5562645, - 46.7535825 + -69.9421674, + 46.8177399 ], [ - -87.5562645, - 47.4407371 + -70.0063088, + 46.8177399 ], [ - -87.6825361, - 47.4407371 + -70.0063088, + 46.6920295 ], [ - -87.6825361, - 47.5035554 + -70.0704265, + 46.6920295 ], [ - -88.2560738, - 47.5035554 + -70.0704265, + 46.4425926 ], [ - -88.2560738, - 47.4433716 + -70.1945902, + 46.4425926 ], [ - -88.4417419, - 47.4433716 + -70.1945902, + 46.3785887 ], [ - -88.4417419, - 47.3789949 + -70.2562047, + 46.3785887 ], [ - -88.50683, - 47.3789949 + -70.2562047, + 46.3152628 ], [ - -88.50683, - 47.3153881 + -70.3203651, + 46.3152628 ], [ - -88.6312821, - 47.3153881 + -70.3203651, + 46.0651209 ], [ - -88.6312821, - 47.2539782 + -70.3814988, + 46.0651209 ], [ - -88.7569636, - 47.2539782 + -70.3814988, + 45.93552 ], [ - -88.7569636, - 47.1934682 + -70.3201618, + 45.93552 ], [ - -88.8838253, - 47.1934682 + -70.3201618, + 45.879479 ], [ - -88.8838253, - 47.1284735 + -70.4493131, + 45.879479 ], [ - -88.9434208, - 47.1284735 + -70.4493131, + 45.7538713 ], [ - -88.9434208, - 47.0662127 + -70.5070021, + 45.7538713 ], [ - -89.0708726, - 47.0662127 + -70.5070021, + 45.6916912 ], [ - -89.0708726, - 47.0026826 + -70.6316642, + 45.6916912 ], [ - -89.2565553, - 47.0026826 + -70.6316642, + 45.6291619 ], [ - -89.2565553, - 46.9410806 + -70.7575538, + 45.6291619 ], [ - -90.3677669, - 46.9410806 + -70.7575538, + 45.4414685 ], [ - -90.3677669, - 47.6844827 + -70.8809878, + 45.4414685 ], [ - -90.3069978, - 47.6844827 + -70.8809878, + 45.3780612 ], [ - -90.3069978, - 47.7460174 + -71.13328, + 45.3780612 ], [ - -89.994859, - 47.7460174 + -71.13328, + 45.3151452 ], [ - -89.994859, - 47.8082719 + -71.3830282, + 45.3151452 ], [ - -89.8048615, - 47.8082719 + -71.3830282, + 45.253416 ], [ - -89.8048615, - 47.8700562 + -71.5076448, + 45.253416 ], [ - -89.6797699, - 47.8700562 + -71.5076448, + 45.0655726 ], [ - -89.6797699, - 47.9339637 + -73.9418929, + 45.0655726 ], [ - -89.4933757, - 47.9339637 + -73.9418929, + 45.0031242 ], [ - -89.4933757, - 47.9957956 + -74.7469725, + 45.0031242 ], [ - -89.4284697, - 47.9957956 + -74.7469725, + 45.0649003 ], [ - -89.4284697, - 48.0656377 + -74.8800964, + 45.0649003 ], [ - -89.9932739, - 48.0656377 + -74.8800964, + 45.0029023 ], [ - -89.9932739, - 48.1282966 + -75.0662455, + 45.0029023 ], [ - -90.7455933, - 48.1282966 + -75.0662455, + 44.9415167 ], [ - -90.7455933, - 48.1893056 + -75.2539363, + 44.9415167 ], [ - -90.8087291, - 48.1893056 + -75.2539363, + 44.8776043 ], [ - -90.8087291, - 48.2522065 + -75.3789648, + 44.8776043 ], [ - -91.067763, - 48.2522065 + -75.3789648, + 44.8153462 ], [ - -91.067763, - 48.1916658 + -75.4431283, + 44.8153462 ], [ - -91.1946247, - 48.1916658 + -75.4431283, + 44.7536053 ], [ - -91.1946247, - 48.1279027 + -75.5666566, + 44.7536053 ], [ - -91.6814196, - 48.1279027 + -75.5666566, + 44.6909879 ], [ - -91.6814196, - 48.2525994 + -75.6290205, + 44.6909879 ], [ - -91.9321927, - 48.2525994 + -75.6290205, + 44.6284958 ], [ - -91.9321927, - 48.3142454 + -75.7540484, + 44.6284958 ], [ - -91.9929683, - 48.3142454 + -75.7540484, + 44.566385 ], [ - -91.9929683, - 48.3780845 + -75.817312, + 44.566385 ], [ - -92.3189383, - 48.3780845 + -75.817312, + 44.5028932 ], [ - -92.3189383, - 48.2529081 + -75.8799549, + 44.5028932 ], [ - -92.3732233, - 48.2529081 + -75.8799549, + 44.3784946 ], [ - -92.3732233, - 48.3153385 + -76.1300319, + 44.3784946 ], [ - -92.4322288, - 48.3153385 + -76.1300319, + 44.3159227 ], [ - -92.4322288, - 48.4411448 + -76.1926961, + 44.3159227 ], [ - -92.4977248, - 48.4411448 + -76.1926961, + 44.2534378 ], [ - -92.4977248, - 48.501781 + -76.3182619, + 44.2534378 ], [ - -92.5679413, - 48.501781 + -76.3182619, + 44.1916726 ], [ - -92.5679413, - 48.439579 + -76.3792975, + 44.1916726 ], [ - -92.6210462, - 48.439579 + -76.3792975, + 44.0653733 ], [ - -92.6210462, - 48.5650783 + -76.4427584, + 44.0653733 ], [ - -92.8086835, - 48.5650783 + -76.4427584, + 43.9963825 ], [ - -92.8086835, - 48.6286865 + -76.317027, + 43.9963825 ], [ - -92.8086835, - 48.6267365 + -76.317027, + 43.9414581 ], [ - -92.933185, - 48.6267365 + -76.5076611, + 43.9414581 ], [ - -92.933185, - 48.6922145 + -76.5076611, + 43.8723335 ], [ - -93.0051716, - 48.6922145 + -76.3829974, + 43.8723335 ], [ - -93.0051716, - 48.6282965 + -76.3829974, + 43.8091872 ], [ - -93.1225924, - 48.6282965 + -76.2534102, + 43.8091872 ], [ - -93.1225924, - 48.6922145 + -76.2534102, + 43.5665222 ], [ - -93.3190806, - 48.6922145 + -76.5064833, + 43.5665222 ], [ - -93.3190806, - 48.6267365 + -76.5064833, + 43.5033881 ], [ - -93.5049477, - 48.6267365 + -76.6331208, + 43.5033881 ], [ - -93.5049477, - 48.5635164 + -76.6331208, + 43.4432252 ], [ - -93.7474601, - 48.5635164 + -76.6951085, + 43.4432252 ], [ - -93.7474601, - 48.6267365 + -76.6951085, + 43.3786858 ], [ - -93.8135461, - 48.6267365 + -76.8177798, + 43.3786858 ], [ - -93.8135461, - 48.6898775 + -76.8177798, + 43.318066 ], [ - -94.2453121, - 48.6898775 + -77.682, + 43.318066 ], [ - -94.2453121, - 48.7554327 + -77.682, + 43.3789376 ], [ - -94.6183171, - 48.7554327 + -78.0565883, + 43.3789376 ], [ - -94.6183171, - 48.941036 + -78.0565883, + 43.4396918 ], [ - -94.6809018, - 48.941036 + -78.4389748, + 43.4396918 ], [ - -94.6809018, - 49.0029737 + -78.4389748, + 43.3794382 ], [ - -94.7441532, - 49.0029737 + -78.8803396, + 43.3794382 ], [ - -94.7441532, - 49.2536079 + -78.8803396, + 43.3149724 ], [ - -94.8084069, - 49.2536079 + -79.1298858, + 43.3149724 ], [ - -94.8084069, - 49.3784134 + -79.1298858, + 43.2429286 ], [ - -95.1192391, - 49.3784134 + -79.0669615, + 43.2429286 ], [ - -95.1192391, - 49.4425264 + -79.0669615, + 43.1299931 ], [ - -95.1934341, - 49.4425264 + -79.1298858, + 43.1299931 ], [ - -95.1934341, - 49.0035292 + -79.1298858, + 43.0577305 ], [ - -96.87069, - 49.0035292 + -79.071264, + 43.0577305 ], [ - -96.87069, - 49.0656063 + -79.071264, + 42.9294906 ], [ - -99.0049312, - 49.0656063 + -78.943264, + 42.9294906 ], [ - -99.0049312, - 49.0050714 + -78.943264, + 42.7542165 ], [ - -109.3699257, - 49.0050714 + -79.069439, + 42.7542165 ], [ - -109.3699257, - 49.0668231 + -79.069439, + 42.6941622 ], [ - -109.5058746, - 49.0668231 + -79.133439, + 42.6941622 ], [ - -109.5058746, - 49.0050714 + -79.133439, + 42.6296973 ], [ - -114.1830014, - 49.0050714 + -79.1947499, + 42.6296973 ], [ - -114.1830014, - 49.0687317 + -79.1947499, + 42.5663538 ], [ - -114.7578709, - 49.0687317 + -79.3786827, + 42.5663538 ], [ - -114.7578709, - 49.0050714 + -79.3786827, + 42.5033425 ], [ - -115.433731, - 49.0050714 + -79.4442961, + 42.5033425 ], [ - -115.433731, - 49.0671412 + -79.4442961, + 42.4410614 ], [ - -116.5062706, - 49.0671412 + -79.5679936, + 42.4410614 ], [ - -116.5062706, - 49.0050714 + -79.5679936, + 42.3775264 ], [ - -117.3089504, - 49.0050714 + -79.6906154, + 42.3775264 ], [ - -117.3089504, - 49.0659803 + -79.6906154, + 42.3171086 ], [ - -119.882945, - 49.0659803 + -79.8164642, + 42.3171086 ], [ - -119.882945, - 49.0050714 + -79.8164642, + 42.2534481 ], [ - -120.1208555, - 49.0050714 + -80.0052373, + 42.2534481 ], [ - -120.1208555, - 49.0678367 + -80.0052373, + 42.1909188 ], [ - -121.4451636, - 49.0678367 + -80.1916829, + 42.1909188 ], [ - -121.4451636, - 49.0050714 + -80.1916829, + 42.1272555 ], [ - -121.9311808, - 49.0050714 + -80.3167992, + 42.1272555 ], [ - -121.9311808, - 49.0656099 + -80.3167992, + 42.0669857 ], [ - -122.817484, - 49.0656099 + -80.5063234, + 42.0669857 ], [ - -122.817484, - 49.0029143 + -80.5063234, + 42.0034331 ], [ - -122.8795155, - 49.0029143 + -80.6930471, + 42.0034331 ], [ - -122.8795155, - 48.9347018 + -80.6930471, + 41.9415141 ], [ - -122.8174629, - 48.9347018 + -80.9440403, + 41.9415141 ], [ - -122.8174629, - 48.8101998 + -80.9440403, + 41.8781193 ], [ - -122.7538859, - 48.8101998 + -81.1942729, + 41.8781193 ], [ - -122.7538859, - 48.7533758 + -81.1942729, + 41.8166455 ], [ - -122.8712937, - 48.7533758 + -81.3190089, + 41.8166455 ], [ - -122.8712937, - 48.8153948 + -81.3190089, + 41.7545453 ], [ - -123.0055391, - 48.8153948 + -81.4418435, + 41.7545453 ], [ - -123.0055391, - 48.7529529 + -81.4418435, + 41.690965 ], [ - -123.1296926, - 48.7529529 + -81.5053523, + 41.690965 ], [ - -123.1296926, - 48.6902201 + -81.5053523, + 41.6301643 ], [ - -123.1838197, - 48.6902201 + -82.7470081, + 41.6301643 ], [ - -123.1838197, - 48.7529029 - ] - ], - [ - [ - -122.9341743, - 37.7521547 + -82.7470081, + 41.7536942 ], [ - -122.9347457, - 37.6842013 + -82.8839135, + 41.7536942 ], [ - -123.0679013, - 37.6849023 + -82.8839135, + 41.5656075 ], [ - -123.0673747, - 37.7475251 + -82.9957195, + 41.5656075 ], [ - -123.1292603, - 37.7478506 + -82.9957195, + 41.6270375 ], [ - -123.1286894, - 37.815685 + -83.1257796, + 41.6270375 ], [ - -123.0590687, - 37.8153192 + -83.1257796, + 41.6878411 ], [ - -123.0595947, - 37.7528143 - ] - ], - [ - [ - -71.6299464, - 41.2540893 + -83.2474733, + 41.6878411 ], [ - -71.4966465, - 41.2541393 + -83.2474733, + 41.7536942 ], [ - -71.4965596, - 41.122965 + -83.3737305, + 41.7536942 ], [ - -71.6298594, - 41.1229149 - ] - ], - [ - [ - -70.3184265, - 41.3775196 + -83.3737305, + 41.809276 ], [ - -70.3183384, - 41.2448243 + -83.3106019, + 41.809276 ], [ - -70.1906612, - 41.2448722 + -83.3106019, + 41.8716064 ], [ - -70.1906239, - 41.1886019 + -83.2474733, + 41.8716064 ], [ - -69.9336025, - 41.1886984 + -83.2474733, + 41.9361393 ], [ - -69.933729, - 41.3791941 + -83.1843447, + 41.9361393 ], [ - -69.9950664, - 41.3791712 + -83.1843447, + 41.9960851 ], [ - -69.995109, - 41.443159 + -83.1207681, + 41.9960851 ], [ - -70.0707828, - 41.4431307 + -83.1207681, + 42.2464812 ], [ - -70.0706972, - 41.3144915 + -83.0589194, + 42.2464812 ], [ - -70.2461667, - 41.3144258 + -83.0589194, + 42.3089555 ], [ - -70.2462087, - 41.3775467 - ] - ], - [ - [ - -68.9403374, - 43.9404062 + -82.8685328, + 42.3089555 ], [ - -68.6856948, - 43.9404977 + -82.8685328, + 42.3717652 ], [ - -68.6856475, - 43.8721797 + -82.8072219, + 42.3717652 ], [ - -68.7465405, - 43.8721577 + -82.8072219, + 42.558553 ], [ - -68.7464976, - 43.8102529 + -82.7553745, + 42.558553 ], [ - -68.8090782, - 43.8102304 + -82.7553745, + 42.4954945 ], [ - -68.8090343, - 43.746728 + -82.5599041, + 42.4954945 ], [ - -68.8773094, - 43.7467034 + -82.5599041, + 42.558553 ], [ - -68.8773544, - 43.8117826 + -82.4967755, + 42.558553 ], [ - -68.9402483, - 43.8117599 - ] - ], - [ - [ - -123.1291466, - 49.0645144 + -82.4967755, + 42.6833607 ], [ - -122.9954224, - 49.0645144 + -82.4328863, + 42.6833607 ], [ - -122.9954224, - 48.9343243 + -82.4328863, + 42.9342196 ], [ - -123.1291466, - 48.9343243 - ] - ], - [ - [ - -82.9407144, - 24.7535913 + -82.3700552, + 42.9342196 ], [ - -82.8719398, - 24.7535913 + -82.3700552, + 43.0648071 ], [ - -82.8719398, - 24.6905653 + -82.4328863, + 43.0648071 ], [ - -82.7446233, - 24.6905653 + -82.4328863, + 43.1917566 ], [ - -82.7446233, - 24.6214593 + -82.4947464, + 43.1917566 ], [ - -82.8088038, - 24.6214593 + -82.4947464, + 43.5034627 ], [ - -82.8088038, - 24.5594908 + -82.557133, + 43.5034627 ], [ - -82.9407144, - 24.5594908 - ] - ] - ] - }, - { - "name": "USGS Topographic Maps", - "type": "tms", - "template": "http://{switch:a,b,c}.tile.openstreetmap.us/usgs_scanned_topos/{zoom}/{x}/{y}.png", - "polygon": [ - [ - [ - -125.990173, - 48.9962416 + -82.557133, + 43.8160901 ], [ - -125.989419, - 47.9948396 + -82.6197884, + 43.8160901 ], [ - -123.9929739, - 47.9955062 + -82.6197884, + 43.9422098 ], [ - -123.9922429, - 47.0059202 + -82.6839499, + 43.9422098 ], [ - -125.988688, - 47.0052409 + -82.6839499, + 44.0022641 ], [ - -125.9879604, - 46.0015618 + -82.7465346, + 44.0022641 ], [ - -123.9939396, - 46.0022529 + -82.7465346, + 44.0670545 ], [ - -123.9925238, - 43.9961708 + -82.8708696, + 44.0670545 ], [ - -124.9931832, - 43.9958116 + -82.8708696, + 44.1291935 ], [ - -124.9918175, - 41.9942149 + -83.008517, + 44.1291935 ], [ - -125.9851789, - 41.9938465 + -83.008517, + 44.0664786 ], [ - -125.9838655, - 40.0076111 + -83.1336086, + 44.0664786 ], [ - -123.9833285, - 40.0083757 + -83.1336086, + 44.0053949 ], [ - -123.9814115, - 37.002615 + -83.2414522, + 44.0053949 ], [ - -122.21903, - 37.0033173 + -83.2414522, + 44.9962034 ], [ - -122.2184144, - 36.011671 + -83.1806112, + 44.9962034 ], [ - -122.020087, - 36.011751 + -83.1806112, + 45.067302 ], [ - -122.0188591, - 33.9961766 + -83.2455172, + 45.067302 ], [ - -119.9787757, - 33.9970206 + -83.2455172, + 45.1287382 ], [ - -119.9775867, - 31.9987658 + -83.3065878, + 45.1287382 ], [ - -114.0122833, - 32.00129 + -83.3065878, + 45.2551509 ], [ - -114.0116894, - 30.9862401 + -83.3706087, + 45.2551509 ], [ - -105.998294, - 30.9896679 + -83.3706087, + 45.3165923 ], [ - -105.9971419, - 28.9901065 + -83.4325644, + 45.3165923 ], [ - -102.0210506, - 28.9918418 + -83.4325644, + 45.3792105 ], [ - -102.0204916, - 28.00733 + -83.6178415, + 45.3792105 ], [ - -100.0062436, - 28.0082173 + -83.6178415, + 45.4419665 ], [ - -100.0051143, - 25.991909 + -83.8084291, + 45.4419665 ], [ - -98.0109067, - 25.9928035 + -83.8084291, + 45.5036189 ], [ - -98.0103613, - 25.0063461 + -84.0550718, + 45.5036189 ], [ - -97.0161086, - 25.0067957 + -84.0550718, + 45.5647907 ], [ - -97.016654, - 25.9932494 + -84.1235181, + 45.5647907 ], [ - -95.9824825, - 25.9937132 + -84.1235181, + 45.6287845 ], [ - -95.9835999, - 27.9891175 + -84.1807534, + 45.6287845 ], [ - -94.0200898, - 27.9899826 + -84.1807534, + 45.6914688 ], [ - -94.0206586, - 28.9918129 + -84.3111554, + 45.6914688 ], [ - -88.0156706, - 28.9944338 + -84.3111554, + 45.9337076 ], [ - -88.0162494, - 30.0038862 + -83.8209974, + 45.9337076 ], [ - -86.0277506, - 30.0047454 + -83.8209974, + 45.8725113 ], [ - -86.0271719, - 28.9953016 + -83.4968086, + 45.8725113 ], [ - -84.0187909, - 28.9961781 + -83.4968086, + 45.9337076 ], [ - -84.017095, - 25.9817708 + -83.4338066, + 45.9337076 ], [ - -81.9971976, - 25.9826768 + -83.4338066, + 46.0016863 ], [ - -81.9966618, - 25.0134917 + -83.4962697, + 46.0016863 ], [ - -84.0165592, - 25.0125783 + -83.4962697, + 46.0668178 ], [ - -84.0160068, - 24.0052745 + -83.5599956, + 46.0668178 ], [ - -80.0199985, - 24.007096 + -83.5599956, + 46.1261576 ], [ - -80.0245309, - 32.0161282 + -83.9954558, + 46.1261576 ], [ - -78.0066484, - 32.0169819 + -83.9954558, + 46.1931747 ], [ - -78.0072238, - 32.9894278 + -84.0591816, + 46.1931747 ], [ - -77.8807233, - 32.9894807 + -84.0591816, + 46.3814972 ], [ - -77.8813253, - 33.9955918 + -84.1152614, + 46.3814972 ], [ - -76.0115411, - 33.9963653 + -84.1152614, + 46.4953584 ], [ - -76.0121459, - 34.9952552 + -84.0591816, + 46.4953584 ], [ - -74.0068449, - 34.9960749 + -84.0591816, + 46.5682653 ], [ - -74.0099997, - 40.0084254 + -84.2579545, + 46.5682653 ], [ - -72.0013745, - 40.0091931 + -84.2579545, + 46.5051232 ], [ - -72.002019, - 40.9912464 + -84.3071879, + 46.5051232 ], [ - -69.8797398, - 40.9920457 + -84.3071879, + 46.5682653 ], [ - -69.8804173, - 42.00893 + -84.4415364, + 46.5682653 ], [ - -69.9927682, - 42.0088883 + -84.4415364, + 46.504525 ], [ - -69.9934462, - 43.0105166 + -84.9965729, + 46.504525 ], [ - -67.9845366, - 43.0112496 + -84.9965729, + 46.6842882 ], [ - -67.985224, - 44.0103812 + -84.9298158, + 46.6842882 ], [ - -65.9892568, - 44.0110975 + -84.9298158, + 46.818077 ], [ - -65.9921237, - 47.9993584 + -85.3165894, + 46.818077 ], [ - -70.006442, - 47.9980181 + -85.3165894, + 46.7535825 ], [ - -70.005708, - 47.0042007 + -87.5562645, + 46.7535825 ], [ - -72.023686, - 47.003514 + -87.5562645, + 47.4407371 ], [ - -72.0222508, - 45.0059846 + -87.6825361, + 47.4407371 ], [ - -78.0146667, - 45.0038705 + -87.6825361, + 47.5035554 ], [ - -78.0139662, - 44.0026998 + -88.2560738, + 47.5035554 ], [ - -80.029686, - 44.0019763 + -88.2560738, + 47.4433716 ], [ - -80.0290052, - 43.0122994 + -88.4417419, + 47.4433716 ], [ - -81.995479, - 43.011582 + -88.4417419, + 47.3789949 ], [ - -81.9982986, - 47.0042713 + -88.50683, + 47.3789949 ], [ - -87.505706, - 47.0023972 + -88.50683, + 47.3153881 ], [ - -87.5064535, - 48.0142702 + -88.6312821, + 47.3153881 ], [ - -88.0260889, - 48.0140968 + -88.6312821, + 47.2539782 ], [ - -88.026838, - 49.0086686 + -88.7569636, + 47.2539782 ], [ - -93.9981078, - 49.0067142 + -88.7569636, + 47.1934682 ], [ - -93.9988778, - 50.0086456 + -88.8838253, + 47.1934682 ], [ - -96.0138899, - 50.0079995 + -88.8838253, + 47.1284735 ], [ - -96.0131199, - 49.0060547 - ] - ], - [ - [ - -160.5787616, - 22.5062947 + -88.9434208, + 47.1284735 ], [ - -160.5782192, - 21.4984647 + -88.9434208, + 47.0662127 ], [ - -159.0030121, - 21.499196 + -89.0708726, + 47.0662127 ], [ - -159.0027422, - 20.9951068 + -89.0708726, + 47.0026826 ], [ - -157.5083185, - 20.995803 + -89.2565553, + 47.0026826 ], [ - -157.5080519, - 20.4960241 + -89.2565553, + 46.9410806 ], [ - -155.966889, - 20.4967444 + -90.3677669, + 46.9410806 ], [ - -155.9674267, - 21.5028287 + -90.3677669, + 47.6844827 ], [ - -157.5044717, - 21.5021151 + -90.3069978, + 47.6844827 ], [ - -157.5047384, - 21.9984962 + -90.3069978, + 47.7460174 ], [ - -159.0090946, - 21.9978002 + -89.994859, + 47.7460174 ], [ - -159.0093692, - 22.5070181 - ] - ], - [ - [ - -168.006102, - 68.9941463 + -89.994859, + 47.8082719 ], [ - -168.0047628, - 68.0107853 + -89.8048615, + 47.8082719 ], [ - -165.4842481, - 68.0112562 + -89.8048615, + 47.8700562 ], [ - -165.4829337, - 67.0037303 + -89.6797699, + 47.8700562 ], [ - -168.0034485, - 67.0032389 + -89.6797699, + 47.9339637 ], [ - -168.002195, - 66.0017503 + -89.4933757, + 47.9339637 ], [ - -169.0087448, - 66.001546 + -89.4933757, + 47.9957956 ], [ - -169.0075381, - 64.9987675 + -89.4284697, + 47.9957956 ], [ - -168.0009882, - 64.9989798 + -89.4284697, + 48.0656377 ], [ - -167.9998282, - 63.9982374 + -89.9932739, + 48.0656377 ], [ - -164.9871288, - 63.9988964 + -89.9932739, + 48.1282966 ], [ - -164.9860062, - 62.9950845 + -90.7455933, + 48.1282966 ], [ - -167.9987057, - 62.9944019 + -90.7455933, + 48.1893056 ], [ - -167.9946035, - 59.0153692 + -90.8087291, + 48.1893056 ], [ - -162.5027857, - 59.0167799 + -90.8087291, + 48.2522065 ], [ - -162.5018149, - 58.0005815 + -91.067763, + 48.2522065 ], [ - -160.0159024, - 58.0012389 + -91.067763, + 48.1916658 ], [ - -160.0149725, - 57.000035 + -91.1946247, + 48.1916658 ], [ - -160.5054788, - 56.9999017 + -91.1946247, + 48.1279027 ], [ - -160.5045719, - 55.9968161 + -91.6814196, + 48.1279027 ], [ - -164.012195, - 55.9958373 + -91.6814196, + 48.2525994 ], [ - -164.0113186, - 55.00107 + -91.9321927, + 48.2525994 ], [ - -165.994782, - 55.0005023 + -91.9321927, + 48.3142454 ], [ - -165.9941266, - 54.2400584 + -91.9929683, + 48.3142454 ], [ - -168.0002944, - 54.2394734 + -91.9929683, + 48.3780845 ], [ - -168.0000986, - 54.0094921 + -92.3189383, + 48.3780845 ], [ - -170.0156134, - 54.0089011 + -92.3189383, + 48.2529081 ], [ - -170.0147683, - 53.0016446 + -92.3732233, + 48.2529081 ], [ - -171.9993636, - 53.0010487 + -92.3732233, + 48.3153385 ], [ - -171.9989488, - 52.4977745 + -92.4322288, + 48.3153385 ], [ - -176.0083239, - 52.4965566 + -92.4322288, + 48.4411448 ], [ - -176.0081186, - 52.2452555 + -92.4977248, + 48.4411448 ], [ - -178.000097, - 52.2446469 + -92.4977248, + 48.501781 ], [ - -177.9992996, - 51.2554252 + -92.5679413, + 48.501781 ], [ - -176.0073212, - 51.2560472 + -92.5679413, + 48.439579 ], [ - -176.0075146, - 51.4980163 + -92.6210462, + 48.439579 ], [ - -171.9981395, - 51.4992617 + -92.6210462, + 48.5650783 ], [ - -171.9985419, - 51.9985373 + -92.8086835, + 48.5650783 ], [ - -167.9984317, - 51.9997661 + -92.8086835, + 48.6286865 ], [ - -167.9994645, - 53.2560877 + -92.8086835, + 48.6267365 ], [ - -165.9932968, - 53.2566866 + -92.933185, + 48.6267365 ], [ - -165.9939308, - 54.0100804 + -92.933185, + 48.6922145 ], [ - -159.0067205, - 54.0121291 + -93.0051716, + 48.6922145 ], [ - -159.0075717, - 55.002502 + -93.0051716, + 48.6282965 ], [ - -158.0190709, - 55.0027849 + -93.1225924, + 48.6282965 ], [ - -158.0199473, - 55.9975094 + -93.1225924, + 48.6922145 ], [ - -151.9963213, - 55.9991902 + -93.3190806, + 48.6922145 ], [ - -151.9981536, - 57.9986536 + -93.3190806, + 48.6267365 ], [ - -151.500341, - 57.9987853 + -93.5049477, + 48.6267365 ], [ - -151.5012894, - 58.9919816 + -93.5049477, + 48.5635164 ], [ - -138.5159989, - 58.9953194 + -93.7474601, + 48.5635164 ], [ - -138.5150471, - 57.9986434 + -93.7474601, + 48.6267365 ], [ - -136.6872422, - 57.9991267 + -93.8135461, + 48.6267365 ], [ - -136.6863158, - 57.0016688 + -93.8135461, + 48.6898775 ], [ - -135.9973698, - 57.001856 + -94.2453121, + 48.6898775 ], [ - -135.9964667, - 56.0030544 + -94.2453121, + 48.7554327 ], [ - -134.6717732, - 56.003424 + -94.6183171, + 48.7554327 ], [ - -134.6708865, - 54.9969623 + -94.6183171, + 48.941036 ], [ - -133.9956734, - 54.9971556 + -94.6809018, + 48.941036 ], [ - -133.9948193, - 54.0031685 + -94.6809018, + 49.0029737 ], [ - -130.0044418, - 54.0043387 + -94.7441532, + 49.0029737 ], [ - -130.0070826, - 57.0000507 + -94.7441532, + 49.2536079 ], [ - -131.975877, - 56.9995156 + -94.8084069, + 49.2536079 ], [ - -131.9787378, - 59.9933094 + -94.8084069, + 49.3784134 ], [ - -138.0071813, - 59.991805 + -95.1192391, + 49.3784134 ], [ - -138.0082158, - 61.0125755 + -95.1192391, + 49.4425264 ], [ - -140.9874011, - 61.0118551 + -95.1934341, + 49.4425264 ], [ - -140.99984, - 71.0039309 + -95.1934341, + 49.0035292 ], [ - -154.5023956, - 71.0017377 + -96.87069, + 49.0035292 ], [ - -154.5039632, - 71.9983391 + -96.87069, + 49.0656063 ], [ - -157.499048, - 71.9978773 + -99.0049312, + 49.0656063 ], [ - -157.4974758, - 70.9982877 + -99.0049312, + 49.0050714 ], [ - -163.0233611, - 70.9973899 + -109.3699257, + 49.0050714 ], [ - -163.0218273, - 69.9707435 + -109.3699257, + 49.0668231 ], [ - -164.9730896, - 69.97041 + -109.5058746, + 49.0668231 ], [ - -164.9717003, - 68.994689 - ] - ], - [ - [ - -168.5133204, - 62.8689586 + -109.5058746, + 49.0050714 ], [ - -168.5144423, - 63.8765677 + -114.1830014, + 49.0050714 ], [ - -172.0202755, - 63.8757975 + -114.1830014, + 49.0687317 ], [ - -172.0191536, - 62.8681608 - ] - ], - [ - [ - -170.9947111, - 59.9954089 + -114.7578709, + 49.0687317 ], [ - -170.995726, - 60.9969787 + -114.7578709, + 49.0050714 ], [ - -174.0045311, - 60.9962508 + -115.433731, + 49.0050714 ], [ - -174.0035162, - 59.9946581 - ] - ], - [ - [ - -156.0717261, - 20.2854602 + -115.433731, + 49.0671412 ], [ - -154.7940471, - 20.2860582 + -116.5062706, + 49.0671412 ], [ - -154.7933145, - 18.9029464 + -116.5062706, + 49.0050714 ], [ - -156.0709936, - 18.9023432 - ] - ] - ] - }, - { - "name": "Vejmidte (Denmark)", - "type": "tms", - "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/danmark/vejmidte/{zoom}/{x}/{y}.png", - "scaleExtent": [ - 0, - 20 - ], - "polygon": [ - [ - [ - 8.3743941, - 54.9551655 + -117.3089504, + 49.0050714 ], [ - 8.3683809, - 55.4042149 + -117.3089504, + 49.0659803 ], [ - 8.2103997, - 55.4039795 + -119.882945, + 49.0659803 ], [ - 8.2087314, - 55.4937345 + -119.882945, + 49.0050714 ], [ - 8.0502655, - 55.4924731 + -120.1208555, + 49.0050714 ], [ - 8.0185123, - 56.7501399 + -120.1208555, + 49.0678367 ], [ - 8.1819161, - 56.7509948 + -121.4451636, + 49.0678367 ], [ - 8.1763274, - 57.0208898 + -121.4451636, + 49.0050714 ], [ - 8.3413329, - 57.0219872 + -121.9311808, + 49.0050714 ], [ - 8.3392467, - 57.1119574 + -121.9311808, + 49.0656099 ], [ - 8.5054433, - 57.1123212 + -122.817484, + 49.0656099 ], [ - 8.5033923, - 57.2020499 + -122.817484, + 49.0029143 ], [ - 9.3316304, - 57.2027636 + -122.8795155, + 49.0029143 ], [ - 9.3319079, - 57.2924835 + -122.8795155, + 48.9347018 ], [ - 9.4978864, - 57.2919578 + -122.8174629, + 48.9347018 ], [ - 9.4988593, - 57.3820608 + -122.8174629, + 48.8101998 ], [ - 9.6649749, - 57.3811615 + -122.7538859, + 48.8101998 ], [ - 9.6687295, - 57.5605591 + -122.7538859, + 48.7533758 ], [ - 9.8351961, - 57.5596265 + -122.8712937, + 48.7533758 ], [ - 9.8374896, - 57.6493322 + -122.8712937, + 48.8153948 ], [ - 10.1725726, - 57.6462818 + -123.0055391, + 48.8153948 ], [ - 10.1754245, - 57.7367768 + -123.0055391, + 48.7529529 ], [ - 10.5118282, - 57.7330269 + -123.1296926, + 48.7529529 ], [ - 10.5152095, - 57.8228945 + -123.1296926, + 48.6902201 ], [ - 10.6834853, - 57.8207722 + -123.1838197, + 48.6902201 ], [ - 10.6751613, - 57.6412021 + -123.1838197, + 48.7529029 + ] + ], + [ + [ + -122.9341743, + 37.7521547 ], [ - 10.5077045, - 57.6433097 + -122.9347457, + 37.6842013 ], [ - 10.5039992, - 57.5535088 + -123.0679013, + 37.6849023 ], [ - 10.671038, - 57.5514113 + -123.0673747, + 37.7475251 ], [ - 10.6507805, - 57.1024538 + -123.1292603, + 37.7478506 ], [ - 10.4857673, - 57.1045138 + -123.1286894, + 37.815685 ], [ - 10.4786236, - 56.9249051 + -123.0590687, + 37.8153192 ], [ - 10.3143981, - 56.9267573 + -123.0595947, + 37.7528143 + ] + ], + [ + [ + -71.6299464, + 41.2540893 ], [ - 10.3112341, - 56.8369269 + -71.4966465, + 41.2541393 ], [ - 10.4750295, - 56.83509 + -71.4965596, + 41.122965 ], [ - 10.4649016, - 56.5656681 + -71.6298594, + 41.1229149 + ] + ], + [ + [ + -70.3184265, + 41.3775196 ], [ - 10.9524239, - 56.5589761 + -70.3183384, + 41.2448243 ], [ - 10.9479249, - 56.4692243 + -70.1906612, + 41.2448722 ], [ - 11.1099335, - 56.4664675 + -70.1906239, + 41.1886019 ], [ - 11.1052639, - 56.376833 + -69.9336025, + 41.1886984 ], [ - 10.9429901, - 56.3795284 + -69.933729, + 41.3791941 ], [ - 10.9341235, - 56.1994768 + -69.9950664, + 41.3791712 ], [ - 10.7719685, - 56.2020244 + -69.995109, + 41.443159 ], [ - 10.7694751, - 56.1120103 + -70.0707828, + 41.4431307 ], [ - 10.6079695, - 56.1150259 + -70.0706972, + 41.3144915 ], [ - 10.4466742, - 56.116717 + -70.2461667, + 41.3144258 ], [ - 10.2865948, - 56.118675 + -70.2462087, + 41.3775467 + ] + ], + [ + [ + -68.9403374, + 43.9404062 ], [ - 10.2831527, - 56.0281851 + -68.6856948, + 43.9404977 ], [ - 10.4439274, - 56.0270388 + -68.6856475, + 43.8721797 ], [ - 10.4417713, - 55.7579243 + -68.7465405, + 43.8721577 ], [ - 10.4334961, - 55.6693533 + -68.7464976, + 43.8102529 ], [ - 10.743814, - 55.6646861 + -68.8090782, + 43.8102304 ], [ - 10.743814, - 55.5712253 + -68.8090343, + 43.746728 ], [ - 10.8969041, - 55.5712253 + -68.8773094, + 43.7467034 ], [ - 10.9051793, - 55.3953852 + -68.8773544, + 43.8117826 ], [ - 11.0613726, - 55.3812841 + -68.9402483, + 43.8117599 + ] + ], + [ + [ + -123.1291466, + 49.0645144 ], [ - 11.0593038, - 55.1124061 + -122.9954224, + 49.0645144 ], [ - 11.0458567, - 55.0318621 + -122.9954224, + 48.9343243 ], [ - 11.2030844, - 55.0247474 + -123.1291466, + 48.9343243 + ] + ], + [ + [ + -82.9407144, + 24.7535913 ], [ - 11.2030844, - 55.117139 + -82.8719398, + 24.7535913 ], [ - 11.0593038, - 55.1124061 + -82.8719398, + 24.6905653 ], [ - 11.0613726, - 55.3812841 + -82.7446233, + 24.6905653 ], [ - 11.0789572, - 55.5712253 + -82.7446233, + 24.6214593 ], [ - 10.8969041, - 55.5712253 + -82.8088038, + 24.6214593 ], [ - 10.9258671, - 55.6670198 + -82.8088038, + 24.5594908 ], [ - 10.743814, - 55.6646861 + -82.9407144, + 24.5594908 + ] + ] + ] + }, + { + "name": "USGS Topographic Maps", + "type": "tms", + "template": "http://{switch:a,b,c}.tile.openstreetmap.us/usgs_scanned_topos/{zoom}/{x}/{y}.png", + "polygon": [ + [ + [ + -125.990173, + 48.9962416 ], [ - 10.7562267, - 55.7579243 + -125.989419, + 47.9948396 ], [ - 10.4417713, - 55.7579243 + -123.9929739, + 47.9955062 ], [ - 10.4439274, - 56.0270388 + -123.9922429, + 47.0059202 ], [ - 10.4466742, - 56.116717 + -125.988688, + 47.0052409 ], [ - 10.6079695, - 56.1150259 + -125.9879604, + 46.0015618 ], [ - 10.6052053, - 56.0247462 + -123.9939396, + 46.0022529 ], [ - 10.9258671, - 56.0201215 + -123.9925238, + 43.9961708 ], [ - 10.9197132, - 55.9309388 + -124.9931832, + 43.9958116 ], [ - 11.0802782, - 55.92792 + -124.9918175, + 41.9942149 ], [ - 11.0858066, - 56.0178284 + -125.9851789, + 41.9938465 ], [ - 11.7265047, - 56.005058 + -125.9838655, + 40.0076111 ], [ - 11.7319981, - 56.0952142 + -123.9833285, + 40.0083757 ], [ - 12.0540333, - 56.0871256 + -123.9814115, + 37.002615 ], [ - 12.0608477, - 56.1762576 + -122.21903, + 37.0033173 ], [ - 12.7023469, - 56.1594405 + -122.2184144, + 36.011671 ], [ - 12.6611131, - 55.7114318 + -122.020087, + 36.011751 ], [ - 12.9792318, - 55.7014026 + -122.0188591, + 33.9961766 ], [ - 12.9612912, - 55.5217294 + -119.9787757, + 33.9970206 ], [ - 12.3268659, - 55.5412096 + -119.9775867, + 31.9987658 ], [ - 12.3206071, - 55.4513655 + -114.0122833, + 32.00129 ], [ - 12.4778226, - 55.447067 + -114.0116894, + 30.9862401 ], [ - 12.4702432, - 55.3570479 + -105.998294, + 30.9896679 ], [ - 12.6269738, - 55.3523837 + -105.9971419, + 28.9901065 ], [ - 12.6200898, - 55.2632576 + -102.0210506, + 28.9918418 ], [ - 12.4627339, - 55.26722 + -102.0204916, + 28.00733 ], [ - 12.4552949, - 55.1778223 + -100.0062436, + 28.0082173 ], [ - 12.2987046, - 55.1822303 + -100.0051143, + 25.991909 ], [ - 12.2897344, - 55.0923641 + -98.0109067, + 25.9928035 ], [ - 12.6048608, - 55.0832904 + -98.0103613, + 25.0063461 ], [ - 12.5872011, - 54.9036285 + -97.0161086, + 25.0067957 ], [ - 12.2766618, - 54.9119031 + -97.016654, + 25.9932494 ], [ - 12.2610181, - 54.7331602 + -95.9824825, + 25.9937132 ], [ - 12.1070691, - 54.7378161 + -95.9835999, + 27.9891175 ], [ - 12.0858621, - 54.4681655 + -94.0200898, + 27.9899826 ], [ - 11.7794953, - 54.4753579 + -94.0206586, + 28.9918129 ], [ - 11.7837381, - 54.5654783 + -88.0156706, + 28.9944338 ], [ - 11.1658525, - 54.5782155 + -88.0162494, + 30.0038862 ], [ - 11.1706443, - 54.6686508 + -86.0277506, + 30.0047454 ], [ - 10.8617173, - 54.6733956 + -86.0271719, + 28.9953016 ], [ - 10.8651245, - 54.7634667 + -84.0187909, + 28.9961781 ], [ - 10.7713646, - 54.7643888 + -84.017095, + 25.9817708 ], [ - 10.7707276, - 54.7372807 + -81.9971976, + 25.9826768 ], [ - 10.7551428, - 54.7375776 + -81.9966618, + 25.0134917 ], [ - 10.7544039, - 54.7195666 + -84.0165592, + 25.0125783 ], [ - 10.7389074, - 54.7197588 + -84.0160068, + 24.0052745 ], [ - 10.7384368, - 54.7108482 + -80.0199985, + 24.007096 ], [ - 10.7074486, - 54.7113045 + -80.0245309, + 32.0161282 ], [ - 10.7041094, - 54.6756741 + -78.0066484, + 32.0169819 ], [ - 10.5510973, - 54.6781698 + -78.0072238, + 32.9894278 ], [ - 10.5547184, - 54.7670245 + -77.8807233, + 32.9894807 ], [ - 10.2423994, - 54.7705935 + -77.8813253, + 33.9955918 ], [ - 10.2459845, - 54.8604673 + -76.0115411, + 33.9963653 ], [ - 10.0902268, - 54.8622134 + -76.0121459, + 34.9952552 ], [ - 10.0873731, - 54.7723851 + -74.0068449, + 34.9960749 ], [ - 9.1555798, - 54.7769557 + -74.0099997, + 40.0084254 ], [ - 9.1562752, - 54.8675369 + -72.0013745, + 40.0091931 ], [ - 8.5321973, - 54.8663765 + -72.002019, + 40.9912464 ], [ - 8.531432, - 54.95516 - ] - ], - [ + -69.8797398, + 40.9920457 + ], [ - 11.4577738, - 56.819554 + -69.8804173, + 42.00893 ], [ - 11.7849181, - 56.8127385 + -69.9927682, + 42.0088883 ], [ - 11.7716715, - 56.6332796 + -69.9934462, + 43.0105166 ], [ - 11.4459621, - 56.6401087 - ] - ], - [ + -67.9845366, + 43.0112496 + ], [ - 11.3274736, - 57.3612962 + -67.985224, + 44.0103812 ], [ - 11.3161808, - 57.1818004 + -65.9892568, + 44.0110975 ], [ - 11.1508692, - 57.1847276 + -65.9921237, + 47.9993584 ], [ - 11.1456628, - 57.094962 + -70.006442, + 47.9980181 ], [ - 10.8157703, - 57.1001693 + -70.005708, + 47.0042007 ], [ - 10.8290599, - 57.3695272 + -72.023686, + 47.003514 + ], + [ + -72.0222508, + 45.0059846 + ], + [ + -78.0146667, + 45.0038705 + ], + [ + -78.0139662, + 44.0026998 + ], + [ + -80.029686, + 44.0019763 + ], + [ + -80.0290052, + 43.0122994 + ], + [ + -81.995479, + 43.011582 + ], + [ + -81.9982986, + 47.0042713 + ], + [ + -87.505706, + 47.0023972 + ], + [ + -87.5064535, + 48.0142702 + ], + [ + -88.0260889, + 48.0140968 + ], + [ + -88.026838, + 49.0086686 + ], + [ + -93.9981078, + 49.0067142 + ], + [ + -93.9988778, + 50.0086456 + ], + [ + -96.0138899, + 50.0079995 + ], + [ + -96.0131199, + 49.0060547 ] ], [ [ - 11.5843266, - 56.2777928 + -160.5787616, + 22.5062947 ], [ - 11.5782882, - 56.1880397 + -160.5782192, + 21.4984647 ], [ - 11.7392309, - 56.1845765 + -159.0030121, + 21.499196 ], [ - 11.7456428, - 56.2743186 + -159.0027422, + 20.9951068 + ], + [ + -157.5083185, + 20.995803 + ], + [ + -157.5080519, + 20.4960241 + ], + [ + -155.966889, + 20.4967444 + ], + [ + -155.9674267, + 21.5028287 + ], + [ + -157.5044717, + 21.5021151 + ], + [ + -157.5047384, + 21.9984962 + ], + [ + -159.0090946, + 21.9978002 + ], + [ + -159.0093692, + 22.5070181 ] ], [ [ - 14.6825922, - 55.3639405 + -168.006102, + 68.9941463 ], [ - 14.8395247, - 55.3565231 + -168.0047628, + 68.0107853 ], [ - 14.8263755, - 55.2671261 + -165.4842481, + 68.0112562 ], [ - 15.1393406, - 55.2517359 + -165.4829337, + 67.0037303 ], [ - 15.1532015, - 55.3410836 + -168.0034485, + 67.0032389 ], [ - 15.309925, - 55.3330556 + -168.002195, + 66.0017503 ], [ - 15.295719, - 55.2437356 + -169.0087448, + 66.001546 ], [ - 15.1393406, - 55.2517359 + -169.0075381, + 64.9987675 ], [ - 15.1255631, - 55.1623802 + -168.0009882, + 64.9989798 ], [ - 15.2815819, - 55.1544167 + -167.9998282, + 63.9982374 ], [ - 15.2535578, - 54.9757646 + -164.9871288, + 63.9988964 ], [ - 14.6317464, - 55.0062496 - ] - ] - ], - "terms_url": "http://wiki.openstreetmap.org/wiki/Vejmidte", - "terms_text": "Danish municipalities" - }, - { - "name": "Vienna: Beschriftungen (annotations)", - "type": "tms", - "template": "http://www.wien.gv.at/wmts/beschriftung/normal/google3857/{zoom}/{y}/{x}.png", - "scaleExtent": [ - 0, - 19 - ], - "polygon": [ - [ + -164.9860062, + 62.9950845 + ], [ - 16.17, - 48.1 + -167.9987057, + 62.9944019 ], [ - 16.17, - 48.33 + -167.9946035, + 59.0153692 ], [ - 16.58, - 48.33 + -162.5027857, + 59.0167799 ], [ - 16.58, - 48.1 + -162.5018149, + 58.0005815 ], [ - 16.17, - 48.1 - ] - ] - ], - "terms_url": "http://data.wien.gv.at/", - "terms_text": "Stadt Wien" - }, - { - "name": "Vienna: Mehrzweckkarte (general purpose)", - "type": "tms", - "template": "http://www.wien.gv.at/wmts/fmzk/pastell/google3857/{zoom}/{y}/{x}.jpeg", - "scaleExtent": [ - 0, - 19 - ], - "polygon": [ - [ + -160.0159024, + 58.0012389 + ], [ - 16.17, - 48.1 + -160.0149725, + 57.000035 ], [ - 16.17, - 48.33 + -160.5054788, + 56.9999017 ], [ - 16.58, - 48.33 + -160.5045719, + 55.9968161 ], [ - 16.58, - 48.1 + -164.012195, + 55.9958373 ], [ - 16.17, - 48.1 - ] - ] - ], - "terms_url": "http://data.wien.gv.at/", - "terms_text": "Stadt Wien" - }, - { - "name": "Vienna: Orthofoto (aerial image)", - "type": "tms", - "template": "http://www.wien.gv.at/wmts/lb/farbe/google3857/{zoom}/{y}/{x}.jpeg", - "scaleExtent": [ - 0, - 19 - ], - "polygon": [ - [ + -164.0113186, + 55.00107 + ], [ - 16.17, - 48.1 + -165.994782, + 55.0005023 ], [ - 16.17, - 48.33 + -165.9941266, + 54.2400584 ], [ - 16.58, - 48.33 + -168.0002944, + 54.2394734 ], [ - 16.58, - 48.1 + -168.0000986, + 54.0094921 ], [ - 16.17, - 48.1 + -170.0156134, + 54.0089011 + ], + [ + -170.0147683, + 53.0016446 + ], + [ + -171.9993636, + 53.0010487 + ], + [ + -171.9989488, + 52.4977745 + ], + [ + -176.0083239, + 52.4965566 + ], + [ + -176.0081186, + 52.2452555 + ], + [ + -178.000097, + 52.2446469 + ], + [ + -177.9992996, + 51.2554252 + ], + [ + -176.0073212, + 51.2560472 + ], + [ + -176.0075146, + 51.4980163 + ], + [ + -171.9981395, + 51.4992617 + ], + [ + -171.9985419, + 51.9985373 + ], + [ + -167.9984317, + 51.9997661 + ], + [ + -167.9994645, + 53.2560877 + ], + [ + -165.9932968, + 53.2566866 + ], + [ + -165.9939308, + 54.0100804 + ], + [ + -159.0067205, + 54.0121291 + ], + [ + -159.0075717, + 55.002502 + ], + [ + -158.0190709, + 55.0027849 + ], + [ + -158.0199473, + 55.9975094 + ], + [ + -151.9963213, + 55.9991902 + ], + [ + -151.9981536, + 57.9986536 + ], + [ + -151.500341, + 57.9987853 + ], + [ + -151.5012894, + 58.9919816 + ], + [ + -138.5159989, + 58.9953194 + ], + [ + -138.5150471, + 57.9986434 + ], + [ + -136.6872422, + 57.9991267 + ], + [ + -136.6863158, + 57.0016688 + ], + [ + -135.9973698, + 57.001856 + ], + [ + -135.9964667, + 56.0030544 + ], + [ + -134.6717732, + 56.003424 + ], + [ + -134.6708865, + 54.9969623 + ], + [ + -133.9956734, + 54.9971556 + ], + [ + -133.9948193, + 54.0031685 + ], + [ + -130.0044418, + 54.0043387 + ], + [ + -130.0070826, + 57.0000507 + ], + [ + -131.975877, + 56.9995156 + ], + [ + -131.9787378, + 59.9933094 + ], + [ + -138.0071813, + 59.991805 + ], + [ + -138.0082158, + 61.0125755 + ], + [ + -140.9874011, + 61.0118551 + ], + [ + -140.99984, + 71.0039309 + ], + [ + -154.5023956, + 71.0017377 + ], + [ + -154.5039632, + 71.9983391 + ], + [ + -157.499048, + 71.9978773 + ], + [ + -157.4974758, + 70.9982877 + ], + [ + -163.0233611, + 70.9973899 + ], + [ + -163.0218273, + 69.9707435 + ], + [ + -164.9730896, + 69.97041 + ], + [ + -164.9717003, + 68.994689 ] - ] + ], + [ + [ + -168.5133204, + 62.8689586 + ], + [ + -168.5144423, + 63.8765677 + ], + [ + -172.0202755, + 63.8757975 + ], + [ + -172.0191536, + 62.8681608 + ] + ], + [ + [ + -170.9947111, + 59.9954089 + ], + [ + -170.995726, + 60.9969787 + ], + [ + -174.0045311, + 60.9962508 + ], + [ + -174.0035162, + 59.9946581 + ] + ], + [ + [ + -156.0717261, + 20.2854602 + ], + [ + -154.7940471, + 20.2860582 + ], + [ + -154.7933145, + 18.9029464 + ], + [ + -156.0709936, + 18.9023432 + ] + ] + ] + }, + { + "name": "Vejmidte (Denmark)", + "type": "tms", + "template": "http://{switch:a,b,c}.tile.openstreetmap.dk/danmark/vejmidte/{zoom}/{x}/{y}.png", + "scaleExtent": [ + 0, + 20 ], - "terms_url": "http://data.wien.gv.at/", - "terms_text": "Stadt Wien" - } - ], - "wikipedia": [ - [ - "English", - "English", - "en" - ], - [ - "German", - "Deutsch", - "de" - ], - [ - "Dutch", - "Nederlands", - "nl" - ], - [ - "French", - "Français", - "fr" - ], - [ - "Italian", - "Italiano", - "it" - ], - [ - "Russian", - "Ð ÑÑÑкий", - "ru" - ], - [ - "Spanish", - "Español", - "es" - ], - [ - "Polish", - "Polski", - "pl" - ], - [ - "Swedish", - "Svenska", - "sv" - ], - [ - "Japanese", - "æ¥æ¬èª", - "ja" - ], - [ - "Portuguese", - "Português", - "pt" - ], - [ - "Chinese", - "ä¸æ", - "zh" - ], - [ - "Vietnamese", - "Tiếng Viá»t", - "vi" - ], - [ - "Ukrainian", - "УкÑаÑнÑÑка", - "uk" - ], - [ - "Catalan", - "Català ", - "ca" - ], - [ - "Norwegian (BokmÃ¥l)", - "Norsk (BokmÃ¥l)", - "no" - ], - [ - "Waray-Waray", - "Winaray", - "war" - ], - [ - "Cebuano", - "Sinugboanong Binisaya", - "ceb" - ], - [ - "Finnish", - "Suomi", - "fi" - ], - [ - "Persian", - "ÙارسÛ", - "fa" - ], - [ - "Czech", - "ÄeÅ¡tina", - "cs" - ], - [ - "Hungarian", - "Magyar", - "hu" - ], - [ - "Korean", - "íêµì´", - "ko" - ], - [ - "Romanian", - "RomânÄ", - "ro" - ], - [ - "Arabic", - "اÙعربÙØ©", - "ar" - ], - [ - "Turkish", - "Türkçe", - "tr" - ], - [ - "Indonesian", - "Bahasa Indonesia", - "id" - ], - [ - "Kazakh", - "ÒазаÒÑа", - "kk" - ], - [ - "Malay", - "Bahasa Melayu", - "ms" - ], - [ - "Serbian", - "СÑпÑки / Srpski", - "sr" - ], - [ - "Slovak", - "SlovenÄina", - "sk" - ], - [ - "Esperanto", - "Esperanto", - "eo" - ], - [ - "Danish", - "Dansk", - "da" - ], - [ - "Lithuanian", - "Lietuvių", - "lt" - ], - [ - "Basque", - "Euskara", - "eu" - ], - [ - "Bulgarian", - "ÐÑлгаÑÑки", - "bg" - ], - [ - "Hebrew", - "×¢×ר×ת", - "he" - ], - [ - "Slovenian", - "SlovenÅ¡Äina", - "sl" - ], - [ - "Croatian", - "Hrvatski", - "hr" - ], - [ - "Volapük", - "Volapük", - "vo" - ], - [ - "Estonian", - "Eesti", - "et" - ], - [ - "Hindi", - "हिनà¥à¤¦à¥", - "hi" - ], - [ - "Uzbek", - "Oâzbek", - "uz" - ], - [ - "Galician", - "Galego", - "gl" - ], - [ - "Norwegian (Nynorsk)", - "Nynorsk", - "nn" - ], - [ - "Simple English", - "Simple English", - "simple" - ], - [ - "Azerbaijani", - "AzÉrbaycanca", - "az" - ], - [ - "Latin", - "Latina", - "la" - ], - [ - "Greek", - "Îλληνικά", - "el" - ], - [ - "Thai", - "à¹à¸à¸¢", - "th" - ], - [ - "Serbo-Croatian", - "Srpskohrvatski / СÑпÑÐºÐ¾Ñ ÑваÑÑки", - "sh" - ], - [ - "Georgian", - "á¥áá áá£áá", - "ka" - ], - [ - "Occitan", - "Occitan", - "oc" - ], - [ - "Macedonian", - "ÐакедонÑки", - "mk" - ], - [ - "Newar / Nepal Bhasa", - "नà¥à¤ªà¤¾à¤² à¤à¤¾à¤·à¤¾", - "new" - ], - [ - "Tagalog", - "Tagalog", - "tl" - ], - [ - "Piedmontese", - "Piemontèis", - "pms" - ], - [ - "Belarusian", - "ÐелаÑÑÑкаÑ", - "be" - ], - [ - "Haitian", - "Krèyol ayisyen", - "ht" - ], - [ - "Tamil", - "தமிழà¯", - "ta" - ], - [ - "Telugu", - "à°¤à±à°²à±à°à±", - "te" - ], - [ - "Belarusian (TaraÅ¡kievica)", - "ÐелаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)", - "be-x-old" - ], - [ - "Latvian", - "LatvieÅ¡u", - "lv" - ], - [ - "Breton", - "Brezhoneg", - "br" - ], - [ - "Malagasy", - "Malagasy", - "mg" - ], - [ - "Albanian", - "Shqip", - "sq" - ], - [ - "Armenian", - "ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶", - "hy" - ], - [ - "Tatar", - "Tatarça / ТаÑаÑÑа", - "tt" - ], - [ - "Javanese", - "Basa Jawa", - "jv" - ], - [ - "Welsh", - "Cymraeg", - "cy" - ], - [ - "Marathi", - "मराठà¥", - "mr" - ], - [ - "Luxembourgish", - "Lëtzebuergesch", - "lb" - ], - [ - "Icelandic", - "Ãslenska", - "is" - ], - [ - "Bosnian", - "Bosanski", - "bs" - ], - [ - "Burmese", - "áá¼ááºáá¬áá¬áá¬", - "my" - ], - [ - "Yoruba", - "Yorùbá", - "yo" - ], - [ - "Bashkir", - "ÐаÑҡоÑÑ", - "ba" - ], - [ - "Malayalam", - "മലയാളà´", - "ml" - ], - [ - "Aragonese", - "Aragonés", - "an" - ], - [ - "Lombard", - "Lumbaart", - "lmo" - ], - [ - "Afrikaans", - "Afrikaans", - "af" - ], - [ - "West Frisian", - "Frysk", - "fy" - ], - [ - "Western Panjabi", - "Ø´Ø§Û Ù Ú©Ú¾Û Ù¾ÙØ¬Ø§Ø¨Û (ShÄhmukhÄ« PañjÄbÄ«)", - "pnb" - ], - [ - "Bengali", - "বাà¦à¦²à¦¾", - "bn" - ], - [ - "Swahili", - "Kiswahili", - "sw" - ], - [ - "Bishnupriya Manipuri", - "à¦à¦®à¦¾à¦° ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§", - "bpy" - ], - [ - "Ido", - "Ido", - "io" - ], - [ - "Kirghiz", - "ÐÑÑгÑзÑа", - "ky" - ], - [ - "Urdu", - "اردÙ", + "polygon": [ + [ + [ + 8.3743941, + 54.9551655 + ], + [ + 8.3683809, + 55.4042149 + ], + [ + 8.2103997, + 55.4039795 + ], + [ + 8.2087314, + 55.4937345 + ], + [ + 8.0502655, + 55.4924731 + ], + [ + 8.0185123, + 56.7501399 + ], + [ + 8.1819161, + 56.7509948 + ], + [ + 8.1763274, + 57.0208898 + ], + [ + 8.3413329, + 57.0219872 + ], + [ + 8.3392467, + 57.1119574 + ], + [ + 8.5054433, + 57.1123212 + ], + [ + 8.5033923, + 57.2020499 + ], + [ + 9.3316304, + 57.2027636 + ], + [ + 9.3319079, + 57.2924835 + ], + [ + 9.4978864, + 57.2919578 + ], + [ + 9.4988593, + 57.3820608 + ], + [ + 9.6649749, + 57.3811615 + ], + [ + 9.6687295, + 57.5605591 + ], + [ + 9.8351961, + 57.5596265 + ], + [ + 9.8374896, + 57.6493322 + ], + [ + 10.1725726, + 57.6462818 + ], + [ + 10.1754245, + 57.7367768 + ], + [ + 10.5118282, + 57.7330269 + ], + [ + 10.5152095, + 57.8228945 + ], + [ + 10.6834853, + 57.8207722 + ], + [ + 10.6751613, + 57.6412021 + ], + [ + 10.5077045, + 57.6433097 + ], + [ + 10.5039992, + 57.5535088 + ], + [ + 10.671038, + 57.5514113 + ], + [ + 10.6507805, + 57.1024538 + ], + [ + 10.4857673, + 57.1045138 + ], + [ + 10.4786236, + 56.9249051 + ], + [ + 10.3143981, + 56.9267573 + ], + [ + 10.3112341, + 56.8369269 + ], + [ + 10.4750295, + 56.83509 + ], + [ + 10.4649016, + 56.5656681 + ], + [ + 10.9524239, + 56.5589761 + ], + [ + 10.9479249, + 56.4692243 + ], + [ + 11.1099335, + 56.4664675 + ], + [ + 11.1052639, + 56.376833 + ], + [ + 10.9429901, + 56.3795284 + ], + [ + 10.9341235, + 56.1994768 + ], + [ + 10.7719685, + 56.2020244 + ], + [ + 10.7694751, + 56.1120103 + ], + [ + 10.6079695, + 56.1150259 + ], + [ + 10.4466742, + 56.116717 + ], + [ + 10.2865948, + 56.118675 + ], + [ + 10.2831527, + 56.0281851 + ], + [ + 10.4439274, + 56.0270388 + ], + [ + 10.4417713, + 55.7579243 + ], + [ + 10.4334961, + 55.6693533 + ], + [ + 10.743814, + 55.6646861 + ], + [ + 10.743814, + 55.5712253 + ], + [ + 10.8969041, + 55.5712253 + ], + [ + 10.9051793, + 55.3953852 + ], + [ + 11.0613726, + 55.3812841 + ], + [ + 11.0593038, + 55.1124061 + ], + [ + 11.0458567, + 55.0318621 + ], + [ + 11.2030844, + 55.0247474 + ], + [ + 11.2030844, + 55.117139 + ], + [ + 11.0593038, + 55.1124061 + ], + [ + 11.0613726, + 55.3812841 + ], + [ + 11.0789572, + 55.5712253 + ], + [ + 10.8969041, + 55.5712253 + ], + [ + 10.9258671, + 55.6670198 + ], + [ + 10.743814, + 55.6646861 + ], + [ + 10.7562267, + 55.7579243 + ], + [ + 10.4417713, + 55.7579243 + ], + [ + 10.4439274, + 56.0270388 + ], + [ + 10.4466742, + 56.116717 + ], + [ + 10.6079695, + 56.1150259 + ], + [ + 10.6052053, + 56.0247462 + ], + [ + 10.9258671, + 56.0201215 + ], + [ + 10.9197132, + 55.9309388 + ], + [ + 11.0802782, + 55.92792 + ], + [ + 11.0858066, + 56.0178284 + ], + [ + 11.7265047, + 56.005058 + ], + [ + 11.7319981, + 56.0952142 + ], + [ + 12.0540333, + 56.0871256 + ], + [ + 12.0608477, + 56.1762576 + ], + [ + 12.7023469, + 56.1594405 + ], + [ + 12.6611131, + 55.7114318 + ], + [ + 12.9792318, + 55.7014026 + ], + [ + 12.9612912, + 55.5217294 + ], + [ + 12.3268659, + 55.5412096 + ], + [ + 12.3206071, + 55.4513655 + ], + [ + 12.4778226, + 55.447067 + ], + [ + 12.4702432, + 55.3570479 + ], + [ + 12.6269738, + 55.3523837 + ], + [ + 12.6200898, + 55.2632576 + ], + [ + 12.4627339, + 55.26722 + ], + [ + 12.4552949, + 55.1778223 + ], + [ + 12.2987046, + 55.1822303 + ], + [ + 12.2897344, + 55.0923641 + ], + [ + 12.6048608, + 55.0832904 + ], + [ + 12.5872011, + 54.9036285 + ], + [ + 12.2766618, + 54.9119031 + ], + [ + 12.2610181, + 54.7331602 + ], + [ + 12.1070691, + 54.7378161 + ], + [ + 12.0858621, + 54.4681655 + ], + [ + 11.7794953, + 54.4753579 + ], + [ + 11.7837381, + 54.5654783 + ], + [ + 11.1658525, + 54.5782155 + ], + [ + 11.1706443, + 54.6686508 + ], + [ + 10.8617173, + 54.6733956 + ], + [ + 10.8651245, + 54.7634667 + ], + [ + 10.7713646, + 54.7643888 + ], + [ + 10.7707276, + 54.7372807 + ], + [ + 10.7551428, + 54.7375776 + ], + [ + 10.7544039, + 54.7195666 + ], + [ + 10.7389074, + 54.7197588 + ], + [ + 10.7384368, + 54.7108482 + ], + [ + 10.7074486, + 54.7113045 + ], + [ + 10.7041094, + 54.6756741 + ], + [ + 10.5510973, + 54.6781698 + ], + [ + 10.5547184, + 54.7670245 + ], + [ + 10.2423994, + 54.7705935 + ], + [ + 10.2459845, + 54.8604673 + ], + [ + 10.0902268, + 54.8622134 + ], + [ + 10.0873731, + 54.7723851 + ], + [ + 9.1555798, + 54.7769557 + ], + [ + 9.1562752, + 54.8675369 + ], + [ + 8.5321973, + 54.8663765 + ], + [ + 8.531432, + 54.95516 + ] + ], + [ + [ + 11.4577738, + 56.819554 + ], + [ + 11.7849181, + 56.8127385 + ], + [ + 11.7716715, + 56.6332796 + ], + [ + 11.4459621, + 56.6401087 + ] + ], + [ + [ + 11.3274736, + 57.3612962 + ], + [ + 11.3161808, + 57.1818004 + ], + [ + 11.1508692, + 57.1847276 + ], + [ + 11.1456628, + 57.094962 + ], + [ + 10.8157703, + 57.1001693 + ], + [ + 10.8290599, + 57.3695272 + ] + ], + [ + [ + 11.5843266, + 56.2777928 + ], + [ + 11.5782882, + 56.1880397 + ], + [ + 11.7392309, + 56.1845765 + ], + [ + 11.7456428, + 56.2743186 + ] + ], + [ + [ + 14.6825922, + 55.3639405 + ], + [ + 14.8395247, + 55.3565231 + ], + [ + 14.8263755, + 55.2671261 + ], + [ + 15.1393406, + 55.2517359 + ], + [ + 15.1532015, + 55.3410836 + ], + [ + 15.309925, + 55.3330556 + ], + [ + 15.295719, + 55.2437356 + ], + [ + 15.1393406, + 55.2517359 + ], + [ + 15.1255631, + 55.1623802 + ], + [ + 15.2815819, + 55.1544167 + ], + [ + 15.2535578, + 54.9757646 + ], + [ + 14.6317464, + 55.0062496 + ] + ] + ], + "terms_url": "http://wiki.openstreetmap.org/wiki/Vejmidte", + "terms_text": "Danish municipalities" + }, + { + "name": "Vienna: Beschriftungen (annotations)", + "type": "tms", + "template": "http://www.wien.gv.at/wmts/beschriftung/normal/google3857/{zoom}/{y}/{x}.png", + "scaleExtent": [ + 0, + 19 + ], + "polygon": [ + [ + [ + 16.17, + 48.1 + ], + [ + 16.17, + 48.33 + ], + [ + 16.58, + 48.33 + ], + [ + 16.58, + 48.1 + ], + [ + 16.17, + 48.1 + ] + ] + ], + "terms_url": "http://data.wien.gv.at/", + "terms_text": "Stadt Wien" + }, + { + "name": "Vienna: Mehrzweckkarte (general purpose)", + "type": "tms", + "template": "http://www.wien.gv.at/wmts/fmzk/pastell/google3857/{zoom}/{y}/{x}.jpeg", + "scaleExtent": [ + 0, + 19 + ], + "polygon": [ + [ + [ + 16.17, + 48.1 + ], + [ + 16.17, + 48.33 + ], + [ + 16.58, + 48.33 + ], + [ + 16.58, + 48.1 + ], + [ + 16.17, + 48.1 + ] + ] + ], + "terms_url": "http://data.wien.gv.at/", + "terms_text": "Stadt Wien" + }, + { + "name": "Vienna: Orthofoto (aerial image)", + "type": "tms", + "template": "http://www.wien.gv.at/wmts/lb/farbe/google3857/{zoom}/{y}/{x}.jpeg", + "scaleExtent": [ + 0, + 19 + ], + "polygon": [ + [ + [ + 16.17, + 48.1 + ], + [ + 16.17, + 48.33 + ], + [ + 16.58, + 48.33 + ], + [ + 16.58, + 48.1 + ], + [ + 16.17, + 48.1 + ] + ] + ], + "terms_url": "http://data.wien.gv.at/", + "terms_text": "Stadt Wien" + } + ], + "wikipedia": [ + [ + "English", + "English", + "en" + ], + [ + "German", + "Deutsch", + "de" + ], + [ + "Dutch", + "Nederlands", + "nl" + ], + [ + "French", + "Français", + "fr" + ], + [ + "Italian", + "Italiano", + "it" + ], + [ + "Russian", + "Ð ÑÑÑкий", + "ru" + ], + [ + "Spanish", + "Español", + "es" + ], + [ + "Polish", + "Polski", + "pl" + ], + [ + "Swedish", + "Svenska", + "sv" + ], + [ + "Japanese", + "æ¥æ¬èª", + "ja" + ], + [ + "Portuguese", + "Português", + "pt" + ], + [ + "Chinese", + "ä¸æ", + "zh" + ], + [ + "Vietnamese", + "Tiếng Viá»t", + "vi" + ], + [ + "Ukrainian", + "УкÑаÑнÑÑка", + "uk" + ], + [ + "Catalan", + "Català ", + "ca" + ], + [ + "Norwegian (BokmÃ¥l)", + "Norsk (BokmÃ¥l)", + "no" + ], + [ + "Waray-Waray", + "Winaray", + "war" + ], + [ + "Cebuano", + "Sinugboanong Binisaya", + "ceb" + ], + [ + "Finnish", + "Suomi", + "fi" + ], + [ + "Persian", + "ÙارسÛ", + "fa" + ], + [ + "Czech", + "ÄeÅ¡tina", + "cs" + ], + [ + "Hungarian", + "Magyar", + "hu" + ], + [ + "Korean", + "íêµì´", + "ko" + ], + [ + "Romanian", + "RomânÄ", + "ro" + ], + [ + "Arabic", + "اÙعربÙØ©", + "ar" + ], + [ + "Turkish", + "Türkçe", + "tr" + ], + [ + "Indonesian", + "Bahasa Indonesia", + "id" + ], + [ + "Kazakh", + "ÒазаÒÑа", + "kk" + ], + [ + "Malay", + "Bahasa Melayu", + "ms" + ], + [ + "Serbian", + "СÑпÑки / Srpski", + "sr" + ], + [ + "Slovak", + "SlovenÄina", + "sk" + ], + [ + "Esperanto", + "Esperanto", + "eo" + ], + [ + "Danish", + "Dansk", + "da" + ], + [ + "Lithuanian", + "Lietuvių", + "lt" + ], + [ + "Basque", + "Euskara", + "eu" + ], + [ + "Bulgarian", + "ÐÑлгаÑÑки", + "bg" + ], + [ + "Hebrew", + "×¢×ר×ת", + "he" + ], + [ + "Slovenian", + "SlovenÅ¡Äina", + "sl" + ], + [ + "Croatian", + "Hrvatski", + "hr" + ], + [ + "Volapük", + "Volapük", + "vo" + ], + [ + "Estonian", + "Eesti", + "et" + ], + [ + "Hindi", + "हिनà¥à¤¦à¥", + "hi" + ], + [ + "Uzbek", + "Oâzbek", + "uz" + ], + [ + "Galician", + "Galego", + "gl" + ], + [ + "Norwegian (Nynorsk)", + "Nynorsk", + "nn" + ], + [ + "Simple English", + "Simple English", + "simple" + ], + [ + "Azerbaijani", + "AzÉrbaycanca", + "az" + ], + [ + "Latin", + "Latina", + "la" + ], + [ + "Greek", + "Îλληνικά", + "el" + ], + [ + "Thai", + "à¹à¸à¸¢", + "th" + ], + [ + "Serbo-Croatian", + "Srpskohrvatski / СÑпÑÐºÐ¾Ñ ÑваÑÑки", + "sh" + ], + [ + "Georgian", + "á¥áá áá£áá", + "ka" + ], + [ + "Occitan", + "Occitan", + "oc" + ], + [ + "Macedonian", + "ÐакедонÑки", + "mk" + ], + [ + "Newar / Nepal Bhasa", + "नà¥à¤ªà¤¾à¤² à¤à¤¾à¤·à¤¾", + "new" + ], + [ + "Tagalog", + "Tagalog", + "tl" + ], + [ + "Piedmontese", + "Piemontèis", + "pms" + ], + [ + "Belarusian", + "ÐелаÑÑÑкаÑ", + "be" + ], + [ + "Haitian", + "Krèyol ayisyen", + "ht" + ], + [ + "Tamil", + "தமிழà¯", + "ta" + ], + [ + "Telugu", + "à°¤à±à°²à±à°à±", + "te" + ], + [ + "Belarusian (TaraÅ¡kievica)", + "ÐелаÑÑÑÐºÐ°Ñ (ÑаÑаÑкевÑÑа)", + "be-x-old" + ], + [ + "Latvian", + "LatvieÅ¡u", + "lv" + ], + [ + "Breton", + "Brezhoneg", + "br" + ], + [ + "Malagasy", + "Malagasy", + "mg" + ], + [ + "Albanian", + "Shqip", + "sq" + ], + [ + "Armenian", + "ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶", + "hy" + ], + [ + "Tatar", + "Tatarça / ТаÑаÑÑа", + "tt" + ], + [ + "Javanese", + "Basa Jawa", + "jv" + ], + [ + "Welsh", + "Cymraeg", + "cy" + ], + [ + "Marathi", + "मराठà¥", + "mr" + ], + [ + "Luxembourgish", + "Lëtzebuergesch", + "lb" + ], + [ + "Icelandic", + "Ãslenska", + "is" + ], + [ + "Bosnian", + "Bosanski", + "bs" + ], + [ + "Burmese", + "áá¼ááºáá¬áá¬áá¬", + "my" + ], + [ + "Yoruba", + "Yorùbá", + "yo" + ], + [ + "Bashkir", + "ÐаÑҡоÑÑ", + "ba" + ], + [ + "Malayalam", + "മലയാളà´", + "ml" + ], + [ + "Aragonese", + "Aragonés", + "an" + ], + [ + "Lombard", + "Lumbaart", + "lmo" + ], + [ + "Afrikaans", + "Afrikaans", + "af" + ], + [ + "West Frisian", + "Frysk", + "fy" + ], + [ + "Western Panjabi", + "Ø´Ø§Û Ù Ú©Ú¾Û Ù¾ÙØ¬Ø§Ø¨Û (ShÄhmukhÄ« PañjÄbÄ«)", + "pnb" + ], + [ + "Bengali", + "বাà¦à¦²à¦¾", + "bn" + ], + [ + "Swahili", + "Kiswahili", + "sw" + ], + [ + "Bishnupriya Manipuri", + "à¦à¦®à¦¾à¦° ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§", + "bpy" + ], + [ + "Ido", + "Ido", + "io" + ], + [ + "Kirghiz", + "ÐÑÑгÑзÑа", + "ky" + ], + [ + "Urdu", + "اردÙ", "ur" ], [ @@ -54866,6 +56550,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": { "addr:housenumber": "*" }, + "addTags": {}, "matchScore": 0.2, "name": "Address" }, @@ -55202,6 +56887,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Cafe" }, "amenity/car_rental": { + "icon": "car", "geometry": [ "point", "area" @@ -55215,6 +56901,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Car Rental" }, "amenity/car_sharing": { + "icon": "car", "geometry": [ "point", "area" @@ -55548,7 +57235,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "amenity": "parking" }, "terms": [], - "name": "Parking" + "name": "Car Parking" }, "amenity/pharmacy": { "icon": "pharmacy", @@ -55844,7 +57531,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "visitor centre", "permit center", "permit centre", - "backcountry office" + "backcountry office", + "warden office", + "warden center" ], "tags": { "amenity": "ranger_station" @@ -55937,6 +57626,23 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "name": "School" }, + "amenity/shelter": { + "fields": [ + "shelter_type" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "amenity": "shelter" + }, + "terms": [ + "lean-to" + ], + "name": "Shelter" + }, "amenity/swimming_pool": { "geometry": [ "point", @@ -56111,7 +57817,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "geometry": [ "area" - ] + ], + "matchScore": 0.1 }, "barrier": { "geometry": [ @@ -56197,6 +57904,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Ditch" }, "barrier/entrance": { + "icon": "entrance", "geometry": [ "vertex" ], @@ -56368,6 +58076,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Commercial Building" }, "building/entrance": { + "icon": "entrance", "geometry": [ "vertex" ], @@ -56386,7 +58095,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": { "building": "garage" }, - "name": "Garage" + "name": "Garage", + "icon": "warehouse" }, "building/house": { "icon": "building", @@ -56488,6 +58198,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Emergency Phone" }, "entrance": { + "icon": "entrance", "geometry": [ "vertex" ], @@ -56500,6 +58211,39 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," ], "name": "Entrance" }, + "footway/crossing": { + "fields": [ + "crossing" + ], + "geometry": [ + "line" + ], + "tags": { + "highway": "footway", + "footway": "crossing" + }, + "terms": [ + "crosswalk", + "zebra crossing" + ], + "name": "Crossing" + }, + "footway/sidewalk": { + "fields": [ + "surface", + "lit", + "access" + ], + "geometry": [ + "line" + ], + "tags": { + "highway": "footway", + "footway": "sidewalk" + }, + "terms": [], + "name": "Sidewalk" + }, "highway": { "fields": [ "highway" @@ -57346,7 +59090,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "landuse": "farmyard" }, "terms": [], - "name": "Farmyard" + "name": "Farmyard", + "icon": "farm" }, "landuse/forest": { "fields": [ @@ -57467,6 +59212,19 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "name": "Leisure" }, + "leisure/common": { + "geometry": [ + "point", + "area" + ], + "terms": [ + "open space" + ], + "tags": { + "leisure": "common" + }, + "name": "Common" + }, "leisure/dog_park": { "geometry": [ "point", @@ -57476,7 +59234,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": { "leisure": "dog_park" }, - "name": "Dog Park" + "name": "Dog Park", + "icon": "dog-park" }, "leisure/garden": { "icon": "garden", @@ -57677,6 +59436,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Volleyball Court" }, "leisure/playground": { + "icon": "playground", "geometry": [ "point", "area" @@ -57759,7 +59519,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": {}, "geometry": [ "line" - ] + ], + "matchScore": 0.1 }, "man_made": { "fields": [ @@ -57803,7 +59564,23 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": { "man_made": "lighthouse" }, - "name": "Lighthouse" + "name": "Lighthouse", + "icon": "lighthouse" + }, + "man_made/observation": { + "geometry": [ + "point", + "area" + ], + "terms": [ + "lookout tower", + "fire tower" + ], + "tags": { + "man_made": "tower", + "tower:type": "observation" + }, + "name": "Observation Tower" }, "man_made/pier": { "geometry": [ @@ -58074,6 +59851,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "natural/tree": { "fields": [ + "tree_type", "denotation" ], "icon": "park", @@ -58193,6 +59971,347 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "terms": [], "name": "Office" }, + "office/accountant": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "accountant" + }, + "terms": [], + "name": "Accountant" + }, + "office/administrative": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "administrative" + }, + "terms": [], + "name": "Administrative Office" + }, + "office/architect": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "architect" + }, + "terms": [], + "name": "Architect" + }, + "office/company": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "company" + }, + "terms": [], + "name": "Company Office" + }, + "office/educational_institution": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "educational_institution" + }, + "terms": [], + "name": "Educational Institution" + }, + "office/employment_agency": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "employment_agency" + }, + "terms": [], + "name": "Employment Agency" + }, + "office/estate_agent": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "estate_agent" + }, + "terms": [], + "name": "Real Estate Office" + }, + "office/financial": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "financial" + }, + "terms": [], + "name": "Financial Office" + }, + "office/government": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "government" + }, + "terms": [], + "name": "Government Office" + }, + "office/insurance": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "insurance" + }, + "terms": [], + "name": "Insurance Office" + }, + "office/it": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "it" + }, + "terms": [], + "name": "IT Office" + }, + "office/lawyer": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "lawyer" + }, + "terms": [], + "name": "Law Office" + }, + "office/newspaper": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "newspaper" + }, + "terms": [], + "name": "Newspaper" + }, + "office/ngo": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "ngo" + }, + "terms": [], + "name": "NGO Office" + }, + "office/physician": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "physician" + }, + "terms": [], + "name": "Physician" + }, + "office/political_party": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "political_party" + }, + "terms": [], + "name": "Political Party" + }, + "office/research": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "research" + }, + "terms": [], + "name": "Research Office" + }, + "office/telecommunication": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "telecommunication" + }, + "terms": [], + "name": "Telecom Office" + }, + "office/therapist": { + "icon": "commercial", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "therapist" + }, + "terms": [], + "name": "Therapist" + }, + "office/travel_agent": { + "icon": "suitcase", + "fields": [ + "address", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "office": "travel_agent" + }, + "terms": [], + "name": "Travel Agency", + "searchable": false + }, "place": { "fields": [ "place" @@ -58297,7 +60416,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": {}, "geometry": [ "point" - ] + ], + "matchScore": 0.1 }, "power": { "geometry": [ @@ -58340,6 +60460,16 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Power Line", "icon": "power-line" }, + "power/minor_line": { + "geometry": [ + "line" + ], + "tags": { + "power": "minor_line" + }, + "name": "Minor Power Line", + "icon": "power-line" + }, "power/pole": { "geometry": [ "vertex" @@ -58512,6 +60642,10 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": { "railway": "station" }, + "terms": [ + "train station", + "station" + ], "name": "Railway Station" }, "railway/subway": { @@ -58529,7 +60663,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Subway" }, "railway/subway_entrance": { - "icon": "rail-underground", + "icon": "rail-metro", "geometry": [ "point" ], @@ -58615,7 +60749,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Liquor Store" }, "shop/bakery": { - "icon": "shop", + "icon": "bakery", "fields": [ "address", "building_area", @@ -58740,10 +60874,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Butcher" }, "shop/car": { - "icon": "shop", + "icon": "car", "fields": [ "address", - "building_area", "opening_hours" ], "geometry": [ @@ -58808,7 +60941,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Chemist" }, "shop/clothes": { - "icon": "shop", + "icon": "clothing-store", "fields": [ "address", "building_area", @@ -59172,7 +61305,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Kiosk" }, "shop/laundry": { - "icon": "shop", + "icon": "laundry", "fields": [ "address", "building_area", @@ -59188,6 +61321,26 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "name": "Laundry" }, + "shop/locksmith": { + "icon": "shop", + "fields": [ + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "terms": [ + "keys" + ], + "tags": { + "shop": "locksmith" + }, + "name": "Locksmith" + }, "shop/mall": { "icon": "shop", "fields": [ @@ -59308,7 +61461,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Outdoor Store" }, "shop/pet": { - "icon": "shop", + "icon": "dog-park", "fields": [ "address", "building_area", @@ -59324,6 +61477,23 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "name": "Pet Store" }, + "shop/photo": { + "icon": "camera", + "fields": [ + "address", + "building_area", + "opening_hours" + ], + "geometry": [ + "point", + "vertex", + "area" + ], + "tags": { + "shop": "photo" + }, + "name": "Photography Store" + }, "shop/shoes": { "icon": "shop", "fields": [ @@ -59397,6 +61567,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "five-and-dime", "flea market", "galleria", + "grocery store", "mall", "mart", "outlet", @@ -59433,7 +61604,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "name": "Toy Store" }, "shop/travel_agency": { - "icon": "shop", + "icon": "suitcase", "fields": [ "address", "building_area", @@ -59595,7 +61766,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "vertex", "area" ], - "terms": [], + "terms": [ + "camping" + ], "tags": { "tourism": "camp_site" }, @@ -60068,7 +62241,8 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "tags": {}, "geometry": [ "vertex" - ] + ], + "matchScore": 0.1 }, "waterway": { "fields": [ @@ -60218,9 +62392,9 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "defaults": { "area": [ "category-landuse", - "building", + "category-building", + "category-water-area", "leisure/park", - "natural/water", "amenity/hospital", "amenity/place_of_worship", "amenity/cafe", @@ -60231,7 +62405,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "category-road", "category-rail", "category-path", - "category-water", + "category-water-line", "power/line", "line" ], @@ -60264,6 +62438,19 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," ] }, "categories": { + "category-building": { + "geometry": "area", + "name": "Building", + "icon": "building", + "members": [ + "building/house", + "building/apartments", + "building/commercial", + "building/industrial", + "building/residential", + "building" + ] + }, "category-landuse": { "geometry": "area", "name": "Land Use", @@ -60347,7 +62534,18 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "type/route" ] }, - "category-water": { + "category-water-area": { + "geometry": "area", + "name": "Water", + "icon": "water", + "members": [ + "natural/water/lake", + "natural/water/pond", + "natural/water/reservoir", + "natural/water" + ] + }, + "category-water-line": { "geometry": "line", "name": "Water", "icon": "category-water", @@ -60447,12 +62645,12 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "aeroway": { "key": "aeroway", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "amenity": { "key": "amenity", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "artist": { @@ -60477,7 +62675,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "barrier": { "key": "barrier", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "bicycle_parking": { @@ -60492,7 +62690,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "building": { "key": "building", - "type": "combo", + "type": "typeCombo", "label": "Building" }, "building_area": { @@ -60606,7 +62804,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "entrance": { "key": "entrance", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "fax": { @@ -60653,12 +62851,12 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "highway": { "key": "highway", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "historic": { "key": "historic", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "iata": { @@ -60699,7 +62897,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "landuse": { "key": "landuse", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "lanes": { @@ -60715,7 +62913,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "leisure": { "key": "leisure", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "levels": { @@ -60736,7 +62934,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "man_made": { "key": "man_made", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "maxspeed": { @@ -60753,7 +62951,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "natural": { "key": "natural", - "type": "combo", + "type": "typeCombo", "label": "Natural" }, "network": { @@ -60770,7 +62968,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "office": { "key": "office", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "oneway": { @@ -60823,17 +63021,17 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "place": { "key": "place", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "power": { "key": "power", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "railway": { "key": "railway", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "ref": { @@ -60908,9 +63106,23 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "type": "check", "label": "Shelter" }, + "shelter_type": { + "key": "shelter_type", + "type": "combo", + "options": [ + "public_transport", + "picnic_shelter", + "weather_shelter", + "lean_to", + "basic_hut", + "field_shelter", + "rock_shelter" + ], + "label": "Type" + }, "shop": { "key": "shop", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "source": { @@ -60961,7 +63173,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "tourism": { "key": "tourism", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "towertype": { @@ -60979,6 +63191,16 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," "type": "combo", "label": "Trail Visibility" }, + "tree_type": { + "key": "type", + "type": "combo", + "options": [ + "broad_leaved", + "conifer", + "palm" + ], + "label": "Type" + }, "vending": { "key": "vending", "type": "combo", @@ -60991,7 +63213,7 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," }, "waterway": { "key": "waterway", - "type": "combo", + "type": "typeCombo", "label": "Type" }, "website": { @@ -70905,1310 +73127,1548 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," ] }, "featureIcons": { - "airfield": { + "circle-stroked": { "12": [ - 0, + 42, 0 ], "18": [ - 0, - 14 + 24, + 0 ], "24": [ 0, - 34 + 0 ] }, - "airport": { + "circle": { "12": [ - 0, - 60 + 96, + 0 ], "18": [ - 0, - 74 + 78, + 0 ], "24": [ - 0, - 94 + 54, + 0 ] }, - "alcohol-shop": { + "square-stroked": { "12": [ - 0, - 120 + 150, + 0 ], "18": [ - 0, - 134 + 132, + 0 ], "24": [ - 0, - 154 + 108, + 0 ] }, - "america-football": { + "square": { "12": [ - 0, - 180 + 204, + 0 ], "18": [ - 0, - 194 + 186, + 0 ], "24": [ - 0, - 214 + 162, + 0 ] }, - "art-gallery": { + "triangle-stroked": { "12": [ - 0, - 240 + 258, + 0 ], "18": [ - 0, - 254 + 240, + 0 ], "24": [ - 0, - 274 + 216, + 0 ] }, - "bank": { + "triangle": { "12": [ - 0, - 300 + 42, + 24 ], "18": [ - 0, - 314 + 24, + 24 ], "24": [ 0, - 334 + 24 ] }, - "bar": { + "star-stroked": { "12": [ - 0, - 360 + 96, + 24 ], "18": [ - 0, - 374 + 78, + 24 ], "24": [ - 0, - 394 + 54, + 24 ] }, - "baseball": { + "star": { "12": [ - 0, - 420 + 150, + 24 ], "18": [ - 0, - 434 + 132, + 24 ], "24": [ - 0, - 454 + 108, + 24 ] }, - "basketball": { + "cross": { "12": [ - 0, - 480 + 204, + 24 ], "18": [ - 0, - 494 + 186, + 24 ], "24": [ - 0, - 514 + 162, + 24 ] }, - "beer": { + "marker-stroked": { "12": [ - 0, - 540 + 258, + 24 ], "18": [ - 0, - 554 + 240, + 24 ], "24": [ - 0, - 574 + 216, + 24 ] }, - "bicycle": { + "marker": { "12": [ - 0, - 600 + 42, + 48 ], "18": [ - 0, - 614 + 24, + 48 ], "24": [ 0, - 634 + 48 ] }, - "building": { + "religious-jewish": { "12": [ - 0, - 660 + 96, + 48 ], "18": [ - 0, - 674 + 78, + 48 ], "24": [ - 0, - 694 + 54, + 48 ] }, - "bus": { + "religious-christian": { "12": [ - 0, - 720 + 150, + 48 ], "18": [ - 0, - 734 + 132, + 48 ], "24": [ - 0, - 754 + 108, + 48 ] }, - "cafe": { + "religious-muslim": { "12": [ - 0, - 780 + 204, + 48 ], "18": [ - 0, - 794 + 186, + 48 ], "24": [ - 0, - 814 + 162, + 48 ] }, - "campsite": { + "cemetery": { "12": [ - 0, - 840 + 258, + 48 ], "18": [ - 0, - 854 + 240, + 48 ], "24": [ - 0, - 874 + 216, + 48 ] }, - "cemetery": { + "rocket": { "12": [ - 0, - 900 + 42, + 72 ], "18": [ - 0, - 914 + 24, + 72 ], "24": [ 0, - 934 + 72 ] }, - "cinema": { + "airport": { "12": [ - 0, - 960 + 96, + 72 ], "18": [ - 0, - 974 + 78, + 72 ], "24": [ - 0, - 994 + 54, + 72 ] }, - "circle": { + "heliport": { "12": [ - 0, - 1020 + 150, + 72 ], "18": [ - 0, - 1034 + 132, + 72 ], "24": [ - 0, - 1054 + 108, + 72 ] }, - "circle-stroked": { + "rail": { "12": [ - 0, - 1080 + 204, + 72 ], "18": [ - 0, - 1094 + 186, + 72 ], "24": [ - 0, - 1114 + 162, + 72 ] }, - "city": { + "rail-metro": { "12": [ - 0, - 1140 + 258, + 72 ], "18": [ - 0, - 1154 + 240, + 72 ], "24": [ - 0, - 1174 + 216, + 72 ] }, - "college": { + "rail-light": { "12": [ - 0, - 1200 + 42, + 96 ], "18": [ - 0, - 1214 + 24, + 96 ], "24": [ 0, - 1234 + 96 ] }, - "commercial": { + "bus": { "12": [ - 0, - 1260 + 96, + 96 ], "18": [ - 0, - 1274 + 78, + 96 ], "24": [ - 0, - 1294 + 54, + 96 ] }, - "cricket": { + "fuel": { "12": [ - 0, - 1320 + 150, + 96 ], "18": [ - 0, - 1334 + 132, + 96 ], "24": [ - 0, - 1354 + 108, + 96 ] }, - "cross": { + "parking": { "12": [ - 0, - 1380 + 204, + 96 ], "18": [ - 0, - 1394 + 186, + 96 ], "24": [ - 0, - 1414 + 162, + 96 ] }, - "dam": { + "parking-garage": { "12": [ - 0, - 1440 + 258, + 96 ], "18": [ - 0, - 1454 + 240, + 96 ], "24": [ - 0, - 1474 + 216, + 96 ] }, - "danger": { + "airfield": { "12": [ - 0, - 1500 + 42, + 120 ], "18": [ - 0, - 1514 + 24, + 120 ], "24": [ 0, - 1534 + 120 ] }, - "disability": { + "roadblock": { "12": [ - 0, - 1560 + 96, + 120 ], "18": [ - 0, - 1574 + 78, + 120 ], "24": [ - 0, - 1594 + 54, + 120 ] }, - "embassy": { + "ferry": { "12": [ - 0, - 1620 + 150, + 120 ], "18": [ - 0, - 1634 + 132, + 120 ], "24": [ - 0, - 1654 + 108, + 120 + ], + "line": [ + 2240, + 25 ] }, - "emergency-telephone": { + "harbor": { "12": [ - 0, - 1680 + 204, + 120 ], "18": [ - 0, - 1694 + 186, + 120 ], "24": [ - 0, - 1714 + 162, + 120 ] }, - "farm": { + "bicycle": { "12": [ - 0, - 1740 + 258, + 120 ], "18": [ - 0, - 1754 + 240, + 120 ], "24": [ - 0, - 1774 + 216, + 120 ] }, - "fast-food": { + "park": { "12": [ - 0, - 1800 + 42, + 144 ], "18": [ - 0, - 1814 + 24, + 144 ], "24": [ 0, - 1834 + 144 ] }, - "ferry": { + "park2": { "12": [ - 0, - 1860 + 96, + 144 ], "18": [ - 0, - 1874 + 78, + 144 ], "24": [ - 0, - 1894 + 54, + 144 + ] + }, + "museum": { + "12": [ + 150, + 144 ], - "line": [ - 2240, - 25 + "18": [ + 132, + 144 + ], + "24": [ + 108, + 144 ] }, - "fire-station": { + "lodging": { "12": [ - 0, - 1920 + 204, + 144 ], "18": [ - 0, - 1934 + 186, + 144 ], "24": [ - 0, - 1954 + 162, + 144 ] }, - "fuel": { + "monument": { "12": [ - 0, - 1980 + 258, + 144 ], "18": [ - 0, - 1994 + 240, + 144 + ], + "24": [ + 216, + 144 + ] + }, + "zoo": { + "12": [ + 42, + 168 + ], + "18": [ + 24, + 168 ], "24": [ 0, - 2014 + 168 ] }, "garden": { "12": [ - 0, - 2040 + 96, + 168 ], "18": [ - 0, - 2054 + 78, + 168 ], "24": [ - 0, - 2074 + 54, + 168 ] }, - "golf": { + "campsite": { "12": [ - 0, - 2100 + 150, + 168 ], "18": [ - 0, - 2114 + 132, + 168 ], "24": [ - 0, - 2134 + 108, + 168 ] }, - "grocery": { + "theatre": { "12": [ - 0, - 2160 + 204, + 168 ], "18": [ - 0, - 2174 + 186, + 168 ], "24": [ - 0, - 2194 + 162, + 168 ] }, - "harbor": { + "art-gallery": { "12": [ - 0, - 2220 + 258, + 168 ], "18": [ - 0, - 2234 + 240, + 168 ], "24": [ - 0, - 2254 + 216, + 168 ] }, - "heliport": { + "pitch": { "12": [ - 0, - 2280 + 42, + 192 ], "18": [ - 0, - 2294 + 24, + 192 ], "24": [ 0, - 2314 + 192 ] }, - "hospital": { + "soccer": { "12": [ - 0, - 2340 + 96, + 192 ], "18": [ - 0, - 2354 + 78, + 192 ], "24": [ - 0, - 2374 + 54, + 192 ] }, - "industrial": { + "america-football": { "12": [ - 0, - 2400 + 150, + 192 ], "18": [ - 0, - 2414 + 132, + 192 ], "24": [ - 0, - 2434 + 108, + 192 ] }, - "land-use": { + "tennis": { "12": [ - 0, - 2460 + 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, - 2474 + 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, - 2494 + 240 + ] + }, + "college": { + "12": [ + 96, + 240 + ], + "18": [ + 78, + 240 + ], + "24": [ + 54, + 240 ] }, "library": { "12": [ - 0, - 2520 + 150, + 240 ], "18": [ - 0, - 2534 + 132, + 240 ], "24": [ - 0, - 2554 + 108, + 240 ] }, - "lodging": { + "post": { "12": [ - 0, - 2580 + 204, + 240 ], "18": [ - 0, - 2594 + 186, + 240 ], "24": [ - 0, - 2614 + 162, + 240 ] }, - "logging": { + "fire-station": { "12": [ - 0, - 2640 + 258, + 240 ], "18": [ - 0, - 2654 + 240, + 240 ], "24": [ - 0, - 2674 + 216, + 240 ] }, - "marker": { + "town-hall": { "12": [ - 0, - 2700 + 42, + 264 ], "18": [ - 0, - 2714 + 24, + 264 ], "24": [ 0, - 2734 + 264 ] }, - "marker-stroked": { + "police": { "12": [ - 0, - 2760 + 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, - 2774 + 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": [ - 0, - 2794 + 162, + 288 ] }, - "monument": { + "bar": { "12": [ - 0, - 2820 + 258, + 288 ], "18": [ - 0, - 2834 + 240, + 288 ], "24": [ - 0, - 2854 + 216, + 288 ] }, - "museum": { + "bank": { "12": [ - 0, - 2880 + 42, + 312 ], "18": [ - 0, - 2894 + 24, + 312 ], "24": [ 0, - 2914 + 312 ] }, - "music": { + "grocery": { "12": [ - 0, - 2940 + 96, + 312 ], "18": [ - 0, - 2954 + 78, + 312 ], "24": [ - 0, - 2974 + 54, + 312 ] }, - "oil-well": { + "cinema": { "12": [ - 0, - 3000 + 150, + 312 ], "18": [ - 0, - 3014 + 132, + 312 ], "24": [ - 0, - 3034 + 108, + 312 ] }, - "park": { + "pharmacy": { "12": [ - 0, - 3060 + 204, + 312 ], "18": [ - 0, - 3074 + 186, + 312 ], "24": [ - 0, - 3094 + 162, + 312 ] }, - "park2": { + "hospital": { "12": [ - 0, - 3120 + 258, + 312 ], "18": [ - 0, - 3134 + 240, + 312 ], "24": [ - 0, - 3154 + 216, + 312 ] }, - "parking": { + "danger": { "12": [ - 0, - 3180 + 42, + 336 ], "18": [ - 0, - 3194 + 24, + 336 ], "24": [ 0, - 3214 + 336 ] }, - "parking-garage": { + "industrial": { "12": [ - 0, - 3240 + 96, + 336 ], "18": [ - 0, - 3254 + 78, + 336 ], "24": [ - 0, - 3274 + 54, + 336 ] }, - "pharmacy": { + "warehouse": { "12": [ - 0, - 3300 + 150, + 336 ], "18": [ - 0, - 3314 + 132, + 336 ], "24": [ - 0, - 3334 + 108, + 336 ] }, - "pitch": { + "commercial": { "12": [ - 0, - 3360 + 204, + 336 ], "18": [ - 0, - 3374 + 186, + 336 ], "24": [ - 0, - 3394 + 162, + 336 ] }, - "place-of-worship": { + "building": { "12": [ - 0, - 3420 + 258, + 336 ], "18": [ - 0, - 3434 + 240, + 336 ], "24": [ - 0, - 3454 + 216, + 336 ] }, - "police": { + "place-of-worship": { "12": [ - 0, - 3480 + 42, + 360 ], "18": [ - 0, - 3494 + 24, + 360 ], "24": [ 0, - 3514 + 360 ] }, - "post": { + "alcohol-shop": { "12": [ - 0, - 3540 + 96, + 360 ], "18": [ - 0, - 3554 + 78, + 360 ], "24": [ - 0, - 3574 + 54, + 360 ] }, - "prison": { + "logging": { "12": [ - 0, - 3600 + 150, + 360 ], "18": [ - 0, - 3614 + 132, + 360 ], "24": [ - 0, - 3634 + 108, + 360 ] }, - "rail": { + "oil-well": { "12": [ - 0, - 3660 + 204, + 360 ], "18": [ - 0, - 3674 + 186, + 360 ], "24": [ - 0, - 3694 + 162, + 360 ] }, - "rail-above": { + "slaughterhouse": { "12": [ - 0, - 3720 + 258, + 360 ], "18": [ - 0, - 3734 + 240, + 360 ], "24": [ - 0, - 3754 + 216, + 360 ] }, - "rail-underground": { + "dam": { "12": [ - 0, - 3780 + 42, + 384 ], "18": [ - 0, - 3794 + 24, + 384 ], "24": [ 0, - 3814 + 384 ] }, - "religious-christian": { + "water": { "12": [ - 0, - 3840 + 96, + 384 ], "18": [ - 0, - 3854 + 78, + 384 ], "24": [ - 0, - 3874 + 54, + 384 ] }, - "religious-jewish": { + "wetland": { "12": [ - 0, - 3900 + 150, + 384 ], "18": [ - 0, - 3914 + 132, + 384 ], "24": [ - 0, - 3934 + 108, + 384 ] }, - "religious-muslim": { + "disability": { "12": [ - 0, - 3960 + 204, + 384 ], "18": [ - 0, - 3974 + 186, + 384 ], "24": [ - 0, - 3994 + 162, + 384 ] }, - "restaurant": { + "telephone": { "12": [ - 0, - 4020 + 258, + 384 ], "18": [ - 0, - 4034 + 240, + 384 ], "24": [ - 0, - 4054 + 216, + 384 ] }, - "roadblock": { + "emergency-telephone": { "12": [ - 0, - 4080 + 42, + 408 ], "18": [ - 0, - 4094 + 24, + 408 ], "24": [ 0, - 4114 + 408 ] }, - "school": { + "toilets": { "12": [ - 0, - 4140 + 96, + 408 ], "18": [ - 0, - 4154 + 78, + 408 ], "24": [ - 0, - 4174 + 54, + 408 ] }, - "shop": { + "waste-basket": { "12": [ - 0, - 4200 + 150, + 408 ], "18": [ - 0, - 4214 + 132, + 408 ], "24": [ - 0, - 4234 + 108, + 408 ] }, - "skiing": { + "music": { "12": [ - 0, - 4260 + 204, + 408 ], "18": [ - 0, - 4274 + 186, + 408 ], "24": [ - 0, - 4294 + 162, + 408 ] }, - "slaughterhouse": { + "land-use": { "12": [ - 0, - 4320 + 258, + 408 ], "18": [ - 0, - 4334 + 240, + 408 ], "24": [ - 0, - 4354 + 216, + 408 ] }, - "soccer": { + "city": { "12": [ - 0, - 4380 + 42, + 432 ], "18": [ - 0, - 4394 + 24, + 432 ], "24": [ 0, - 4414 + 432 ] }, - "square": { + "town": { "12": [ - 0, - 4440 + 96, + 432 ], "18": [ - 0, - 4454 + 78, + 432 ], "24": [ - 0, - 4474 + 54, + 432 ] }, - "square-stroked": { + "village": { "12": [ - 0, - 4500 + 150, + 432 ], "18": [ - 0, - 4514 + 132, + 432 ], "24": [ - 0, - 4534 + 108, + 432 ] }, - "star": { + "farm": { "12": [ - 0, - 4560 + 204, + 432 ], "18": [ - 0, - 4574 + 186, + 432 ], "24": [ - 0, - 4594 + 162, + 432 ] }, - "star-stroked": { + "bakery": { "12": [ - 0, - 4620 + 258, + 432 ], "18": [ - 0, - 4634 + 240, + 432 ], "24": [ - 0, - 4654 + 216, + 432 ] }, - "swimming": { + "dog-park": { "12": [ - 0, - 4680 + 42, + 456 ], "18": [ - 0, - 4694 + 24, + 456 ], "24": [ 0, - 4714 + 456 ] }, - "telephone": { + "lighthouse": { "12": [ - 0, - 4740 + 96, + 456 ], "18": [ - 0, - 4754 + 78, + 456 ], "24": [ - 0, - 4774 + 54, + 456 ] }, - "tennis": { + "clothing-store": { "12": [ - 0, - 4800 + 150, + 456 ], "18": [ - 0, - 4814 + 132, + 456 ], "24": [ - 0, - 4834 + 108, + 456 ] }, - "theatre": { + "polling-place": { "12": [ - 0, - 4860 + 204, + 456 ], "18": [ - 0, - 4874 + 186, + 456 ], "24": [ - 0, - 4894 + 162, + 456 ] }, - "toilets": { + "playground": { "12": [ - 0, - 4920 + 258, + 456 ], "18": [ - 0, - 4934 + 240, + 456 ], "24": [ - 0, - 4954 + 216, + 456 ] }, - "town": { + "entrance": { "12": [ - 0, - 4980 + 42, + 480 ], "18": [ - 0, - 4994 + 24, + 480 ], "24": [ 0, - 5014 + 480 ] }, - "town-hall": { + "heart": { "12": [ - 0, - 5040 + 96, + 480 ], "18": [ - 0, - 5054 + 78, + 480 ], "24": [ - 0, - 5074 + 54, + 480 ] }, - "triangle": { + "london-underground": { "12": [ - 0, - 5100 + 150, + 480 ], "18": [ - 0, - 5114 + 132, + 480 ], "24": [ - 0, - 5134 + 108, + 480 ] }, - "triangle-stroked": { + "minefield": { "12": [ - 0, - 5160 + 204, + 480 ], "18": [ - 0, - 5174 + 186, + 480 ], "24": [ - 0, - 5194 + 162, + 480 ] }, - "village": { + "rail-underground": { "12": [ - 0, - 5220 + 258, + 480 ], "18": [ - 0, - 5234 + 240, + 480 ], "24": [ - 0, - 5254 + 216, + 480 ] }, - "warehouse": { + "rail-above": { "12": [ - 0, - 5280 + 42, + 504 ], "18": [ - 0, - 5294 + 24, + 504 ], "24": [ 0, - 5314 + 504 ] }, - "waste-basket": { + "camera": { "12": [ - 0, - 5340 + 96, + 504 ], "18": [ - 0, - 5354 + 78, + 504 ], "24": [ - 0, - 5374 + 54, + 504 ] }, - "water": { + "laundry": { "12": [ - 0, - 5400 + 150, + 504 ], "18": [ - 0, - 5414 + 132, + 504 ], "24": [ - 0, - 5434 + 108, + 504 ] }, - "wetland": { + "car": { "12": [ - 0, - 5460 + 204, + 504 ], "18": [ - 0, - 5474 + 186, + 504 ], "24": [ - 0, - 5494 + 162, + 504 ] }, - "zoo": { + "suitcase": { "12": [ - 0, - 5520 + 258, + 504 ], "18": [ - 0, - 5534 + 240, + 504 ], "24": [ - 0, - 5554 + 216, + 504 ] }, "highway-motorway": { @@ -72391,2403 +74851,7105 @@ iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081]," 25 ] }, - "waterway-ditch": { - "line": [ - 1820, - 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": [ + 140, + 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 + ] + } + }, + "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 + ] + }, + "locales": [ + "af", + "ar", + "ar-AA", + "ast", + "bn", + "bs", + "bg-BG", + "ca", + "zh", + "zh-CN", + "zh-CN.GB2312", + "zh-TW", + "yue", + "hr", + "cs", + "da", + "nl", + "en-GB", + "et", + "fi", + "fr", + "de", + "el", + "hu", + "is", + "id", + "it", + "ja", + "ko", + "lv", + "lt", + "no", + "nn", + "fa", + "pl", + "pt", + "pt-BR", + "ru", + "sc", + "sr", + "sr-RS", + "sk", + "sl", + "es", + "sv", + "te", + "tr", + "uk", + "vi" + ], + "en": { + "modes": { + "add_area": { + "title": "Area", + "description": "Add parks, buildings, lakes or other areas to the map.", + "tail": "Click on the map to start drawing an area, like a park, lake, or building." + }, + "add_line": { + "title": "Line", + "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.", + "tail": "Click on the map to start drawing a road, path, or route." + }, + "add_point": { + "title": "Point", + "description": "Add restaurants, monuments, postal boxes or other points to the map.", + "tail": "Click on the map to add a point." + }, + "browse": { + "title": "Browse", + "description": "Pan and zoom the map." + }, + "draw_area": { + "tail": "Click to add nodes to your area. Click the first node to finish the area." + }, + "draw_line": { + "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line." + } + }, + "operations": { + "add": { + "annotation": { + "point": "Added a point.", + "vertex": "Added a node to a way.", + "relation": "Added a relation." + } + }, + "start": { + "annotation": { + "line": "Started a line.", + "area": "Started an area." + } + }, + "continue": { + "key": "A", + "title": "Continue", + "description": "Continue this line.", + "not_eligible": "No line can be continued here.", + "multiple": "Several lines can be continued here. To choose a line, press the Shift key and click on it to select it.", + "annotation": { + "line": "Continued a line.", + "area": "Continued an area." + } + }, + "cancel_draw": { + "annotation": "Canceled drawing." + }, + "change_role": { + "annotation": "Changed the role of a relation member." + }, + "change_tags": { + "annotation": "Changed tags." + }, + "circularize": { + "title": "Circularize", + "description": { + "line": "Make this line circular.", + "area": "Make this area circular." + }, + "key": "O", + "annotation": { + "line": "Made a line circular.", + "area": "Made an area circular." + }, + "not_closed": "This can't be made circular because it's not a loop." + }, + "orthogonalize": { + "title": "Square", + "description": { + "line": "Square the corners of this line.", + "area": "Square the corners of this area." + }, + "key": "S", + "annotation": { + "line": "Squared the corners of a line.", + "area": "Squared the corners of an area." + }, + "not_squarish": "This can't be made square because it is not squarish." + }, + "straighten": { + "title": "Straighten", + "description": "Straighten this line.", + "key": "S", + "annotation": "Straightened a line.", + "too_bendy": "This can't be straightened because it bends too much." + }, + "delete": { + "title": "Delete", + "description": "Remove this from the map.", + "annotation": { + "point": "Deleted a point.", + "vertex": "Deleted a node from a way.", + "line": "Deleted a line.", + "area": "Deleted an area.", + "relation": "Deleted a relation.", + "multiple": "Deleted {n} objects." + }, + "incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded." + }, + "add_member": { + "annotation": "Added a member to a relation." + }, + "delete_member": { + "annotation": "Removed a member from a relation." + }, + "connect": { + "annotation": { + "point": "Connected a way to a point.", + "vertex": "Connected a way to another.", + "line": "Connected a way to a line.", + "area": "Connected a way to an area." + } + }, + "disconnect": { + "title": "Disconnect", + "description": "Disconnect these lines/areas from each other.", + "key": "D", + "annotation": "Disconnected lines/areas.", + "not_connected": "There aren't enough lines/areas here to disconnect." + }, + "merge": { + "title": "Merge", + "description": "Merge these lines.", + "key": "C", + "annotation": "Merged {n} lines.", + "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." + }, + "move": { + "title": "Move", + "description": "Move this to a different location.", + "key": "M", + "annotation": { + "point": "Moved a point.", + "vertex": "Moved a node in a way.", + "line": "Moved a line.", + "area": "Moved an area.", + "multiple": "Moved multiple objects." + }, + "incomplete_relation": "This feature can't be moved because it hasn't been fully downloaded." + }, + "rotate": { + "title": "Rotate", + "description": "Rotate this object around its center point.", + "key": "R", + "annotation": { + "line": "Rotated a line.", + "area": "Rotated an area." + } + }, + "reverse": { + "title": "Reverse", + "description": "Make this line go in the opposite direction.", + "key": "V", + "annotation": "Reversed a line." + }, + "split": { + "title": "Split", + "description": { + "line": "Split this line into two at this node.", + "area": "Split the boundary of this area into two.", + "multiple": "Split the lines/area boundaries at this node into two." + }, + "key": "X", + "annotation": { + "line": "Split a line.", + "area": "Split an area boundary.", + "multiple": "Split {n} lines/area boundaries." + }, + "not_eligible": "Lines can't be split at their beginning or end.", + "multiple_ways": "There are too many lines here to split." + } }, - "power-line": { - "line": [ - 1880, - 25 - ] + "undo": { + "tooltip": "Undo: {action}", + "nothing": "Nothing to undo." }, - "other-line": { - "line": [ - 1940, - 25 - ] + "redo": { + "tooltip": "Redo: {action}", + "nothing": "Nothing to redo." }, - "category-roads": { - "line": [ - 2000, - 25 - ] + "tooltip_keyhint": "Shortcut:", + "browser_notice": "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.", + "translate": { + "translate": "Translate", + "localized_translation_label": "Multilingual name", + "localized_translation_language": "Choose language", + "localized_translation_name": "Name" }, - "category-rail": { - "line": [ - 2060, - 25 - ] + "zoom_in_edit": "Zoom in to Edit", + "logout": "logout", + "loading_auth": "Connecting to OpenStreetMap...", + "report_a_bug": "report a bug", + "status": { + "error": "Unable to connect to API.", + "offline": "The API is offline. Please try editing later.", + "readonly": "The API is read-only. You will need to wait to save your changes." }, - "category-path": { - "line": [ - 2120, - 25 - ] + "commit": { + "title": "Save Changes", + "description_placeholder": "Brief description of your contributions", + "message_label": "Commit message", + "upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.", + "upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.", + "save": "Save", + "cancel": "Cancel", + "warnings": "Warnings", + "modified": "Modified", + "deleted": "Deleted", + "created": "Created" }, - "category-water": { - "line": [ - 2180, - 25 - ] + "contributors": { + "list": "Edits by {users}", + "truncated_list": "Edits by {users} and {count} others" }, - "pipeline": { - "line": [ - 2300, - 25 - ] + "geocoder": { + "search": "Search worldwide...", + "no_results_visible": "No results in visible map area", + "no_results_worldwide": "No results found" }, - "relation": { - "relation": [ - 20, - 25 - ] + "geolocate": { + "title": "Show My Location" }, - "restriction": { - "relation": [ - 80, - 25 - ] + "inspector": { + "no_documentation_combination": "There is no documentation available for this tag combination", + "no_documentation_key": "There is no documentation available for this key", + "show_more": "Show More", + "view_on_osm": "View on openstreetmap.org", + "all_tags": "All tags", + "all_members": "All members", + "all_relations": "All relations", + "new_relation": "New relation...", + "role": "Role", + "choose": "Select feature type", + "results": "{n} results for {search}", + "reference": "View on OpenStreetMap Wiki", + "back_tooltip": "Change feature", + "remove": "Remove", + "search": "Search", + "multiselect": "Selected items", + "unknown": "Unknown", + "incomplete": "