diff --git a/coverage/base.css b/coverage/base.css deleted file mode 100644 index f418035..0000000 --- a/coverage/base.css +++ /dev/null @@ -1,224 +0,0 @@ -body, html { - margin:0; padding: 0; - height: 100%; -} -body { - font-family: Helvetica Neue, Helvetica, Arial; - font-size: 14px; - color:#333; -} -.small { font-size: 12px; } -*, *:after, *:before { - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - } -h1 { font-size: 20px; margin: 0;} -h2 { font-size: 14px; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/block-navigation.js b/coverage/block-navigation.js deleted file mode 100644 index c7ff5a5..0000000 --- a/coverage/block-navigation.js +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selecter that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index 21e1c77..0000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,2 +0,0 @@ -{"/Users/jeffreyericson/Documents/Code/polyline/src/polyline.js": {"path":"/Users/jeffreyericson/Documents/Code/polyline/src/polyline.js","statementMap":{"0":{"start":{"line":12,"column":15},"end":{"line":12,"column":17}},"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":69}},"2":{"start":{"line":20,"column":4},"end":{"line":20,"column":42}},"3":{"start":{"line":21,"column":4},"end":{"line":21,"column":44}},"4":{"start":{"line":22,"column":21},"end":{"line":22,"column":39}},"5":{"start":{"line":23,"column":4},"end":{"line":23,"column":21}},"6":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"7":{"start":{"line":25,"column":8},"end":{"line":25,"column":33}},"8":{"start":{"line":27,"column":17},"end":{"line":27,"column":19}},"9":{"start":{"line":28,"column":4},"end":{"line":31,"column":5}},"10":{"start":{"line":29,"column":8},"end":{"line":29,"column":73}},"11":{"start":{"line":30,"column":8},"end":{"line":30,"column":25}},"12":{"start":{"line":32,"column":4},"end":{"line":32,"column":51}},"13":{"start":{"line":33,"column":4},"end":{"line":33,"column":18}},"14":{"start":{"line":47,"column":0},"end":{"line":94,"column":2}},"15":{"start":{"line":48,"column":16},"end":{"line":48,"column":17}},"16":{"start":{"line":49,"column":14},"end":{"line":49,"column":15}},"17":{"start":{"line":50,"column":14},"end":{"line":50,"column":15}},"18":{"start":{"line":51,"column":22},"end":{"line":51,"column":24}},"19":{"start":{"line":52,"column":16},"end":{"line":52,"column":17}},"20":{"start":{"line":53,"column":17},"end":{"line":53,"column":18}},"21":{"start":{"line":54,"column":15},"end":{"line":54,"column":19}},"22":{"start":{"line":57,"column":17},"end":{"line":57,"column":74}},"23":{"start":{"line":62,"column":4},"end":{"line":91,"column":5}},"24":{"start":{"line":65,"column":8},"end":{"line":65,"column":20}},"25":{"start":{"line":66,"column":8},"end":{"line":66,"column":18}},"26":{"start":{"line":67,"column":8},"end":{"line":67,"column":19}},"27":{"start":{"line":69,"column":8},"end":{"line":73,"column":31}},"28":{"start":{"line":70,"column":12},"end":{"line":70,"column":48}},"29":{"start":{"line":71,"column":12},"end":{"line":71,"column":45}},"30":{"start":{"line":72,"column":12},"end":{"line":72,"column":23}},"31":{"start":{"line":75,"column":8},"end":{"line":75,"column":74}},"32":{"start":{"line":77,"column":8},"end":{"line":77,"column":27}},"33":{"start":{"line":79,"column":8},"end":{"line":83,"column":31}},"34":{"start":{"line":80,"column":12},"end":{"line":80,"column":48}},"35":{"start":{"line":81,"column":12},"end":{"line":81,"column":45}},"36":{"start":{"line":82,"column":12},"end":{"line":82,"column":23}},"37":{"start":{"line":85,"column":8},"end":{"line":85,"column":75}},"38":{"start":{"line":87,"column":8},"end":{"line":87,"column":31}},"39":{"start":{"line":88,"column":8},"end":{"line":88,"column":32}},"40":{"start":{"line":90,"column":8},"end":{"line":90,"column":55}},"41":{"start":{"line":93,"column":4},"end":{"line":93,"column":23}},"42":{"start":{"line":103,"column":0},"end":{"line":116,"column":2}},"43":{"start":{"line":104,"column":4},"end":{"line":104,"column":43}},"44":{"start":{"line":104,"column":31},"end":{"line":104,"column":41}},"45":{"start":{"line":106,"column":17},"end":{"line":106,"column":74}},"46":{"start":{"line":107,"column":17},"end":{"line":107,"column":92}},"47":{"start":{"line":109,"column":4},"end":{"line":113,"column":5}},"48":{"start":{"line":109,"column":17},"end":{"line":109,"column":18}},"49":{"start":{"line":110,"column":16},"end":{"line":110,"column":30}},"50":{"start":{"line":110,"column":36},"end":{"line":110,"column":54}},"51":{"start":{"line":111,"column":8},"end":{"line":111,"column":45}},"52":{"start":{"line":112,"column":8},"end":{"line":112,"column":45}},"53":{"start":{"line":115,"column":4},"end":{"line":115,"column":18}},"54":{"start":{"line":119,"column":18},"end":{"line":119,"column":20}},"55":{"start":{"line":120,"column":4},"end":{"line":123,"column":5}},"56":{"start":{"line":120,"column":17},"end":{"line":120,"column":18}},"57":{"start":{"line":121,"column":20},"end":{"line":121,"column":37}},"58":{"start":{"line":122,"column":8},"end":{"line":122,"column":43}},"59":{"start":{"line":124,"column":4},"end":{"line":124,"column":19}},"60":{"start":{"line":134,"column":0},"end":{"line":142,"column":2}},"61":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"62":{"start":{"line":136,"column":8},"end":{"line":136,"column":35}},"63":{"start":{"line":138,"column":4},"end":{"line":140,"column":5}},"64":{"start":{"line":139,"column":8},"end":{"line":139,"column":62}},"65":{"start":{"line":141,"column":4},"end":{"line":141,"column":68}},"66":{"start":{"line":151,"column":0},"end":{"line":157,"column":2}},"67":{"start":{"line":152,"column":17},"end":{"line":152,"column":48}},"68":{"start":{"line":153,"column":4},"end":{"line":156,"column":6}},"69":{"start":{"line":159,"column":0},"end":{"line":161,"column":1}},"70":{"start":{"line":160,"column":4},"end":{"line":160,"column":30}}},"fnMap":{"0":{"name":"py2_round","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":18}},"loc":{"start":{"line":14,"column":26},"end":{"line":17,"column":1}},"line":14},"1":{"name":"encode","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":15}},"loc":{"start":{"line":19,"column":43},"end":{"line":34,"column":1}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":47,"column":18},"end":{"line":47,"column":19}},"loc":{"start":{"line":47,"column":43},"end":{"line":94,"column":1}},"line":47},"3":{"name":"(anonymous_3)","decl":{"start":{"line":103,"column":18},"end":{"line":103,"column":19}},"loc":{"start":{"line":103,"column":51},"end":{"line":116,"column":1}},"line":103},"4":{"name":"flipped","decl":{"start":{"line":118,"column":9},"end":{"line":118,"column":16}},"loc":{"start":{"line":118,"column":25},"end":{"line":125,"column":1}},"line":118},"5":{"name":"(anonymous_5)","decl":{"start":{"line":134,"column":23},"end":{"line":134,"column":24}},"loc":{"start":{"line":134,"column":52},"end":{"line":142,"column":1}},"line":134},"6":{"name":"(anonymous_6)","decl":{"start":{"line":151,"column":21},"end":{"line":151,"column":22}},"loc":{"start":{"line":151,"column":46},"end":{"line":157,"column":1}},"line":151}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":48},"end":{"line":16,"column":67}},"type":"cond-expr","locations":[{"start":{"line":16,"column":61},"end":{"line":16,"column":62}},{"start":{"line":16,"column":65},"end":{"line":16,"column":67}}],"line":16},"1":{"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}],"line":24},"2":{"loc":{"start":{"line":57,"column":30},"end":{"line":57,"column":73}},"type":"cond-expr","locations":[{"start":{"line":57,"column":60},"end":{"line":57,"column":69}},{"start":{"line":57,"column":72},"end":{"line":57,"column":73}}],"line":57},"3":{"loc":{"start":{"line":75,"column":27},"end":{"line":75,"column":72}},"type":"cond-expr","locations":[{"start":{"line":75,"column":42},"end":{"line":75,"column":56}},{"start":{"line":75,"column":60},"end":{"line":75,"column":71}}],"line":75},"4":{"loc":{"start":{"line":85,"column":28},"end":{"line":85,"column":73}},"type":"cond-expr","locations":[{"start":{"line":85,"column":43},"end":{"line":85,"column":57}},{"start":{"line":85,"column":61},"end":{"line":85,"column":72}}],"line":85},"5":{"loc":{"start":{"line":104,"column":4},"end":{"line":104,"column":43}},"type":"if","locations":[{"start":{"line":104,"column":4},"end":{"line":104,"column":43}},{"start":{"line":104,"column":4},"end":{"line":104,"column":43}}],"line":104},"6":{"loc":{"start":{"line":106,"column":30},"end":{"line":106,"column":73}},"type":"cond-expr","locations":[{"start":{"line":106,"column":60},"end":{"line":106,"column":69}},{"start":{"line":106,"column":72},"end":{"line":106,"column":73}}],"line":106},"7":{"loc":{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},"type":"if","locations":[{"start":{"line":135,"column":4},"end":{"line":137,"column":5}},{"start":{"line":135,"column":4},"end":{"line":137,"column":5}}],"line":135},"8":{"loc":{"start":{"line":135,"column":8},"end":{"line":135,"column":45}},"type":"binary-expr","locations":[{"start":{"line":135,"column":8},"end":{"line":135,"column":15}},{"start":{"line":135,"column":19},"end":{"line":135,"column":45}}],"line":135},"9":{"loc":{"start":{"line":138,"column":4},"end":{"line":140,"column":5}},"type":"if","locations":[{"start":{"line":138,"column":4},"end":{"line":140,"column":5}},{"start":{"line":138,"column":4},"end":{"line":140,"column":5}}],"line":138},"10":{"loc":{"start":{"line":138,"column":8},"end":{"line":138,"column":49}},"type":"binary-expr","locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":16}},{"start":{"line":138,"column":20},"end":{"line":138,"column":49}}],"line":138},"11":{"loc":{"start":{"line":159,"column":0},"end":{"line":161,"column":1}},"type":"if","locations":[{"start":{"line":159,"column":0},"end":{"line":161,"column":1}},{"start":{"line":159,"column":0},"end":{"line":161,"column":1}}],"line":159},"12":{"loc":{"start":{"line":159,"column":4},"end":{"line":159,"column":48}},"type":"binary-expr","locations":[{"start":{"line":159,"column":4},"end":{"line":159,"column":30}},{"start":{"line":159,"column":34},"end":{"line":159,"column":48}}],"line":159}},"s":{"0":1,"1":120,"2":60,"3":60,"4":60,"5":60,"6":60,"7":28,"8":60,"9":60,"10":138,"11":138,"12":60,"13":60,"14":1,"15":8,"16":8,"17":8,"18":8,"19":8,"20":8,"21":8,"22":8,"23":8,"24":19,"25":19,"26":19,"27":19,"28":61,"29":61,"30":61,"31":19,"32":19,"33":19,"34":63,"35":63,"36":63,"37":19,"38":19,"39":19,"40":19,"41":8,"42":1,"43":12,"44":1,"45":11,"46":11,"47":11,"48":11,"49":19,"50":19,"51":19,"52":19,"53":11,"54":3,"55":3,"56":3,"57":9,"58":9,"59":3,"60":1,"61":3,"62":1,"63":3,"64":1,"65":2,"66":1,"67":1,"68":1,"69":1,"70":1},"f":{"0":120,"1":60,"2":8,"3":12,"4":3,"5":3,"6":1},"b":{"0":[74,46],"1":[28,32],"2":[3,5],"3":[3,16],"4":[16,3],"5":[1,11],"6":[3,8],"7":[1,2],"8":[3,3],"9":[1,2],"10":[3,3],"11":[1,0],"12":[1,1]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f3f0b5b87fc816530a8c8de440b11fb86d726361","contentHash":"f86c6e07053d732c99ccef8fef3e1c64143c2574c250216597a7f4554ff32af0"} -} diff --git a/coverage/favicon.png b/coverage/favicon.png deleted file mode 100644 index 6691817..0000000 Binary files a/coverage/favicon.png and /dev/null differ diff --git a/coverage/index.html b/coverage/index.html deleted file mode 100644 index af4fbb0..0000000 --- a/coverage/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -
-- Press n or j to go to the next uncovered block, b, p or k for the previous block. -
-File | -- | Statements | -- | Branches | -- | Functions | -- | Lines | -- |
---|---|---|---|---|---|---|---|---|---|
polyline.js | -
-
- |
- 100% | -71/71 | -96.15% | -25/26 | -100% | -7/7 | -100% | -67/67 | -
- Press n or j to go to the next uncovered block, b, p or k for the previous block. -
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -100 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160 -161 -162 | - - - - - - - - - - -1x - - - -120x - - - -60x -60x -60x -60x -60x -28x - -60x -60x -138x -138x - -60x -60x - - - - - - - - - - - - - -1x -8x -8x -8x -8x -8x -8x -8x - - -8x - - - - -8x - - -19x -19x -19x - -19x -61x -61x -61x - - -19x - -19x - -19x -63x -63x -63x - - -19x - -19x -19x - -19x - - -8x - - - - - - - - - -1x -12x - -11x -11x - -11x -19x -19x -19x - - -11x - - - -3x -3x -9x -9x - -3x - - - - - - - - - -1x -3x -1x - -3x -1x - -2x - - - - - - - - - -1x -1x -1x - - - - - -1x -1x - - | 'use strict';
-
-/**
- * Based off of [the offical Google document](https://developers.google.com/maps/documentation/utilities/polylinealgorithm)
- *
- * Some parts from [this implementation](http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/PolylineEncoder.js)
- * by [Mark McClure](http://facstaff.unca.edu/mcmcclur/)
- *
- * @module polyline
- */
-
-var polyline = {};
-
-function py2_round(value) {
- // Google's polyline algorithm uses the same rounding strategy as Python 2, which is different from JS for negative values
- return Math.floor(Math.abs(value) + 0.5) * (value >= 0 ? 1 : -1);
-}
-
-function encode(current, previous, factor) {
- current = py2_round(current * factor);
- previous = py2_round(previous * factor);
- var coordinate = current - previous;
- coordinate <<= 1;
- if (current - previous < 0) {
- coordinate = ~coordinate;
- }
- var output = '';
- while (coordinate >= 0x20) {
- output += String.fromCharCode((0x20 | (coordinate & 0x1f)) + 63);
- coordinate >>= 5;
- }
- output += String.fromCharCode(coordinate + 63);
- return output;
-}
-
-/**
- * Decodes to a [latitude, longitude] coordinates array.
- *
- * This is adapted from the implementation in Project-OSRM.
- *
- * @param {String} str
- * @param {Number} precision
- * @returns {Array}
- *
- * @see https://github.com/Project-OSRM/osrm-frontend/blob/master/WebContent/routing/OSRM.RoutingGeometry.js
- */
-polyline.decode = function(str, precision) {
- var index = 0,
- lat = 0,
- lng = 0,
- coordinates = [],
- shift = 0,
- result = 0,
- byte = null,
- latitude_change,
- longitude_change,
- factor = Math.pow(10, Number.isInteger(precision) ? precision : 5);
-
- // Coordinates have variable length when encoded, so just keep
- // track of whether we've hit the end of the string. In each
- // loop iteration, a single coordinate is decoded.
- while (index < str.length) {
-
- // Reset shift, result, and byte
- byte = null;
- shift = 0;
- result = 0;
-
- do {
- byte = str.charCodeAt(index++) - 63;
- result |= (byte & 0x1f) << shift;
- shift += 5;
- } while (byte >= 0x20);
-
- latitude_change = ((result & 1) ? ~(result >> 1) : (result >> 1));
-
- shift = result = 0;
-
- do {
- byte = str.charCodeAt(index++) - 63;
- result |= (byte & 0x1f) << shift;
- shift += 5;
- } while (byte >= 0x20);
-
- longitude_change = ((result & 1) ? ~(result >> 1) : (result >> 1));
-
- lat += latitude_change;
- lng += longitude_change;
-
- coordinates.push([lat / factor, lng / factor]);
- }
-
- return coordinates;
-};
-
-/**
- * Encodes the given [latitude, longitude] coordinates array.
- *
- * @param {Array.<Array.<Number>>} coordinates
- * @param {Number} precision
- * @returns {String}
- */
-polyline.encode = function(coordinates, precision) {
- if (!coordinates.length) { return ''; }
-
- var factor = Math.pow(10, Number.isInteger(precision) ? precision : 5),
- output = encode(coordinates[0][0], 0, factor) + encode(coordinates[0][1], 0, factor);
-
- for (var i = 1; i < coordinates.length; i++) {
- var a = coordinates[i], b = coordinates[i - 1];
- output += encode(a[0], b[0], factor);
- output += encode(a[1], b[1], factor);
- }
-
- return output;
-};
-
-function flipped(coords) {
- var flipped = [];
- for (var i = 0; i < coords.length; i++) {
- var coord = coords[i].slice();
- flipped.push([coord[1], coord[0]]);
- }
- return flipped;
-}
-
-/**
- * Encodes a GeoJSON LineString feature/geometry.
- *
- * @param {Object} geojson
- * @param {Number} precision
- * @returns {String}
- */
-polyline.fromGeoJSON = function(geojson, precision) {
- if (geojson && geojson.type === 'Feature') {
- geojson = geojson.geometry;
- }
- if (!geojson || geojson.type !== 'LineString') {
- throw new Error('Input must be a GeoJSON LineString');
- }
- return polyline.encode(flipped(geojson.coordinates), precision);
-};
-
-/**
- * Decodes to a GeoJSON LineString geometry.
- *
- * @param {String} str
- * @param {Number} precision
- * @returns {Object}
- */
-polyline.toGeoJSON = function(str, precision) {
- var coords = polyline.decode(str, precision);
- return {
- type: 'LineString',
- coordinates: flipped(coords)
- };
-};
-
-Eif (typeof module === 'object' && module.exports) {
- module.exports = polyline;
-}
- |