Skip to content

Instantly share code, notes, and snippets.

@jrstarke
Created July 22, 2012 20:42
Show Gist options
  • Save jrstarke/3161013 to your computer and use it in GitHub Desktop.
Save jrstarke/3161013 to your computer and use it in GitHub Desktop.
Clustering of Bus Stops. For Breeze (https://github.com/lgrammel/breeze)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Bus stops on UVic Bus Lines, Victoria, BC</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/d3/2.8.1/d3.v2.min.js"></script>
<script type="text/javascript" src="https://raw.github.com/simplegeo/polymaps/v2.5.0/polymaps.min.js"></script>
<script type="text/javascript" src="jquery.qtip.min.js" ></script>
<link rel="stylesheet" type="text/css" href="jquery.qtip.min.css">
<link rel="stylesheet" type="text/css" href="victoria-transit.css">
<script type="text/coffeescript" src="victoria-transit.coffee"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/coffee-script/1.3.1/coffee-script.min.js"></script>
<body>
<div id="map" class="regular"></div>
</body>
</html>
.ui-tooltip,.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;}.ui-tooltip-fluid{display:block;visibility:hidden;position:static!important;float:left!important;}.ui-tooltip-content{position:relative;padding:5px 9px;overflow:hidden;border:1px solid #000001;text-align:left;word-wrap:break-word;overflow:hidden;}.ui-tooltip-titlebar{position:relative;min-height:14px;padding:5px 35px 5px 10px;overflow:hidden;border:1px solid #000001;border-width:1px 1px 0;font-weight:bold;}.ui-tooltip-titlebar+.ui-tooltip-content{border-top-width:0!important;}/*!Default close button class */ .ui-tooltip-titlebar .ui-state-default{position:absolute;right:4px;top:50%;margin-top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;}* html .ui-tooltip-titlebar .ui-state-default{top:16px;}.ui-tooltip-titlebar .ui-icon,.ui-tooltip-icon .ui-icon{display:block;text-indent:-1000em;}.ui-tooltip-icon,.ui-tooltip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.ui-tooltip-icon .ui-icon{width:18px;height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em;}/*!Default tooltip style */ .ui-tooltip-default .ui-tooltip-titlebar,.ui-tooltip-default .ui-tooltip-content{border-color:#F1D031;background-color:#FFFFA3;color:#555;}.ui-tooltip-default .ui-tooltip-titlebar{background-color:#FFEF93;}.ui-tooltip-default .ui-tooltip-icon{border-color:#CCC;background:#F1F1F1;color:#777;}.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{border-color:#AAA;color:#111;}#qtip-overlay{position:fixed;left:-10000em;top:-10000em;}#qtip-overlay.blurs{cursor:pointer;}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";}.ui-tooltip .ui-tooltip-tip{margin:0 auto;overflow:hidden;z-index:10;}.ui-tooltip .ui-tooltip-tip,.ui-tooltip .ui-tooltip-tip *{position:absolute;line-height:.1px!important;font-size:.1px!important;color:#123456;background:transparent;border:0 dashed transparent;}.ui-tooltip .ui-tooltip-tip canvas{top:0;left:0;}/*!Light tooltip style */ .ui-tooltip-light .ui-tooltip-titlebar,.ui-tooltip-light .ui-tooltip-content{border-color:#E2E2E2;color:#454545;}.ui-tooltip-light .ui-tooltip-content{background-color:white;}.ui-tooltip-light .ui-tooltip-titlebar{background-color:#f1f1f1;}/*!Dark tooltip style */ .ui-tooltip-dark .ui-tooltip-titlebar,.ui-tooltip-dark .ui-tooltip-content{border-color:#303030;color:#f3f3f3;}.ui-tooltip-dark .ui-tooltip-content{background-color:#505050;}.ui-tooltip-dark .ui-tooltip-titlebar{background-color:#404040;}.ui-tooltip-dark .ui-tooltip-icon{border-color:#444;}.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}/*!Cream tooltip style */ .ui-tooltip-cream .ui-tooltip-titlebar,.ui-tooltip-cream .ui-tooltip-content{border-color:#F9E98E;color:#A27D35;}.ui-tooltip-cream .ui-tooltip-content{background-color:#FBF7AA;}.ui-tooltip-cream .ui-tooltip-titlebar{background-color:#F0DE7D;}.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{background-position:-82px 0;}/*!Red tooltip style */ .ui-tooltip-red .ui-tooltip-titlebar,.ui-tooltip-red .ui-tooltip-content{border-color:#D95252;color:#912323;}.ui-tooltip-red .ui-tooltip-content{background-color:#F78B83;}.ui-tooltip-red .ui-tooltip-titlebar{background-color:#F06D65;}.ui-tooltip-red .ui-state-default .ui-tooltip-icon{background-position:-102px 0;}.ui-tooltip-red .ui-tooltip-icon{border-color:#D95252;}.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{border-color:#D95252;}/*!Green tooltip style */ .ui-tooltip-green .ui-tooltip-titlebar,.ui-tooltip-green .ui-tooltip-content{border-color:#90D93F;color:#3F6219;}.ui-tooltip-green .ui-tooltip-content{background-color:#CAED9E;}.ui-tooltip-green .ui-tooltip-titlebar{background-color:#B0DE78;}.ui-tooltip-green .ui-state-default .ui-tooltip-icon{background-position:-42px 0;}/*!Blue tooltip style */ .ui-tooltip-blue .ui-tooltip-titlebar,.ui-tooltip-blue .ui-tooltip-content{border-color:#ADD9ED;color:#5E99BD;}.ui-tooltip-blue .ui-tooltip-content{background-color:#E5F6FE;}.ui-tooltip-blue .ui-tooltip-titlebar{background-color:#D0E9F5;}.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{background-position:-2px 0;}/*!Add shadows to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE6+,Safari 2+*/ .ui-tooltip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);}.ui-tooltip-shadow .ui-tooltip-titlebar,.ui-tooltip-shadow .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3);-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3)";_margin-bottom:-3px;.margin-bottom:-3px;}/*!Add rounded corners to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE9+,Safari 2+*/ .ui-tooltip-rounded,.ui-tooltip-rounded .ui-tooltip-content,.ui-tooltip-tipsy,.ui-tooltip-tipsy .ui-tooltip-content,.ui-tooltip-youtube,.ui-tooltip-youtube .ui-tooltip-content{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}.ui-tooltip-rounded .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-titlebar{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.ui-tooltip-rounded .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-tipsy .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-youtube .ui-tooltip-titlebar+.ui-tooltip-content{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}/*!Youtube tooltip style */ .ui-tooltip-youtube{-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;}.ui-tooltip-youtube .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,0.85);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border-color:#CCC;}.ui-tooltip-youtube .ui-tooltip-icon{border-color:#222;}.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333;}.ui-tooltip-jtools .ui-tooltip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";}.ui-tooltip-jtools .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";}.ui-tooltip-jtools .ui-tooltip-titlebar,.ui-tooltip-jtools .ui-tooltip-content{background:transparent;color:white;border:0 dashed transparent;}.ui-tooltip-jtools .ui-tooltip-icon{border-color:#555;}.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{border-color:#333;}.ui-tooltip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);}.ui-tooltip-cluetip .ui-tooltip-titlebar{background-color:#87876A;color:white;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-content{background-color:#D9D9C2;color:#111;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-icon{border-color:#808064;}.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{border-color:#696952;color:#696952;}.ui-tooltip-tipsy{border:0;}.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,.87);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border:0 transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black;}.ui-tooltip-tipsy .ui-tooltip-titlebar{padding:6px 35px 0 10;}.ui-tooltip-tipsy .ui-tooltip-content{padding:6px 10;}.ui-tooltip-tipsy .ui-tooltip-icon{border-color:#222;text-shadow:none;}.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-tipped .ui-tooltip-titlebar,.ui-tooltip-tipped .ui-tooltip-content{border:3px solid #959FA9;filter:none;-ms-filter:none;}.ui-tooltip-tipped .ui-tooltip-titlebar{background:#3A79B8;background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";color:white;font-weight:normal;font-family:serif;border-bottom-width:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}.ui-tooltip-tipped .ui-tooltip-content{background-color:#F9F9F9;color:#454545;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.ui-tooltip-tipped .ui-tooltip-icon{border:2px solid #285589;background:#285589;}.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{background-color:#FBFBFB;color:#555;}.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{filter:none;-ms-filter:none;}
/*
* qTip2 - Pretty powerful tooltips
* http://craigsworks.com/projects/qtip2/
*
* Version: 2.0.0pre
* Copyright 2009-2010 Craig Michael Thompson - http://craigsworks.com
*
* Dual licensed under MIT or GPLv2 licenses
* http://en.wikipedia.org/wiki/MIT_License
* http://en.wikipedia.org/wiki/GNU_General_Public_License
*
* Date: Sat Mar 3 17:00:08 2012 +0000
*//*jslint browser: true, onevar: true, undef: true, nomen: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: true *//*global window: false, jQuery: false, console: false, define: false */(function(a){typeof define==="function"&&define.amd?define(["jquery"],a):a(jQuery)})(function(a){function D(f,h){function w(a){var b=a.precedance==="y",c=n[b?"width":"height"],d=n[b?"height":"width"],e=a.string().indexOf("center")>-1,f=c*(e?.5:1),g=Math.pow,h=Math.round,i,j,k,l=Math.sqrt(g(f,2)+g(d,2)),m=[p/f*l,p/d*l];m[2]=Math.sqrt(g(m[0],2)-g(p,2)),m[3]=Math.sqrt(g(m[1],2)-g(p,2)),i=l+m[2]+m[3]+(e?0:m[0]),j=i/l,k=[h(j*d),h(j*c)];return{height:k[b?0:1],width:k[b?1:0]}}function v(b){var c=k.titlebar&&b.y==="top",d=c?k.titlebar:k.content,e=a.browser.mozilla,f=e?"-moz-":a.browser.webkit?"-webkit-":"",g=b.y+(e?"":"-")+b.x,h=f+(e?"border-radius-"+g:"border-"+g+"-radius");return parseInt(d.css(h),10)||parseInt(l.css(h),10)||0}function u(a,b,c){b=b?b:a[a.precedance];var d=l.hasClass(q),e=k.titlebar&&a.y==="top",f=e?k.titlebar:k.content,g="border-"+b+"-width",h;l.addClass(q),h=parseInt(f.css(g),10),h=(c?h||parseInt(l.css(g),10):h)||0,l.toggleClass(q,d);return h}function t(a,d,g,h){if(k.tip){var l=i.corner.clone(),n=g.adjusted,o=f.options.position.adjust.method.split(" "),p=o[0],q=o[1]||o[0],r={left:c,top:c,x:0,y:0},s,t={},u;i.corner.fixed!==b&&(p==="shift"&&l.precedance==="x"&&n.left&&l.y!=="center"?l.precedance=l.precedance==="x"?"y":"x":p==="flip"&&n.left&&(l.x=l.x==="center"?n.left>0?"left":"right":l.x==="left"?"right":"left"),q==="shift"&&l.precedance==="y"&&n.top&&l.x!=="center"?l.precedance=l.precedance==="y"?"x":"y":q==="flip"&&n.top&&(l.y=l.y==="center"?n.top>0?"top":"bottom":l.y==="top"?"bottom":"top"),l.string()!==m.corner.string()&&(m.top!==n.top||m.left!==n.left)&&i.update(l,c)),s=i.position(l,n),s.right!==e&&(s.left=-s.right),s.bottom!==e&&(s.top=-s.bottom),s.user=Math.max(0,j.offset);if(r.left=p==="shift"&&!!n.left)l.x==="center"?t["margin-left"]=r.x=s["margin-left"]-n.left:(u=s.right!==e?[n.left,-s.left]:[-n.left,s.left],(r.x=Math.max(u[0],u[1]))>u[0]&&(g.left-=n.left,r.left=c),t[s.right!==e?"right":"left"]=r.x);if(r.top=q==="shift"&&!!n.top)l.y==="center"?t["margin-top"]=r.y=s["margin-top"]-n.top:(u=s.bottom!==e?[n.top,-s.top]:[-n.top,s.top],(r.y=Math.max(u[0],u[1]))>u[0]&&(g.top-=n.top,r.top=c),t[s.bottom!==e?"bottom":"top"]=r.y);k.tip.css(t).toggle(!(r.x&&r.y||l.x==="center"&&r.y||l.y==="center"&&r.x)),g.left-=s.left.charAt?s.user:p!=="shift"||r.top||!r.left&&!r.top?s.left:0,g.top-=s.top.charAt?s.user:q!=="shift"||r.left||!r.left&&!r.top?s.top:0,m.left=n.left,m.top=n.top,m.corner=l.clone()}}var i=this,j=f.options.style.tip,k=f.elements,l=k.tooltip,m={top:0,left:0},n={width:j.width,height:j.height},o={},p=j.border||0,r=".qtip-tip",s=!!(a("<canvas />")[0]||{}).getContext;i.mimic=i.corner=d,i.border=p,i.offset=j.offset,i.size=n,f.checks.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){i.init()||i.destroy(),f.reposition()},"^style.tip.(height|width)$":function(){n={width:j.width,height:j.height},i.create(),i.update(),f.reposition()},"^content.title.text|style.(classes|widget)$":function(){k.tip&&i.update()}},a.extend(i,{init:function(){var b=i.detectCorner()&&(s||a.browser.msie);b&&(i.create(),i.update(),l.unbind(r).bind("tooltipmove"+r,t));return b},detectCorner:function(){var a=j.corner,d=f.options.position,e=d.at,h=d.my.string?d.my.string():d.my;if(a===c||h===c&&e===c)return c;a===b?i.corner=new g.Corner(h):a.string||(i.corner=new g.Corner(a),i.corner.fixed=b),m.corner=new g.Corner(i.corner.string());return i.corner.string()!=="centercenter"},detectColours:function(b){var c,d,e,g=k.tip.css("cssText",""),h=b||i.corner,m=h[h.precedance],p="border-"+m+"-color",r="border"+m.charAt(0)+m.substr(1)+"Color",s=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,t="background-color",u="transparent",v=" !important",w=a(document.body).css("color"),x=f.elements.content.css("color"),y=k.titlebar&&(h.y==="top"||h.y==="center"&&g.position().top+n.height/2+j.offset<k.titlebar.outerHeight(1)),z=y?k.titlebar:k.content;l.addClass(q),o.fill=d=g.css(t),o.border=e=g[0].style[r]||g.css(p)||l.css(p);if(!d||s.test(d))o.fill=z.css(t)||u,s.test(o.fill)&&(o.fill=l.css(t)||d);if(!e||s.test(e)||e===w)o.border=z.css(p)||u,s.test(o.border)&&(o.border=e);a("*",g).add(g).css("cssText",t+":"+u+v+";border:0"+v+";"),l.removeClass(q)},create:function(){var b=n.width,c=n.height,d;k.tip&&k.tip.remove(),k.tip=a("<div />",{"class":"ui-tooltip-tip"}).css({width:b,height:c}).prependTo(l),s?a("<canvas />").appendTo(k.tip)[0].getContext("2d").save():(d='<vml:shape coordorigin="0,0" style="display:inline-block; position:absolute; behavior:url(#default#VML);"></vml:shape>',k.tip.html(d+d),a("*",k.tip).bind("click mousedown",function(a){a.stopPropagation()}))},update:function(e,f){var h=k.tip,l=h.children(),q=n.width,r=n.height,t="px solid ",v="px dashed transparent",x=j.mimic,y=Math.round,z,A,B,D,E;e||(e=m.corner||i.corner),x===c?x=e:(x=new g.Corner(x),x.precedance=e.precedance,x.x==="inherit"?x.x=e.x:x.y==="inherit"?x.y=e.y:x.x===x.y&&(x[e.precedance]=e[e.precedance])),z=x.precedance,i.detectColours(e),o.border!=="transparent"&&o.border!=="#123456"?(p=u(e,d,b),j.border===0&&p>0&&(o.fill=o.border),i.border=p=j.border!==b?j.border:p):i.border=p=0,B=C(x,q,r),i.size=E=w(e),h.css(E),e.precedance==="y"?D=[y(x.x==="left"?p:x.x==="right"?E.width-q-p:(E.width-q)/2),y(x.y==="top"?E.height-r:0)]:D=[y(x.x==="left"?E.width-q:0),y(x.y==="top"?p:x.y==="bottom"?E.height-r-p:(E.height-r)/2)],s?(l.attr(E),A=l[0].getContext("2d"),A.restore(),A.save(),A.clearRect(0,0,3e3,3e3),A.translate(D[0],D[1]),A.beginPath(),A.moveTo(B[0][0],B[0][1]),A.lineTo(B[1][0],B[1][1]),A.lineTo(B[2][0],B[2][1]),A.closePath(),A.fillStyle=o.fill,A.strokeStyle=o.border,A.lineWidth=p*2,A.lineJoin="miter",A.miterLimit=100,p&&A.stroke(),A.fill()):(B="m"+B[0][0]+","+B[0][1]+" l"+B[1][0]+","+B[1][1]+" "+B[2][0]+","+B[2][1]+" xe",D[2]=p&&/^(r|b)/i.test(e.string())?parseFloat(a.browser.version,10)===8?2:1:0,l.css({antialias:""+(x.string().indexOf("center")>-1),left:D[0]-D[2]*Number(z==="x"),top:D[1]-D[2]*Number(z==="y"),width:q+p,height:r+p}).each(function(b){var c=a(this);c[c.prop?"prop":"attr"]({coordsize:q+p+" "+(r+p),path:B,fillcolor:o.fill,filled:!!b,stroked:!b}).css({display:p||b?"block":"none"}),!b&&c.html()===""&&c.html('<vml:stroke weight="'+p*2+'px" color="'+o.border+'" miterlimit="1000" joinstyle="miter" style="behavior:url(#default#VML); display:inline-block;" />')})),f!==c&&i.position(e)},position:function(d){var e=k.tip,f={},g=Math.max(0,j.offset),h,l,m;if(j.corner===c||!e)return c;d=d||i.corner,h=d.precedance,l=w(d),m=[d.x,d.y],h==="x"&&m.reverse(),a.each(m,function(a,c){var e,i;c==="center"?(e=h==="y"?"left":"top",f[e]="50%",f["margin-"+e]=-Math.round(l[h==="y"?"width":"height"]/2)+g):(e=u(d,c,b),i=v(d),f[c]=a?p?u(d,c):0:g+(i>e?i:0))}),f[d[h]]-=l[h==="x"?"width":"height"],e.css({top:"",bottom:"",left:"",right:"",margin:""}).css(f);return f},destroy:function(){k.tip&&k.tip.remove(),l.unbind(r)}}),i.init()}function C(a,b,c){var d=Math.ceil(b/2),e=Math.ceil(c/2),f={bottomright:[[0,0],[b,c],[b,0]],bottomleft:[[0,0],[b,0],[0,c]],topright:[[0,c],[b,0],[b,c]],topleft:[[0,0],[0,c],[b,c]],topcenter:[[0,c],[d,0],[b,c]],bottomcenter:[[0,0],[b,0],[d,c]],rightcenter:[[0,0],[b,e],[0,c]],leftcenter:[[b,0],[b,c],[0,e]]};f.lefttop=f.bottomright,f.righttop=f.bottomleft,f.leftbottom=f.topright,f.rightbottom=f.topleft;return f[a.string()]}function B(d){var e=this,f=d.options.show.modal,h=d.elements,i=h.tooltip,j="#qtip-overlay",k=".qtipmodal",l=k+d.id,n="is-modal-qtip",p=a(document.body),q;d.checks.modal={"^show.modal.(on|blur)$":function(){e.init(),h.overlay.toggle(i.is(":visible"))}},a.extend(e,{init:function(){if(!f.on)return e;q=e.create(),i.attr(n,b).css("z-index",g.modal.zindex+a(m+"["+n+"]").length).unbind(k).unbind(l).bind("tooltipshow"+k+" tooltiphide"+k,function(b,c,d){var f=b.originalEvent;if(b.target===i[0])if(f&&b.type==="tooltiphide"&&/mouse(leave|enter)/.test(f.type)&&a(f.relatedTarget).closest(q[0]).length)try{b.preventDefault()}catch(g){}else(!f||f&&!f.solo)&&e[b.type.replace("tooltip","")](b,d)}).bind("tooltipfocus"+k,function(b){if(!b.isDefaultPrevented()&&b.target===i[0]){var c=a(m).filter("["+n+"]"),d=g.modal.zindex+c.length,e=parseInt(i[0].style.zIndex,10);q[0].style.zIndex=d-1,c.each(function(){this.style.zIndex>e&&(this.style.zIndex-=1)}),c.end().filter("."+o).qtip("blur",b.originalEvent),i.addClass(o)[0].style.zIndex=d;try{b.preventDefault()}catch(f){}}}).bind("tooltiphide"+k,function(b){b.target===i[0]&&a("["+n+"]").filter(":visible").not(i).last().qtip("focus",b)}),f.escape&&a(window).unbind(l).bind("keydown"+l,function(a){a.keyCode===27&&i.hasClass(o)&&d.hide(a)}),f.blur&&h.overlay.unbind(l).bind("click"+l,function(a){i.hasClass(o)&&d.hide(a)});return e},create:function(){function d(){q.css({height:a(window).height(),width:a(window).width()})}var b=a(j);if(b.length)return h.overlay=b.insertAfter(a(m).last());q=h.overlay=a("<div />",{id:j.substr(1),html:"<div></div>",mousedown:function(){return c}}).insertAfter(a(m).last()),a(window).unbind(k).bind("resize"+k,d),d();return q},toggle:function(d,g,h){if(d&&d.isDefaultPrevented())return e;var j=f.effect,k=g?"show":"hide",o=q.is(":visible"),r=a("["+n+"]").filter(":visible").not(i),s;q||(q=e.create());if(q.is(":animated")&&o===g||!g&&r.length)return e;g?(q.css({left:0,top:0}),q.toggleClass("blurs",f.blur),p.bind("focusin"+l,function(b){var d=a(b.target),e=d.closest(".qtip"),f=e.length<1?c:parseInt(e[0].style.zIndex,10)>parseInt(i[0].style.zIndex,10);!f&&a(b.target).closest(m)[0]!==i[0]&&i.find("input:visible").filter(":first").focus()})):p.undelegate("*","focusin"+l),q.stop(b,c),a.isFunction(j)?j.call(q,g):j===c?q[k]():q.fadeTo(parseInt(h,10)||90,g?1:0,function(){g||a(this).hide()}),g||q.queue(function(a){q.css({left:"",top:""}),a()});return e},show:function(a,c){return e.toggle(a,b,c)},hide:function(a,b){return e.toggle(a,c,b)},destroy:function(){var b=q;b&&(b=a("["+n+"]").not(i).length<1,b?(h.overlay.remove(),a(window).unbind(k)):h.overlay.unbind(k+d.id),p.undelegate("*","focusin"+l));return i.removeAttr(n).unbind(k)}}),e.init()}function A(b){var c=this,d=b.elements,e=d.tooltip,f=".bgiframe-"+b.id;a.extend(c,{init:function(){d.bgiframe=a('<iframe class="ui-tooltip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';" style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>'),d.bgiframe.appendTo(e),e.bind("tooltipmove"+f,c.adjust)},adjust:function(){var a=b.get("dimensions"),c=b.plugins.tip,f=d.tip,g,h;h=parseInt(e.css("border-left-width"),10)||0,h={left:-h,top:-h},c&&f&&(g=c.corner.precedance==="x"?["width","left"]:["height","top"],h[g[1]]-=f[g[0]]()),d.bgiframe.css(h).css(a)},destroy:function(){d.bgiframe.remove(),e.unbind(f)}}),c.init()}function z(d){var e=this,f=d.elements.tooltip,g=d.options.content.ajax,h=".qtip-ajax",i=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,j=b,k=c,l;d.checks.ajax={"^content.ajax":function(a,b,c){b==="ajax"&&(g=c),b==="once"?e.init():g&&g.url?e.load():f.unbind(h)}},a.extend(e,{init:function(){g&&g.url&&f.unbind(h)[g.once?"one":"bind"]("tooltipshow"+h,e.load);return e},load:function(b,f){function r(a,b,c){!k&&a.status!==0&&d.set("content.text",b+": "+c)}function q(b){k||(m&&(b=a("<div/>").append(b.replace(i,"")).find(m)),d.set("content.text",b))}function p(){k||(n&&(d.show(b.originalEvent),f=c),a.isFunction(g.complete)&&g.complete.apply(this,arguments))}var h=g.url.indexOf(" "),j=g.url,m,n=g.once&&!g.loading&&f;if(n)try{b.preventDefault()}catch(o){}else if(b&&b.isDefaultPrevented())return e;l&&l.abort&&l.abort(),h>-1&&(m=j.substr(h),j=j.substr(0,h)),l=a.ajax(a.extend({success:q,error:r,context:d},g,{url:j,complete:p}))},destroy:function(){l&&l.abort&&l.abort(),k=b}}),e.init()}function y(e,h){var i,j,k,l,m,n=a(this),o=a(document.body),p=this===document?o:n,q=n.metadata?n.metadata(h.metadata):d,r=h.metadata.type==="html5"&&q?q[h.metadata.name]:d,s=n.data(h.metadata.name||"qtipopts");try{s=typeof s==="string"?(new Function("return "+s))():s}catch(u){v("Unable to parse HTML5 attribute data: "+s)}l=a.extend(b,{},f.defaults,h,typeof s==="object"?w(s):d,w(r||q)),j=l.position,l.id=e;if("boolean"===typeof l.content.text){k=n.attr(l.content.attr);if(l.content.attr!==c&&k)l.content.text=k;else{v("Unable to locate content for tooltip! Aborting render of tooltip on element: ",n);return c}}j.container.length||(j.container=o),j.target===c&&(j.target=p),l.show.target===c&&(l.show.target=p),l.show.solo===b&&(l.show.solo=j.container.closest("body")),l.hide.target===c&&(l.hide.target=p),l.position.viewport===b&&(l.position.viewport=j.container),j.at=new g.Corner(j.at),j.my=new g.Corner(j.my);if(a.data(this,"qtip"))if(l.overwrite)n.qtip("destroy");else if(l.overwrite===c)return c;l.suppress&&(m=a.attr(this,"title"))&&a(this).removeAttr("title").attr(t,m),i=new x(n,l,e,!!k),a.data(this,"qtip",i),n.bind("remove.qtip-"+e+" removeqtip.qtip-"+e,function(){i.destroy()});return i}function x(r,s,v,x){function Q(){var b=[s.show.target[0],s.hide.target[0],y.rendered&&F.tooltip[0],s.position.container[0],s.position.viewport[0],window,document];y.rendered?a([]).pushStack(a.grep(b,function(a){return typeof a==="object"})).unbind(E):s.show.target.unbind(E+"-create")}function P(){function o(a){D.is(":visible")&&y.reposition(a)}function n(a){if(D.hasClass(l))return c;clearTimeout(y.timers.inactive),y.timers.inactive=setTimeout(function(){y.hide(a)},s.hide.inactive)}function k(b){if(D.hasClass(l)||B||C)return c;var f=a(b.relatedTarget||b.target),g=f.closest(m)[0]===D[0],h=f[0]===e.show[0];clearTimeout(y.timers.show),clearTimeout(y.timers.hide);if(d.target==="mouse"&&g||s.hide.fixed&&(/mouse(out|leave|move)/.test(b.type)&&(g||h)))try{b.preventDefault(),b.stopImmediatePropagation()}catch(i){}else s.hide.delay>0?y.timers.hide=setTimeout(function(){y.hide(b)},s.hide.delay):y.hide(b)}function j(a){if(D.hasClass(l))return c;clearTimeout(y.timers.show),clearTimeout(y.timers.hide);var d=function(){y.toggle(b,a)};s.show.delay>0?y.timers.show=setTimeout(d,s.show.delay):d()}var d=s.position,e={show:s.show.target,hide:s.hide.target,viewport:a(d.viewport),document:a(document),body:a(document.body),window:a(window)},g={show:a.trim(""+s.show.event).split(" "),hide:a.trim(""+s.hide.event).split(" ")},i=a.browser.msie&&parseInt(a.browser.version,10)===6;D.bind("mouseenter"+E+" mouseleave"+E,function(a){var b=a.type==="mouseenter";b&&y.focus(a),D.toggleClass(p,b)}),s.hide.fixed&&(e.hide=e.hide.add(D),D.bind("mouseover"+E,function(){D.hasClass(l)||clearTimeout(y.timers.hide)})),/mouse(out|leave)/i.test(s.hide.event)?s.hide.leave==="window"&&e.window.bind("mouseout"+E+" blur"+E,function(a){/select|option/.test(a.target)&&!a.relatedTarget&&y.hide(a)}):/mouse(over|enter)/i.test(s.show.event)&&e.hide.bind("mouseleave"+E,function(a){clearTimeout(y.timers.show)}),(""+s.hide.event).indexOf("unfocus")>-1&&d.container.closest("html").bind("mousedown"+E,function(b){var c=a(b.target),d=!D.hasClass(l)&&D.is(":visible"),e=c.parents(m).filter(D[0]).length>0;c[0]!==r[0]&&c[0]!==D[0]&&!e&&!r.has(c[0]).length&&!c.attr("disabled")&&y.hide(b)}),"number"===typeof s.hide.inactive&&(e.show.bind("qtip-"+v+"-inactive",n),a.each(f.inactiveEvents,function(a,b){e.hide.add(F.tooltip).bind(b+E+"-inactive",n)})),a.each(g.hide,function(b,c){var d=a.inArray(c,g.show),f=a(e.hide);d>-1&&f.add(e.show).length===f.length||c==="unfocus"?(e.show.bind(c+E,function(a){D.is(":visible")?k(a):j(a)}),delete g.show[d]):e.hide.bind(c+E,k)}),a.each(g.show,function(a,b){e.show.bind(b+E,j)}),"number"===typeof s.hide.distance&&e.show.add(D).bind("mousemove"+E,function(a){var b=G.origin||{},c=s.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&y.hide(a)}),d.target==="mouse"&&(e.show.bind("mousemove"+E,function(a){h={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),d.adjust.mouse&&(s.hide.event&&(D.bind("mouseleave"+E,function(a){(a.relatedTarget||a.target)!==e.show[0]&&y.hide(a)}),F.target.bind("mouseenter"+E+" mouseleave"+E,function(a){G.onTarget=a.type==="mouseenter"})),e.document.bind("mousemove"+E,function(a){G.onTarget&&!D.hasClass(l)&&D.is(":visible")&&y.reposition(a||h)}))),(d.adjust.resize||e.viewport.length)&&(a.event.special.resize?e.viewport:e.window).bind("resize"+E,o),(e.viewport.length||i&&D.css("position")==="fixed")&&e.viewport.bind("scroll"+E,o)}function O(b,d){function g(b){function i(e){e&&(delete h[e.src],clearTimeout(y.timers.img[e.src]),a(e).unbind(E)),a.isEmptyObject(h)&&(y.redraw(),d!==c&&y.reposition(G.event),b())}var g,h={};if((g=f.find("img[src]:not([height]):not([width])")).length===0)return i();g.each(function(b,c){if(h[c.src]===e){var d=0,f=3;(function g(){if(c.height||c.width||d>f)return i(c);d+=1,y.timers.img[c.src]=setTimeout(g,700)})(),a(c).bind("error"+E+" load"+E,function(){i(this)}),h[c.src]=c}})}var f=F.content;if(!y.rendered||!b)return c;a.isFunction(b)&&(b=b.call(r,G.event,y)||""),b.jquery&&b.length>0?f.empty().append(b.css({display:"block"})):f.html(b),y.rendered<0?D.queue("fx",g):(C=0,g(a.noop));return y}function N(b,d){var e=F.title;if(!y.rendered||!b)return c;a.isFunction(b)&&(b=b.call(r,G.event,y));if(b===c||!b&&b!=="")return J(c);b.jquery&&b.length>0?e.empty().append(b.css({display:"block"})):e.html(b),y.redraw(),d!==c&&y.rendered&&D.is(":visible")&&y.reposition(G.event)}function M(a){var b=F.button,d=F.title;if(!y.rendered)return c;a?(d||L(),K()):b.remove()}function L(){var c=A+"-title";F.titlebar&&J(),F.titlebar=a("<div />",{"class":j+"-titlebar "+(s.style.widget?"ui-widget-header":"")}).append(F.title=a("<div />",{id:c,"class":j+"-title","aria-atomic":b})).insertBefore(F.content).delegate(".ui-tooltip-close","mousedown keydown mouseup keyup mouseout",function(b){a(this).toggleClass("ui-state-active ui-state-focus",b.type.substr(-4)==="down")}).delegate(".ui-tooltip-close","mouseover mouseout",function(b){a(this).toggleClass("ui-state-hover",b.type==="mouseover")}),s.content.title.button?K():y.rendered&&y.redraw()}function K(){var b=s.content.title.button,d=typeof b==="string",e=d?b:"Close tooltip";F.button&&F.button.remove(),b.jquery?F.button=b:F.button=a("<a />",{"class":"ui-state-default ui-tooltip-close "+(s.style.widget?"":j+"-icon"),title:e,"aria-label":e}).prepend(a("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),F.button.appendTo(F.titlebar).attr("role","button").click(function(a){D.hasClass(l)||y.hide(a);return c}),y.redraw()}function J(a){F.title&&(F.titlebar.remove(),F.titlebar=F.title=F.button=d,a!==c&&y.reposition())}function I(){var a=s.style.widget;D.toggleClass(k,a).toggleClass(n,s.style.def&&!a),F.content.toggleClass(k+"-content",a),F.titlebar&&F.titlebar.toggleClass(k+"-header",a),F.button&&F.button.toggleClass(j+"-icon",!a)}function H(a){var b=0,c,d=s,e=a.split(".");while(d=d[e[b++]])b<e.length&&(c=d);return[c||s,e.pop()]}var y=this,z=document.body,A=j+"-"+v,B=0,C=0,D=a(),E=".qtip-"+v,F,G;y.id=v,y.rendered=c,y.elements=F={target:r},y.timers={img:{}},y.options=s,y.checks={},y.plugins={},y.cache=G={event:{},target:a(),disabled:c,attr:x,onTarget:c},y.checks.builtin={"^id$":function(d,e,g){var h=g===b?f.nextid:g,i=j+"-"+h;h!==c&&h.length>0&&!a("#"+i).length&&(D[0].id=i,F.content[0].id=i+"-content",F.title[0].id=i+"-title")},"^content.text$":function(a,b,c){O(c)},"^content.title.text$":function(a,b,c){if(!c)return J();!F.title&&c&&L(),N(c)},"^content.title.button$":function(a,b,c){M(c)},"^position.(my|at)$":function(a,b,c){"string"===typeof c&&(a[b]=new g.Corner(c))},"^position.container$":function(a,b,c){y.rendered&&D.appendTo(c)},"^show.ready$":function(){y.rendered?y.toggle(b):y.render(1)},"^style.classes$":function(a,b,c){D.attr("class",j+" qtip ui-helper-reset "+c)},"^style.widget|content.title":I,"^events.(render|show|move|hide|focus|blur)$":function(b,c,d){D[(a.isFunction(d)?"":"un")+"bind"]("tooltip"+c,d)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){var a=s.position;D.attr("tracking",a.target==="mouse"&&a.adjust.mouse),Q(),P()}},a.extend(y,{render:function(d){if(y.rendered)return y;var e=s.content.text,f=s.content.title.text,h=s.position,i=a.Event("tooltiprender");a.attr(r[0],"aria-describedby",A),D=F.tooltip=a("<div/>",{id:A,"class":j+" qtip ui-helper-reset "+n+" "+s.style.classes+" "+j+"-pos-"+s.position.my.abbrev(),width:s.style.width||"",height:s.style.height||"",tracking:h.target==="mouse"&&h.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":c,"aria-describedby":A+"-content","aria-hidden":b}).toggleClass(l,G.disabled).data("qtip",y).appendTo(s.position.container).append(F.content=a("<div />",{"class":j+"-content",id:A+"-content","aria-atomic":b})),y.rendered=-1,B=C=1,f&&(L(),a.isFunction(f)||N(f,c)),a.isFunction(e)||O(e,c),y.rendered=b,I(),a.each(s.events,function(b,c){a.isFunction(c)&&D.bind(b==="toggle"?"tooltipshow tooltiphide":"tooltip"+b,c)}),a.each(g,function(){this.initialize==="render"&&this(y)}),P(),D.queue("fx",function(a){i.originalEvent=G.event,D.trigger(i,[y]),B=C=0,y.redraw(),(s.show.ready||d)&&y.toggle(b,G.event,c),a()});return y},get:function(a){var b,c;switch(a.toLowerCase()){case"dimensions":b={height:D.outerHeight(),width:D.outerWidth()};break;case"offset":b=g.offset(D,s.position.container);break;default:c=H(a.toLowerCase()),b=c[0][c[1]],b=b.precedance?b.string():b}return b},set:function(e,f){function m(a,b){var c,d,e;for(c in k)for(d in k[c])if(e=(new RegExp(d,"i")).exec(a))b.push(e),k[c][d].apply(y,b)}var g=/^position\.(my|at|adjust|target|container)|style|content|show\.ready/i,h=/^content\.(title|attr)|style/i,i=c,j=c,k=y.checks,l;"string"===typeof e?(l=e,e={},e[l]=f):e=a.extend(b,{},e),a.each(e,function(b,c){var d=H(b.toLowerCase()),f;f=d[0][d[1]],d[0][d[1]]="object"===typeof c&&c.nodeType?a(c):c,e[b]=[d[0],d[1],c,f],i=g.test(b)||i,j=h.test(b)||j}),w(s),B=C=1,a.each(e,m),B=C=0,D.is(":visible")&&y.rendered&&(i&&y.reposition(s.position.target==="mouse"?d:G.event),j&&y.redraw());return y},toggle:function(e,f){function q(){e?(a.browser.msie&&D[0].style.removeAttribute("filter"),D.css("overflow",""),"string"===typeof i.autofocus&&a(i.autofocus,D).focus(),p=a.Event("tooltipvisible"),p.originalEvent=f?G.event:d,D.trigger(p,[y]),i.target.trigger("qtip-"+v+"-inactive")):D.css({display:"",visibility:"",opacity:"",left:"",top:""})}if(!y.rendered)return e?y.render(1):y;var g=e?"show":"hide",i=s[g],j=D.is(":visible"),k=!f||s[g].target.length<2||G.target[0]===f.target,l=s.position,n=s.content,o,p;(typeof e).search("boolean|number")&&(e=!j);if(!D.is(":animated")&&j===e&&k)return y;if(f){if(/over|enter/.test(f.type)&&/out|leave/.test(G.event.type)&&f.target===s.show.target[0]&&D.has(f.relatedTarget).length)return y;G.event=a.extend({},f)}p=a.Event("tooltip"+g),p.originalEvent=f?G.event:d,D.trigger(p,[y,90]);if(p.isDefaultPrevented())return y;a.attr(D[0],"aria-hidden",!e),e?(G.origin=a.extend({},h),y.focus(f),a.isFunction(n.text)&&O(n.text,c),a.isFunction(n.title.text)&&N(n.title.text,c),!u&&l.target==="mouse"&&l.adjust.mouse&&(a(document).bind("mousemove.qtip",function(a){h={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),u=b),y.reposition(f,arguments[2]),(p.solo=!!i.solo)&&a(m,i.solo).not(D).qtip("hide",p)):(clearTimeout(y.timers.show),delete G.origin,u&&!a(m+'[tracking="true"]:visible',i.solo).not(D).length&&(a(document).unbind("mousemove.qtip"),u=c),y.blur(f)),k&&D.stop(0,1),i.effect===c?(D[g](),q.call(D)):a.isFunction(i.effect)?(i.effect.call(D,y),D.queue("fx",function(a){q(),a()})):D.fadeTo(90,e?1:0,q),e&&i.target.trigger("qtip-"+v+"-inactive");return y},show:function(a){return y.toggle(b,a)},hide:function(a){return y.toggle(c,a)},focus:function(b){if(!y.rendered)return y;var c=a(m),d=parseInt(D[0].style.zIndex,10),e=f.zindex+c.length,g=a.extend({},b),h,i;D.hasClass(o)||(i=a.Event("tooltipfocus"),i.originalEvent=g,D.trigger(i,[y,e]),i.isDefaultPrevented()||(d!==e&&(c.each(function(){this.style.zIndex>d&&(this.style.zIndex=this.style.zIndex-1)}),c.filter("."+o).qtip("blur",g)),D.addClass(o)[0].style.zIndex=e));return y},blur:function(b){var c=a.extend({},b),d;D.removeClass(o),d=a.Event("tooltipblur"),d.originalEvent=c,D.trigger(d,[y]);return y},reposition:function(b,d){if(!y.rendered||B)return y;B=1;var e=s.position.target,f=s.position,i=f.my,k=f.at,l=f.adjust,m=l.method.split(" "),n=D.outerWidth(),o=D.outerHeight(),p=0,q=0,r=a.Event("tooltipmove"),t=D.css("position")==="fixed",u=f.viewport,v={left:0,top:0},w=f.container,x=c,A=y.plugins.tip,C={horizontal:m[0],vertical:m[1]=m[1]||m[0],enabled:u.jquery&&e[0]!==window&&e[0]!==z&&l.method!=="none",left:function(a){var b=C.horizontal==="shift",c=-w.offset.left+u.offset.left+u.scrollLeft,d=i.x==="left"?n:i.x==="right"?-n:-n/2,e=k.x==="left"?p:k.x==="right"?-p:-p/2,f=A&&A.size?A.size.width||0:0,g=A&&A.corner&&A.corner.precedance==="x"&&!b?f:0,h=c-a+g,j=a+n-u.width-c+g,m=d-(i.precedance==="x"||i.x===i.y?e:0)-(k.x==="center"?p/2:0),o=i.x==="center";b?(g=A&&A.corner&&A.corner.precedance==="y"?f:0,m=(i.x==="left"?1:-1)*d-g,v.left+=h>0?h:j>0?-j:0,v.left=Math.max(-w.offset.left+u.offset.left+(g&&A.corner.x==="center"?A.offset:0),a-m,Math.min(Math.max(-w.offset.left+u.offset.left+u.width,a+m),v.left))):(h>0&&(i.x!=="left"||j>0)?v.left-=m:j>0&&(i.x!=="right"||h>0)&&(v.left-=o?-m:m),v.left!==a&&o&&(v.left-=l.x),v.left<c&&-v.left>j&&(v.left=a));return v.left-a},top:function(a){var b=C.vertical==="shift",c=-w.offset.top+u.offset.top+u.scrollTop,d=i.y==="top"?o:i.y==="bottom"?-o:-o/2,e=k.y==="top"?q:k.y==="bottom"?-q:-q/2,f=A&&A.size?A.size.height||0:0,g=A&&A.corner&&A.corner.precedance==="y"&&!b?f:0,h=c-a+g,j=a+o-u.height-c+g,m=d-(i.precedance==="y"||i.x===i.y?e:0)-(k.y==="center"?q/2:0),n=i.y==="center";b?(g=A&&A.corner&&A.corner.precedance==="x"?f:0,m=(i.y==="top"?1:-1)*d-g,v.top+=h>0?h:j>0?-j:0,v.top=Math.max(-w.offset.top+u.offset.top+(g&&A.corner.x==="center"?A.offset:0),a-m,Math.min(Math.max(-w.offset.top+u.offset.top+u.height,a+m),v.top))):(h>0&&(i.y!=="top"||j>0)?v.top-=m:j>0&&(i.y!=="bottom"||h>0)&&(v.top-=n?-m:m),v.top!==a&&n&&(v.top-=l.y),v.top<0&&-v.top>j&&(v.top=a));return v.top-a}},E;if(a.isArray(e)&&e.length===2)k={x:"left",y:"top"},v={left:e[0],top:e[1]};else if(e==="mouse"&&(b&&b.pageX||G.event.pageX))k={x:"left",y:"top"},b=(b&&(b.type==="resize"||b.type==="scroll")?G.event:b&&b.pageX&&b.type==="mousemove"?b:h&&h.pageX&&(l.mouse||!b||!b.pageX)?{pageX:h.pageX,pageY:h.pageY}:!l.mouse&&G.origin&&G.origin.pageX&&s.show.distance?G.origin:b)||b||G.event||h||{},v={top:b.pageY,left:b.pageX};else{e==="event"?b&&b.target&&b.type!=="scroll"&&b.type!=="resize"?e=G.target=a(b.target):e=G.target:e=G.target=a(e.jquery?e:F.target),e=a(e).eq(0);if(e.length===0)return y;e[0]===document||e[0]===window?(p=g.iOS?window.innerWidth:e.width(),q=g.iOS?window.innerHeight:e.height(),e[0]===window&&(v={top:(u||e).scrollTop(),left:(u||e).scrollLeft()})):e.is("area")&&g.imagemap?v=g.imagemap(e,k,C.enabled?m:c):e[0].namespaceURI==="http://www.w3.org/2000/svg"&&g.svg?v=g.svg(e,k):(p=e.outerWidth(),q=e.outerHeight(),v=g.offset(e,w)),v.offset&&(p=v.width,q=v.height,x=v.flipoffset,v=v.offset);if(g.iOS<4.1&&g.iOS>3.1||g.iOS==4.3||!g.iOS&&t)E=a(window),v.left-=E.scrollLeft(),v.top-=E.scrollTop();v.left+=k.x==="right"?p:k.x==="center"?p/2:0,v.top+=k.y==="bottom"?q:k.y==="center"?q/2:0}v.left+=l.x+(i.x==="right"?-n:i.x==="center"?-n/2:0),v.top+=l.y+(i.y==="bottom"?-o:i.y==="center"?-o/2:0),C.enabled?(u={elem:u,height:u[(u[0]===window?"h":"outerH")+"eight"](),width:u[(u[0]===window?"w":"outerW")+"idth"](),scrollLeft:t?0:u.scrollLeft(),scrollTop:t?0:u.scrollTop(),offset:u.offset()||{left:0,top:0}},w={elem:w,scrollLeft:w.scrollLeft(),scrollTop:w.scrollTop(),offset:w.offset()||{left:0,top:0}},v.adjusted={left:C.horizontal!=="none"?C.left(v.left):0,top:C.vertical!=="none"?C.top(v.top):0},v.adjusted.left+v.adjusted.top&&D.attr("class",D[0].className.replace(/ui-tooltip-pos-\w+/i,j+"-pos-"+i.abbrev())),x&&v.adjusted.left&&(v.left+=x.left),x&&v.adjusted.top&&(v.top+=x.top)):v.adjusted={left:0,top:0},r.originalEvent=a.extend({},b),D.trigger(r,[y,v,u.elem||u]);if(r.isDefaultPrevented())return y;delete v.adjusted,d===c||isNaN(v.left)||isNaN(v.top)||e==="mouse"||!a.isFunction(f.effect)?D.css(v):a.isFunction(f.effect)&&(f.effect.call(D,y,a.extend({},v)),D.queue(function(b){a(this).css({opacity:"",height:""}),a.browser.msie&&this.style.removeAttribute("filter"),b()})),B=0;return y},redraw:function(){if(y.rendered<1||C)return y;var a=s.position.container,b,c,d,e;C=1,s.style.height&&D.css("height",s.style.height),s.style.width?D.css("width",s.style.width):(D.css("width","").addClass(q),c=D.width()+1,d=D.css("max-width")||"",e=D.css("min-width")||"",b=(d+e).indexOf("%")>-1?a.width()/100:0,d=(d.indexOf("%")>-1?b:1)*parseInt(d,10)||c,e=(e.indexOf("%")>-1?b:1)*parseInt(e,10)||0,c=d+e?Math.min(Math.max(c,e),d):c,D.css("width",Math.round(c)).removeClass(q)),C=0;return y},disable:function(b){"boolean"!==typeof b&&(b=!D.hasClass(l)&&!G.disabled),y.rendered?(D.toggleClass(l,b),a.attr(D[0],"aria-disabled",b)):G.disabled=!!b;return y},enable:function(){return y.disable(c)},destroy:function(){var b=r[0],c=a.attr(b,t),d=r.data("qtip");y.rendered&&(D.stop(1,0).remove(),a.each(y.plugins,function(){this.destroy&&this.destroy()})),clearTimeout(y.timers.show),clearTimeout(y.timers.hide),Q();if(!d||y===d)a.removeData(b,"qtip"),s.suppress&&c&&(a.attr(b,"title",c),r.removeAttr(t)),r.removeAttr("aria-describedby");r.unbind(".qtip-"+v),delete i[y.id];return r}})}function w(b){var e;if(!b||"object"!==typeof b)return c;if(b.metadata===d||"object"!==typeof b.metadata)b.metadata={type:b.metadata};if("content"in b){if(b.content===d||"object"!==typeof b.content||b.content.jquery)b.content={text:b.content};e=b.content.text||c,!a.isFunction(e)&&(!e&&!e.attr||e.length<1||"object"===typeof e&&!e.jquery)&&(b.content.text=c);if("title"in b.content){if(b.content.title===d||"object"!==typeof b.content.title)b.content.title={text:b.content.title};e=b.content.title.text||c,!a.isFunction(e)&&(!e&&!e.attr||e.length<1||"object"===typeof e&&!e.jquery)&&(b.content.title.text=c)}}if("position"in b)if(b.position===d||"object"!==typeof b.position)b.position={my:b.position,at:b.position};if("show"in b)if(b.show===d||"object"!==typeof b.show)b.show.jquery?b.show={target:b.show}:b.show={event:b.show};if("hide"in b)if(b.hide===d||"object"!==typeof b.hide)b.hide.jquery?b.hide={target:b.hide}:b.hide={event:b.hide};if("style"in b)if(b.style===d||"object"!==typeof b.style)b.style={classes:b.style};a.each(g,function(){this.sanitize&&this.sanitize(b)});return b}function v(){v.history=v.history||[],v.history.push(arguments);if("object"===typeof console){var a=console[console.warn?"warn":"log"],b=Array.prototype.slice.call(arguments),c;typeof arguments[0]==="string"&&(b[0]="qTip2: "+b[0]),c=a.apply?a.apply(console,b):a(b)}}"use strict";var b=!0,c=!1,d=null,e,f,g,h,i={},j="ui-tooltip",k="ui-widget",l="ui-state-disabled",m="div.qtip."+j,n=j+"-default",o=j+"-focus",p=j+"-hover",q=j+"-fluid",r="-31000px",s="_replacedByqTip",t="oldtitle",u;f=a.fn.qtip=function(g,h,i){var j=(""+g).toLowerCase(),k=d,l=a.makeArray(arguments).slice(1),m=l[l.length-1],n=this[0]?a.data(this[0],"qtip"):d;if(!arguments.length&&n||j==="api")return n;if("string"===typeof g){this.each(function(){var d=a.data(this,"qtip");if(!d)return b;m&&m.timeStamp&&(d.cache.event=m);if(j!=="option"&&j!=="options"||!h)d[j]&&d[j].apply(d[j],l);else if(a.isPlainObject(h)||i!==e)d.set(h,i);else{k=d.get(h);return c}});return k!==d?k:this}if("object"===typeof g||!arguments.length){n=w(a.extend(b,{},g));return f.bind.call(this,n,m)}},f.bind=function(d,j){return this.each(function(k){function r(b){function d(){p.render(typeof b==="object"||l.show.ready),m.show.add(m.hide).unbind(o)}if(p.cache.disabled)return c;p.cache.event=a.extend({},b),p.cache.target=b?a(b.target):[e],l.show.delay>0?(clearTimeout(p.timers.show),p.timers.show=setTimeout(d,l.show.delay),n.show!==n.hide&&m.hide.bind(n.hide,function(){clearTimeout(p.timers.show)})):d()}var l,m,n,o,p,q;q=a.isArray(d.id)?d.id[k]:d.id,q=!q||q===c||q.length<1||i[q]?f.nextid++:i[q]=q,o=".qtip-"+q+"-create",p=y.call(this,q,d);if(p===c)return b;l=p.options,a.each(g,function(){this.initialize==="initialize"&&this(p)}),m={show:l.show.target,hide:l.hide.target},n={show:a.trim(""+l.show.event).replace(/ /g,o+" ")+o,hide:a.trim(""+l.hide.event).replace(/ /g,o+" ")+o},/mouse(over|enter)/i.test(n.show)&&!/mouse(out|leave)/i.test(n.hide)&&(n.hide+=" mouseleave"+o),m.show.bind("mousemove"+o,function(a){h={pageX:a.pageX,pageY:a.pageY,type:"mousemove"},p.cache.onTarget=b}),m.show.bind(n.show,r),(l.show.ready||l.prerender)&&r(j)})},g=f.plugins={Corner:function(a){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,"center").toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase();var b=a.charAt(0);this.precedance=b==="t"||b==="b"?"y":"x",this.string=function(){return this.precedance==="y"?this.y+this.x:this.x+this.y},this.abbrev=function(){var a=this.x.substr(0,1),b=this.y.substr(0,1);return a===b?a:a==="c"||a!=="c"&&b!=="c"?b+a:a+b},this.clone=function(){return{x:this.x,y:this.y,precedance:this.precedance,string:this.string,abbrev:this.abbrev,clone:this.clone}}},offset:function(b,c){function j(a,b){d.left+=b*a.scrollLeft(),d.top+=b*a.scrollTop()}var d=b.offset(),e=b.closest("body")[0],f=c,g,h,i;if(f){do f.css("position")!=="static"&&(h=f.position(),d.left-=h.left+(parseInt(f.css("borderLeftWidth"),10)||0)+(parseInt(f.css("marginLeft"),10)||0),d.top-=h.top+(parseInt(f.css("borderTopWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0),!g&&(i=f.css("overflow"))!=="hidden"&&i!=="visible"&&(g=f));while((f=a(f[0].offsetParent)).length);g&&g[0]!==e&&j(g,1)}return d},iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,3})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_","."))||c,fn:{attr:function(b,c){if(this.length){var d=this[0],e="title",f=a.data(d,"qtip");if(b===e&&f&&"object"===typeof f&&f.options.suppress){if(arguments.length<2)return a.attr(d,t);f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",c);return this.attr(t,c)}}return a.fn["attr"+s].apply(this,arguments)},clone:function(b){var c=a([]),d="title",e=a.fn["clone"+s].apply(this,arguments);b||e.filter("["+t+"]").attr("title",function(){return a.attr(this,t)}).removeAttr(t);return e}}},a.each(g.fn,function(c,d){if(!d||a.fn[c+s])return b;var e=a.fn[c+s]=a.fn[c];a.fn[c]=function(){return d.apply(this,arguments)||e.apply(this,arguments)}}),a.ui||(a["cleanData"+s]=a.cleanData,a.cleanData=function(b){for(var c=0,d;(d=b[c])!==e;c++)try{a(d).triggerHandler("removeqtip")}catch(f){}a["cleanData"+s](b)}),f.version="2.0.0pre",f.nextid=0,f.inactiveEvents="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),f.zindex=15e3,f.defaults={prerender:c,id:c,overwrite:b,suppress:b,content:{text:b,attr:"title",title:{text:c,button:c}},position:{my:"top left",at:"bottom right",target:c,container:c,viewport:c,adjust:{x:0,y:0,mouse:b,resize:b,method:"flip flip"},effect:function(b,d,e){a(this).animate(d,{duration:200,queue:c})}},show:{target:c,event:"mouseenter",effect:b,delay:90,solo:c,ready:c,autofocus:c},hide:{target:c,event:"mouseleave",effect:b,delay:0,fixed:c,inactive:c,leave:"window",distance:c},style:{classes:"",widget:c,width:c,height:c,def:b},events:{render:d,move:d,show:d,hide:d,toggle:d,visible:d,focus:d,blur:d}},g.ajax=function(a){var b=a.plugins.ajax;return"object"===typeof b?b:a.plugins.ajax=new z(a)},g.ajax.initialize="render",g.ajax.sanitize=function(a){var b=a.content,c;b&&"ajax"in b&&(c=b.ajax,typeof c!=="object"&&(c=a.content.ajax={url:c}),"boolean"!==typeof c.once&&c.once&&(c.once=!!c.once))},a.extend(b,f.defaults,{content:{ajax:{loading:b,once:b}}}),g.bgiframe=function(b){var d=a.browser,e=b.plugins.bgiframe;if(a("select, object").length<1||(!d.msie||(""+d.version).charAt(0)!=="6"))return c;return"object"===typeof e?e:b.plugins.bgiframe=new A(b)},g.bgiframe.initialize="render",g.imagemap=function(b,c,d){function n(a,b,c){var d=0,e=1,f=1,g=0,h=0,i=a.width,j=a.height;while(i>0&&j>0&&e>0&&f>0){i=Math.floor(i/2),j=Math.floor(j/2),c.x==="left"?e=i:c.x==="right"?e=a.width-i:e+=Math.floor(i/2),c.y==="top"?f=j:c.y==="bottom"?f=a.height-j:f+=Math.floor(j/2),d=b.length;while(d--){if(b.length<2)break;g=b[d][0]-a.offset.left,h=b[d][1]-a.offset.top,(c.x==="left"&&g>=e||c.x==="right"&&g<=e||c.x==="center"&&(g<e||g>a.width-e)||c.y==="top"&&h>=f||c.y==="bottom"&&h<=f||c.y==="center"&&(h<f||h>a.height-f))&&b.splice(d,1)}}return{left:b[0][0],top:b[0][1]}}b.jquery||(b=a(b));var e=(b[0].shape||b.attr("shape")).toLowerCase(),f=(b[0].coords||b.attr("coords")).split(","),g=[],h=a('img[usemap="#'+b.parent("map").attr("name")+'"]'),i=h.offset(),j={width:0,height:0,offset:{top:1e10,right:0,bottom:0,left:1e10}},k=0,l=0,m;i.left+=Math.ceil((h.outerWidth()-h.width())/2),i.top+=Math.ceil((h.outerHeight()-h.height())/2);if(e==="poly"){k=f.length;while(k--)l=[parseInt(f[--k],10),parseInt(f[k+1],10)],l[0]>j.offset.right&&(j.offset.right=l[0]),l[0]<j.offset.left&&(j.offset.left=l[0]),l[1]>j.offset.bottom&&(j.offset.bottom=l[1]),l[1]<j.offset.top&&(j.offset.top=l[1]),g.push(l)}else g=a.map(f,function(a){return parseInt(a,10)});switch(e){case"rect":j={width:Math.abs(g[2]-g[0]),height:Math.abs(g[3]-g[1]),offset:{left:Math.min(g[0],g[2]),top:Math.min(g[1],g[3])}};break;case"circle":j={width:g[2]+2,height:g[2]+2,offset:{left:g[0],top:g[1]}};break;case"poly":a.extend(j,{width:Math.abs(j.offset.right-j.offset.left),height:Math.abs(j.offset.bottom-j.offset.top)}),c.string()==="centercenter"?j.offset={left:j.offset.left+j.width/2,top:j.offset.top+j.height/2}:(j.offset=n(j,g.slice(),c),d&&(d[0]==="flip"||d[1]==="flip")&&(j.flipoffset=n(j,g.slice(),{x:c.x==="left"?"right":c.x==="right"?"left":"center",y:c.y==="top"?"bottom":c.y==="bottom"?"top":"center"}),j.flipoffset.left-=j.offset.left,j.flipoffset.top-=j.offset.top)),j.width=j.height=0}j.offset.left+=i.left,j.offset.top+=i.top;return j},g.modal=function(a){var b=a.plugins.modal;return"object"===typeof b?b:a.plugins.modal=new B(a)},g.modal.initialize="render",g.modal.sanitize=function(a){a.show&&(typeof a.show.modal!=="object"?a.show.modal={on:!!a.show.modal}:typeof a.show.modal.on==="undefined"&&(a.show.modal.on=b))},g.modal.zindex=f.zindex+1e3,a.extend(b,f.defaults,{show:{modal:{on:c,effect:b,blur:b,escape:b}}}),g.svg=function(b,c){var d=a(document),e=b[0],f={width:0,height:0,offset:{top:1e10,left:1e10}},g,h,i,j,k;if(e.getBBox&&e.parentNode){g=e.getBBox(),h=e.getScreenCTM(),i=e.farthestViewportElement||e;if(!i.createSVGPoint)return f;j=i.createSVGPoint(),j.x=g.x,j.y=g.y,k=j.matrixTransform(h),f.offset.left=k.x,f.offset.top=k.y,j.x+=g.width,j.y+=g.height,k=j.matrixTransform(h),f.width=k.x-f.offset.left,f.height=k.y-f.offset.top,f.offset.left+=d.scrollLeft(),f.offset.top+=d.scrollTop()}return f},g.tip=function(a){var b=a.plugins.tip;return"object"===typeof b?b:a.plugins.tip=new D(a)},g.tip.initialize="render",g.tip.sanitize=function(a){var c=a.style,d;c&&"tip"in c&&(d=a.style.tip,typeof d!=="object"&&(a.style.tip={corner:d}),/string|boolean/i.test(typeof d.corner)||(d.corner=b),typeof d.width!=="number"&&delete d.width,typeof d.height!=="number"&&delete d.height,typeof d.border!=="number"&&d.border!==b&&delete d.border,typeof d.offset!=="number"&&delete d.offset)},a.extend(b,f.defaults,{style:{tip:{corner:b,mimic:c,width:6,height:6,border:b,offset:0}}})});
{"routes": [{"route": "29 to UVic", "stops": [{"point_id": 320, "sequence": "1"}, {"point_id": 321, "sequence": "2"}, {"point_id": 322, "sequence": "3"}, {"point_id": 598, "sequence": "4"}, {"point_id": 599, "sequence": "5"}, {"point_id": 600, "sequence": "6"}, {"point_id": 601, "sequence": "7"}, {"point_id": 490, "sequence": "8"}, {"point_id": 602, "sequence": "9"}, {"point_id": 603, "sequence": "10"}, {"point_id": 604, "sequence": "11"}, {"point_id": 605, "sequence": "12"}, {"point_id": 606, "sequence": "13"}, {"point_id": 607, "sequence": "14"}, {"point_id": 608, "sequence": "15"}, {"point_id": 609, "sequence": "16"}, {"point_id": 610, "sequence": "17"}, {"point_id": 506, "sequence": "18"}, {"point_id": 311, "sequence": "19"}, {"point_id": 312, "sequence": "20"}, {"point_id": 313, "sequence": "21"}, {"point_id": 314, "sequence": "22"}, {"point_id": 315, "sequence": "23"}, {"point_id": 611, "sequence": "24"}, {"point_id": 612, "sequence": "25"}, {"point_id": 613, "sequence": "26"}, {"point_id": 614, "sequence": "27"}, {"point_id": 615, "sequence": "28"}, {"point_id": 616, "sequence": "29"}, {"point_id": 82, "sequence": "30"}, {"point_id": 83, "sequence": "31"}, {"point_id": 188, "sequence": "32"}, {"point_id": 80, "sequence": "33"}]}, {"route": "13 to Cadboro Bay", "stops": [{"point_id": 481, "sequence": "1"}, {"point_id": 512, "sequence": "2"}, {"point_id": 273, "sequence": "3"}, {"point_id": 317, "sequence": "4"}, {"point_id": 318, "sequence": "5"}, {"point_id": 274, "sequence": "6"}, {"point_id": 319, "sequence": "7"}, {"point_id": 518, "sequence": "8"}, {"point_id": 66, "sequence": "9"}, {"point_id": 67, "sequence": "10"}, {"point_id": 68, "sequence": "11"}, {"point_id": 69, "sequence": "12"}, {"point_id": 70, "sequence": "13"}, {"point_id": 71, "sequence": "14"}, {"point_id": 519, "sequence": "15"}, {"point_id": 520, "sequence": "16"}, {"point_id": 521, "sequence": "17"}, {"point_id": 514, "sequence": "18"}]}, {"route": "39 to Royal Oak/Camosun/West Exch", "stops": [{"point_id": 319, "sequence": "1"}, {"point_id": 216, "sequence": "2"}, {"point_id": 217, "sequence": "3"}, {"point_id": 218, "sequence": "4"}, {"point_id": 219, "sequence": "5"}, {"point_id": 320, "sequence": "6"}, {"point_id": 321, "sequence": "7"}, {"point_id": 322, "sequence": "8"}, {"point_id": 323, "sequence": "9"}, {"point_id": 324, "sequence": "10"}, {"point_id": 325, "sequence": "11"}, {"point_id": 326, "sequence": "12"}, {"point_id": 327, "sequence": "13"}, {"point_id": 328, "sequence": "14"}, {"point_id": 329, "sequence": "15"}, {"point_id": 330, "sequence": "16"}, {"point_id": 331, "sequence": "17"}, {"point_id": 332, "sequence": "18"}, {"point_id": 333, "sequence": "19"}, {"point_id": 334, "sequence": "20"}, {"point_id": 335, "sequence": "21"}, {"point_id": 336, "sequence": "22"}, {"point_id": 337, "sequence": "23"}, {"point_id": 338, "sequence": "24"}, {"point_id": 339, "sequence": "25"}, {"point_id": 340, "sequence": "26"}, {"point_id": 341, "sequence": "27"}, {"point_id": 342, "sequence": "28"}, {"point_id": 343, "sequence": "29"}, {"point_id": 344, "sequence": "30"}, {"point_id": 345, "sequence": "31"}, {"point_id": 346, "sequence": "32"}, {"point_id": 347, "sequence": "33"}, {"point_id": 348, "sequence": "34"}, {"point_id": 349, "sequence": "35"}, {"point_id": 350, "sequence": "36"}, {"point_id": 351, "sequence": "37"}, {"point_id": 352, "sequence": "38"}, {"point_id": 353, "sequence": "39"}, {"point_id": 354, "sequence": "40"}, {"point_id": 140, "sequence": "41"}, {"point_id": 141, "sequence": "42"}, {"point_id": 142, "sequence": "43"}, {"point_id": 143, "sequence": "44"}, {"point_id": 144, "sequence": "45"}, {"point_id": 145, "sequence": "46"}, {"point_id": 146, "sequence": "47"}, {"point_id": 147, "sequence": "48"}, {"point_id": 148, "sequence": "49"}, {"point_id": 149, "sequence": "50"}, {"point_id": 355, "sequence": "51"}, {"point_id": 356, "sequence": "52"}, {"point_id": 357, "sequence": "53"}, {"point_id": 358, "sequence": "54"}, {"point_id": 359, "sequence": "55"}, {"point_id": 360, "sequence": "56"}, {"point_id": 361, "sequence": "57"}, {"point_id": 362, "sequence": "58"}, {"point_id": 363, "sequence": "59"}, {"point_id": 364, "sequence": "60"}, {"point_id": 365, "sequence": "61"}, {"point_id": 275, "sequence": "62"}]}, {"route": "14 to Vic General", "stops": [{"point_id": 81, "sequence": "1"}, {"point_id": 82, "sequence": "2"}, {"point_id": 83, "sequence": "3"}, {"point_id": 84, "sequence": "4"}, {"point_id": 85, "sequence": "5"}, {"point_id": 86, "sequence": "6"}, {"point_id": 87, "sequence": "7"}, {"point_id": 88, "sequence": "8"}, {"point_id": 89, "sequence": "9"}, {"point_id": 90, "sequence": "10"}, {"point_id": 91, "sequence": "11"}, {"point_id": 92, "sequence": "12"}, {"point_id": 93, "sequence": "13"}, {"point_id": 94, "sequence": "14"}, {"point_id": 95, "sequence": "15"}, {"point_id": 96, "sequence": "16"}, {"point_id": 97, "sequence": "17"}, {"point_id": 98, "sequence": "18"}, {"point_id": 99, "sequence": "19"}, {"point_id": 100, "sequence": "20"}, {"point_id": 101, "sequence": "21"}, {"point_id": 102, "sequence": "22"}, {"point_id": 103, "sequence": "23"}, {"point_id": 104, "sequence": "24"}, {"point_id": 105, "sequence": "25"}, {"point_id": 106, "sequence": "26"}, {"point_id": 107, "sequence": "27"}, {"point_id": 108, "sequence": "28"}, {"point_id": 109, "sequence": "29"}, {"point_id": 110, "sequence": "30"}, {"point_id": 111, "sequence": "31"}, {"point_id": 112, "sequence": "32"}, {"point_id": 113, "sequence": "33"}, {"point_id": 114, "sequence": "34"}, {"point_id": 115, "sequence": "35"}, {"point_id": 116, "sequence": "36"}, {"point_id": 117, "sequence": "37"}, {"point_id": 118, "sequence": "38"}, {"point_id": 119, "sequence": "39"}, {"point_id": 120, "sequence": "40"}, {"point_id": 121, "sequence": "41"}, {"point_id": 122, "sequence": "42"}, {"point_id": 123, "sequence": "43"}, {"point_id": 124, "sequence": "44"}, {"point_id": 125, "sequence": "45"}, {"point_id": 126, "sequence": "46"}, {"point_id": 127, "sequence": "47"}, {"point_id": 128, "sequence": "48"}, {"point_id": 129, "sequence": "49"}, {"point_id": 130, "sequence": "50"}, {"point_id": 131, "sequence": "51"}, {"point_id": 132, "sequence": "52"}, {"point_id": 133, "sequence": "53"}, {"point_id": 134, "sequence": "54"}, {"point_id": 135, "sequence": "55"}, {"point_id": 136, "sequence": "56"}, {"point_id": 137, "sequence": "57"}, {"point_id": 138, "sequence": "58"}, {"point_id": 139, "sequence": "59"}, {"point_id": 140, "sequence": "60"}, {"point_id": 141, "sequence": "61"}, {"point_id": 142, "sequence": "62"}, {"point_id": 143, "sequence": "63"}]}, {"route": "51 to Langford", "stops": [{"point_id": 429, "sequence": "1"}, {"point_id": 216, "sequence": "2"}, {"point_id": 217, "sequence": "3"}, {"point_id": 218, "sequence": "4"}, {"point_id": 219, "sequence": "5"}, {"point_id": 220, "sequence": "6"}, {"point_id": 221, "sequence": "7"}, {"point_id": 222, "sequence": "8"}, {"point_id": 223, "sequence": "9"}, {"point_id": 224, "sequence": "10"}, {"point_id": 225, "sequence": "11"}, {"point_id": 226, "sequence": "12"}, {"point_id": 227, "sequence": "13"}, {"point_id": 228, "sequence": "14"}, {"point_id": 229, "sequence": "15"}, {"point_id": 430, "sequence": "16"}, {"point_id": 431, "sequence": "17"}, {"point_id": 432, "sequence": "18"}, {"point_id": 433, "sequence": "19"}, {"point_id": 434, "sequence": "20"}, {"point_id": 435, "sequence": "21"}, {"point_id": 436, "sequence": "22"}, {"point_id": 359, "sequence": "23"}, {"point_id": 360, "sequence": "24"}, {"point_id": 437, "sequence": "25"}, {"point_id": 438, "sequence": "26"}, {"point_id": 439, "sequence": "27"}, {"point_id": 440, "sequence": "28"}, {"point_id": 441, "sequence": "29"}, {"point_id": 442, "sequence": "30"}, {"point_id": 443, "sequence": "31"}, {"point_id": 444, "sequence": "32"}, {"point_id": 445, "sequence": "33"}, {"point_id": 446, "sequence": "34"}, {"point_id": 447, "sequence": "35"}]}, {"route": "26 to Dockyard", "stops": [{"point_id": 215, "sequence": "1"}, {"point_id": 216, "sequence": "2"}, {"point_id": 217, "sequence": "3"}, {"point_id": 218, "sequence": "4"}, {"point_id": 219, "sequence": "5"}, {"point_id": 220, "sequence": "6"}, {"point_id": 221, "sequence": "7"}, {"point_id": 222, "sequence": "8"}, {"point_id": 223, "sequence": "9"}, {"point_id": 224, "sequence": "10"}, {"point_id": 225, "sequence": "11"}, {"point_id": 226, "sequence": "12"}, {"point_id": 227, "sequence": "13"}, {"point_id": 228, "sequence": "14"}, {"point_id": 229, "sequence": "15"}, {"point_id": 230, "sequence": "16"}, {"point_id": 231, "sequence": "17"}, {"point_id": 232, "sequence": "18"}, {"point_id": 233, "sequence": "19"}, {"point_id": 234, "sequence": "20"}, {"point_id": 235, "sequence": "21"}, {"point_id": 236, "sequence": "22"}, {"point_id": 237, "sequence": "23"}, {"point_id": 238, "sequence": "24"}, {"point_id": 239, "sequence": "25"}, {"point_id": 240, "sequence": "26"}, {"point_id": 241, "sequence": "27"}, {"point_id": 242, "sequence": "28"}, {"point_id": 243, "sequence": "29"}, {"point_id": 3, "sequence": "30"}, {"point_id": 4, "sequence": "31"}, {"point_id": 244, "sequence": "32"}, {"point_id": 245, "sequence": "33"}, {"point_id": 246, "sequence": "34"}, {"point_id": 247, "sequence": "35"}, {"point_id": 248, "sequence": "36"}, {"point_id": 249, "sequence": "37"}, {"point_id": 250, "sequence": "38"}, {"point_id": 251, "sequence": "39"}, {"point_id": 252, "sequence": "40"}, {"point_id": 253, "sequence": "41"}, {"point_id": 254, "sequence": "42"}, {"point_id": 255, "sequence": "43"}, {"point_id": 256, "sequence": "44"}, {"point_id": 257, "sequence": "45"}, {"point_id": 258, "sequence": "46"}, {"point_id": 259, "sequence": "47"}]}, {"route": "16 to UVic", "stops": [{"point_id": 267, "sequence": "1"}, {"point_id": 268, "sequence": "2"}, {"point_id": 269, "sequence": "3"}, {"point_id": 270, "sequence": "4"}, {"point_id": 271, "sequence": "5"}, {"point_id": 272, "sequence": "6"}, {"point_id": 273, "sequence": "7"}, {"point_id": 274, "sequence": "8"}, {"point_id": 82, "sequence": "9"}, {"point_id": 83, "sequence": "10"}, {"point_id": 188, "sequence": "11"}, {"point_id": 215, "sequence": "12"}]}, {"route": "11 to Tillicum Mall", "stops": [{"point_id": 80, "sequence": "1"}, {"point_id": 366, "sequence": "2"}, {"point_id": 367, "sequence": "3"}, {"point_id": 368, "sequence": "4"}, {"point_id": 369, "sequence": "5"}, {"point_id": 370, "sequence": "6"}, {"point_id": 371, "sequence": "7"}, {"point_id": 372, "sequence": "8"}, {"point_id": 373, "sequence": "9"}, {"point_id": 374, "sequence": "10"}, {"point_id": 375, "sequence": "11"}, {"point_id": 376, "sequence": "12"}, {"point_id": 377, "sequence": "13"}, {"point_id": 378, "sequence": "14"}, {"point_id": 379, "sequence": "15"}, {"point_id": 380, "sequence": "16"}, {"point_id": 381, "sequence": "17"}, {"point_id": 382, "sequence": "18"}, {"point_id": 383, "sequence": "19"}, {"point_id": 384, "sequence": "20"}, {"point_id": 385, "sequence": "21"}, {"point_id": 386, "sequence": "22"}, {"point_id": 387, "sequence": "23"}, {"point_id": 388, "sequence": "24"}, {"point_id": 389, "sequence": "25"}, {"point_id": 390, "sequence": "26"}, {"point_id": 391, "sequence": "27"}, {"point_id": 392, "sequence": "28"}, {"point_id": 393, "sequence": "29"}, {"point_id": 394, "sequence": "30"}, {"point_id": 395, "sequence": "31"}, {"point_id": 396, "sequence": "32"}, {"point_id": 397, "sequence": "33"}, {"point_id": 398, "sequence": "34"}, {"point_id": 399, "sequence": "35"}, {"point_id": 265, "sequence": "36"}, {"point_id": 400, "sequence": "37"}, {"point_id": 266, "sequence": "38"}, {"point_id": 102, "sequence": "39"}, {"point_id": 103, "sequence": "40"}, {"point_id": 104, "sequence": "41"}, {"point_id": 105, "sequence": "42"}, {"point_id": 106, "sequence": "43"}, {"point_id": 107, "sequence": "44"}, {"point_id": 108, "sequence": "45"}, {"point_id": 109, "sequence": "46"}, {"point_id": 110, "sequence": "47"}, {"point_id": 111, "sequence": "48"}, {"point_id": 112, "sequence": "49"}, {"point_id": 113, "sequence": "50"}, {"point_id": 114, "sequence": "51"}, {"point_id": 194, "sequence": "52"}, {"point_id": 401, "sequence": "53"}, {"point_id": 402, "sequence": "54"}, {"point_id": 403, "sequence": "55"}, {"point_id": 404, "sequence": "56"}, {"point_id": 405, "sequence": "57"}, {"point_id": 406, "sequence": "58"}, {"point_id": 407, "sequence": "59"}, {"point_id": 408, "sequence": "60"}, {"point_id": 409, "sequence": "61"}, {"point_id": 410, "sequence": "62"}, {"point_id": 411, "sequence": "63"}, {"point_id": 412, "sequence": "64"}, {"point_id": 413, "sequence": "65"}, {"point_id": 414, "sequence": "66"}, {"point_id": 415, "sequence": "67"}, {"point_id": 416, "sequence": "68"}, {"point_id": 417, "sequence": "69"}, {"point_id": 418, "sequence": "70"}, {"point_id": 419, "sequence": "71"}, {"point_id": 420, "sequence": "72"}, {"point_id": 421, "sequence": "73"}, {"point_id": 422, "sequence": "74"}, {"point_id": 423, "sequence": "75"}, {"point_id": 424, "sequence": "76"}, {"point_id": 425, "sequence": "77"}, {"point_id": 426, "sequence": "78"}, {"point_id": 427, "sequence": "79"}, {"point_id": 428, "sequence": "80"}, {"point_id": 1, "sequence": "81"}]}, {"route": "12 to UVic", "stops": [{"point_id": 481, "sequence": "1"}, {"point_id": 482, "sequence": "2"}, {"point_id": 483, "sequence": "3"}, {"point_id": 484, "sequence": "4"}, {"point_id": 485, "sequence": "5"}, {"point_id": 486, "sequence": "6"}, {"point_id": 487, "sequence": "7"}, {"point_id": 488, "sequence": "8"}, {"point_id": 489, "sequence": "9"}, {"point_id": 490, "sequence": "10"}, {"point_id": 491, "sequence": "11"}, {"point_id": 492, "sequence": "12"}, {"point_id": 493, "sequence": "13"}, {"point_id": 494, "sequence": "14"}, {"point_id": 495, "sequence": "15"}, {"point_id": 496, "sequence": "16"}, {"point_id": 78, "sequence": "17"}, {"point_id": 79, "sequence": "18"}, {"point_id": 319, "sequence": "19"}]}, {"route": "13 to University Heights", "stops": [{"point_id": 514, "sequence": "1"}, {"point_id": 375, "sequence": "2"}, {"point_id": 376, "sequence": "3"}, {"point_id": 377, "sequence": "4"}, {"point_id": 378, "sequence": "5"}, {"point_id": 379, "sequence": "6"}, {"point_id": 515, "sequence": "7"}, {"point_id": 516, "sequence": "8"}, {"point_id": 517, "sequence": "9"}, {"point_id": 319, "sequence": "10"}, {"point_id": 216, "sequence": "11"}, {"point_id": 217, "sequence": "12"}, {"point_id": 218, "sequence": "13"}, {"point_id": 219, "sequence": "14"}, {"point_id": 513, "sequence": "15"}, {"point_id": 481, "sequence": "16"}]}, {"route": "26 to UVic", "stops": [{"point_id": 259, "sequence": "1"}, {"point_id": 565, "sequence": "2"}, {"point_id": 566, "sequence": "3"}, {"point_id": 567, "sequence": "4"}, {"point_id": 568, "sequence": "5"}, {"point_id": 569, "sequence": "6"}, {"point_id": 570, "sequence": "7"}, {"point_id": 571, "sequence": "8"}, {"point_id": 572, "sequence": "9"}, {"point_id": 573, "sequence": "10"}, {"point_id": 574, "sequence": "11"}, {"point_id": 575, "sequence": "12"}, {"point_id": 576, "sequence": "13"}, {"point_id": 577, "sequence": "14"}, {"point_id": 578, "sequence": "15"}, {"point_id": 579, "sequence": "16"}, {"point_id": 580, "sequence": "17"}, {"point_id": 581, "sequence": "18"}, {"point_id": 582, "sequence": "19"}, {"point_id": 583, "sequence": "20"}, {"point_id": 584, "sequence": "21"}, {"point_id": 585, "sequence": "22"}, {"point_id": 268, "sequence": "23"}, {"point_id": 269, "sequence": "24"}, {"point_id": 586, "sequence": "25"}, {"point_id": 587, "sequence": "26"}, {"point_id": 588, "sequence": "27"}, {"point_id": 589, "sequence": "28"}, {"point_id": 590, "sequence": "29"}, {"point_id": 591, "sequence": "30"}, {"point_id": 271, "sequence": "31"}, {"point_id": 592, "sequence": "32"}, {"point_id": 593, "sequence": "33"}, {"point_id": 272, "sequence": "34"}, {"point_id": 594, "sequence": "35"}, {"point_id": 595, "sequence": "36"}, {"point_id": 596, "sequence": "37"}, {"point_id": 597, "sequence": "38"}, {"point_id": 512, "sequence": "39"}, {"point_id": 273, "sequence": "40"}, {"point_id": 317, "sequence": "41"}, {"point_id": 318, "sequence": "42"}, {"point_id": 274, "sequence": "43"}, {"point_id": 82, "sequence": "44"}, {"point_id": 83, "sequence": "45"}, {"point_id": 188, "sequence": "46"}, {"point_id": 215, "sequence": "47"}]}, {"route": "4 to UVic", "stops": [{"point_id": 189, "sequence": "1"}, {"point_id": 190, "sequence": "2"}, {"point_id": 191, "sequence": "3"}, {"point_id": 192, "sequence": "4"}, {"point_id": 111, "sequence": "5"}, {"point_id": 193, "sequence": "6"}, {"point_id": 112, "sequence": "7"}, {"point_id": 113, "sequence": "8"}, {"point_id": 114, "sequence": "9"}, {"point_id": 194, "sequence": "10"}, {"point_id": 195, "sequence": "11"}, {"point_id": 196, "sequence": "12"}, {"point_id": 197, "sequence": "13"}, {"point_id": 198, "sequence": "14"}, {"point_id": 199, "sequence": "15"}, {"point_id": 200, "sequence": "16"}, {"point_id": 201, "sequence": "17"}, {"point_id": 202, "sequence": "18"}, {"point_id": 203, "sequence": "19"}, {"point_id": 204, "sequence": "20"}, {"point_id": 205, "sequence": "21"}, {"point_id": 206, "sequence": "22"}, {"point_id": 207, "sequence": "23"}, {"point_id": 208, "sequence": "24"}, {"point_id": 209, "sequence": "25"}, {"point_id": 210, "sequence": "26"}, {"point_id": 211, "sequence": "27"}, {"point_id": 212, "sequence": "28"}, {"point_id": 213, "sequence": "29"}, {"point_id": 188, "sequence": "30"}, {"point_id": 214, "sequence": "31"}]}, {"route": "7 to UVic", "stops": [{"point_id": 35, "sequence": "1"}, {"point_id": 536, "sequence": "2"}, {"point_id": 537, "sequence": "3"}, {"point_id": 538, "sequence": "4"}, {"point_id": 539, "sequence": "5"}, {"point_id": 540, "sequence": "6"}, {"point_id": 541, "sequence": "7"}, {"point_id": 542, "sequence": "8"}, {"point_id": 543, "sequence": "9"}, {"point_id": 544, "sequence": "10"}, {"point_id": 545, "sequence": "11"}, {"point_id": 546, "sequence": "12"}, {"point_id": 547, "sequence": "13"}, {"point_id": 548, "sequence": "14"}, {"point_id": 549, "sequence": "15"}, {"point_id": 550, "sequence": "16"}, {"point_id": 551, "sequence": "17"}, {"point_id": 552, "sequence": "18"}, {"point_id": 553, "sequence": "19"}, {"point_id": 554, "sequence": "20"}, {"point_id": 555, "sequence": "21"}, {"point_id": 556, "sequence": "22"}, {"point_id": 557, "sequence": "23"}, {"point_id": 558, "sequence": "24"}, {"point_id": 559, "sequence": "25"}, {"point_id": 560, "sequence": "26"}, {"point_id": 260, "sequence": "27"}, {"point_id": 561, "sequence": "28"}, {"point_id": 562, "sequence": "29"}, {"point_id": 563, "sequence": "30"}, {"point_id": 261, "sequence": "31"}, {"point_id": 564, "sequence": "32"}, {"point_id": 208, "sequence": "33"}, {"point_id": 209, "sequence": "34"}, {"point_id": 210, "sequence": "35"}, {"point_id": 211, "sequence": "36"}, {"point_id": 212, "sequence": "37"}, {"point_id": 213, "sequence": "38"}, {"point_id": 188, "sequence": "39"}, {"point_id": 448, "sequence": "40"}]}, {"route": "16 to Uptown", "stops": [{"point_id": 215, "sequence": "1"}, {"point_id": 217, "sequence": "2"}, {"point_id": 220, "sequence": "3"}, {"point_id": 226, "sequence": "4"}, {"point_id": 229, "sequence": "5"}, {"point_id": 430, "sequence": "6"}, {"point_id": 236, "sequence": "7"}, {"point_id": 267, "sequence": "8"}]}, {"route": "17 to UVic", "stops": [{"point_id": 229, "sequence": "1"}, {"point_id": 430, "sequence": "2"}, {"point_id": 431, "sequence": "3"}, {"point_id": 617, "sequence": "4"}, {"point_id": 618, "sequence": "5"}, {"point_id": 619, "sequence": "6"}, {"point_id": 620, "sequence": "7"}, {"point_id": 621, "sequence": "8"}, {"point_id": 622, "sequence": "9"}, {"point_id": 623, "sequence": "10"}, {"point_id": 624, "sequence": "11"}, {"point_id": 271, "sequence": "12"}, {"point_id": 592, "sequence": "13"}, {"point_id": 593, "sequence": "14"}, {"point_id": 272, "sequence": "15"}, {"point_id": 594, "sequence": "16"}, {"point_id": 595, "sequence": "17"}, {"point_id": 596, "sequence": "18"}, {"point_id": 597, "sequence": "19"}, {"point_id": 512, "sequence": "20"}, {"point_id": 273, "sequence": "21"}, {"point_id": 317, "sequence": "22"}, {"point_id": 318, "sequence": "23"}, {"point_id": 274, "sequence": "24"}, {"point_id": 82, "sequence": "25"}, {"point_id": 83, "sequence": "26"}, {"point_id": 188, "sequence": "27"}, {"point_id": 80, "sequence": "28"}]}, {"route": "14 to UVic", "stops": [{"point_id": 143, "sequence": "1"}, {"point_id": 144, "sequence": "2"}, {"point_id": 145, "sequence": "3"}, {"point_id": 146, "sequence": "4"}, {"point_id": 147, "sequence": "5"}, {"point_id": 148, "sequence": "6"}, {"point_id": 149, "sequence": "7"}, {"point_id": 150, "sequence": "8"}, {"point_id": 151, "sequence": "9"}, {"point_id": 152, "sequence": "10"}, {"point_id": 153, "sequence": "11"}, {"point_id": 154, "sequence": "12"}, {"point_id": 155, "sequence": "13"}, {"point_id": 156, "sequence": "14"}, {"point_id": 157, "sequence": "15"}, {"point_id": 158, "sequence": "16"}, {"point_id": 159, "sequence": "17"}, {"point_id": 160, "sequence": "18"}, {"point_id": 161, "sequence": "19"}, {"point_id": 162, "sequence": "20"}, {"point_id": 163, "sequence": "21"}, {"point_id": 164, "sequence": "22"}, {"point_id": 165, "sequence": "23"}, {"point_id": 166, "sequence": "24"}, {"point_id": 167, "sequence": "25"}, {"point_id": 168, "sequence": "26"}, {"point_id": 169, "sequence": "27"}, {"point_id": 31, "sequence": "28"}, {"point_id": 32, "sequence": "29"}, {"point_id": 33, "sequence": "30"}, {"point_id": 34, "sequence": "31"}, {"point_id": 35, "sequence": "32"}, {"point_id": 36, "sequence": "33"}, {"point_id": 37, "sequence": "34"}, {"point_id": 38, "sequence": "35"}, {"point_id": 39, "sequence": "36"}, {"point_id": 40, "sequence": "37"}, {"point_id": 41, "sequence": "38"}, {"point_id": 42, "sequence": "39"}, {"point_id": 43, "sequence": "40"}, {"point_id": 44, "sequence": "41"}, {"point_id": 45, "sequence": "42"}, {"point_id": 46, "sequence": "43"}, {"point_id": 170, "sequence": "44"}, {"point_id": 171, "sequence": "45"}, {"point_id": 172, "sequence": "46"}, {"point_id": 173, "sequence": "47"}, {"point_id": 174, "sequence": "48"}, {"point_id": 175, "sequence": "49"}, {"point_id": 176, "sequence": "50"}, {"point_id": 177, "sequence": "51"}, {"point_id": 178, "sequence": "52"}, {"point_id": 179, "sequence": "53"}, {"point_id": 180, "sequence": "54"}, {"point_id": 181, "sequence": "55"}, {"point_id": 182, "sequence": "56"}, {"point_id": 183, "sequence": "57"}, {"point_id": 184, "sequence": "58"}, {"point_id": 185, "sequence": "59"}, {"point_id": 186, "sequence": "60"}, {"point_id": 187, "sequence": "61"}, {"point_id": 188, "sequence": "62"}, {"point_id": 81, "sequence": "63"}]}, {"route": "33 to UVic", "stops": [{"point_id": 625, "sequence": "1"}, {"point_id": 626, "sequence": "2"}, {"point_id": 627, "sequence": "3"}, {"point_id": 628, "sequence": "4"}, {"point_id": 629, "sequence": "5"}, {"point_id": 630, "sequence": "6"}, {"point_id": 631, "sequence": "7"}, {"point_id": 632, "sequence": "8"}, {"point_id": 633, "sequence": "9"}, {"point_id": 634, "sequence": "10"}, {"point_id": 635, "sequence": "11"}, {"point_id": 190, "sequence": "12"}, {"point_id": 191, "sequence": "13"}, {"point_id": 36, "sequence": "14"}, {"point_id": 37, "sequence": "15"}, {"point_id": 38, "sequence": "16"}, {"point_id": 39, "sequence": "17"}, {"point_id": 40, "sequence": "18"}, {"point_id": 41, "sequence": "19"}, {"point_id": 42, "sequence": "20"}, {"point_id": 43, "sequence": "21"}, {"point_id": 44, "sequence": "22"}, {"point_id": 45, "sequence": "23"}, {"point_id": 46, "sequence": "24"}, {"point_id": 170, "sequence": "25"}, {"point_id": 171, "sequence": "26"}, {"point_id": 172, "sequence": "27"}, {"point_id": 173, "sequence": "28"}, {"point_id": 174, "sequence": "29"}, {"point_id": 175, "sequence": "30"}, {"point_id": 176, "sequence": "31"}, {"point_id": 177, "sequence": "32"}, {"point_id": 178, "sequence": "33"}, {"point_id": 179, "sequence": "34"}, {"point_id": 180, "sequence": "35"}, {"point_id": 181, "sequence": "36"}, {"point_id": 182, "sequence": "37"}, {"point_id": 183, "sequence": "38"}, {"point_id": 184, "sequence": "39"}, {"point_id": 185, "sequence": "40"}, {"point_id": 186, "sequence": "41"}, {"point_id": 187, "sequence": "42"}, {"point_id": 188, "sequence": "43"}, {"point_id": 80, "sequence": "44"}]}, {"route": "4 to Downtown", "stops": [{"point_id": 214, "sequence": "1"}, {"point_id": 82, "sequence": "2"}, {"point_id": 83, "sequence": "3"}, {"point_id": 449, "sequence": "4"}, {"point_id": 450, "sequence": "5"}, {"point_id": 451, "sequence": "6"}, {"point_id": 452, "sequence": "7"}, {"point_id": 263, "sequence": "8"}, {"point_id": 522, "sequence": "9"}, {"point_id": 523, "sequence": "10"}, {"point_id": 524, "sequence": "11"}, {"point_id": 525, "sequence": "12"}, {"point_id": 526, "sequence": "13"}, {"point_id": 527, "sequence": "14"}, {"point_id": 528, "sequence": "15"}, {"point_id": 529, "sequence": "16"}, {"point_id": 530, "sequence": "17"}, {"point_id": 531, "sequence": "18"}, {"point_id": 532, "sequence": "19"}, {"point_id": 533, "sequence": "20"}, {"point_id": 534, "sequence": "21"}, {"point_id": 30, "sequence": "22"}, {"point_id": 31, "sequence": "23"}, {"point_id": 32, "sequence": "24"}, {"point_id": 33, "sequence": "25"}, {"point_id": 34, "sequence": "26"}, {"point_id": 35, "sequence": "27"}, {"point_id": 535, "sequence": "28"}, {"point_id": 189, "sequence": "29"}]}, {"route": "51 to UVic", "stops": [{"point_id": 447, "sequence": "1"}, {"point_id": 636, "sequence": "2"}, {"point_id": 637, "sequence": "3"}, {"point_id": 638, "sequence": "4"}, {"point_id": 639, "sequence": "5"}, {"point_id": 640, "sequence": "6"}, {"point_id": 641, "sequence": "7"}, {"point_id": 642, "sequence": "8"}, {"point_id": 643, "sequence": "9"}, {"point_id": 644, "sequence": "10"}, {"point_id": 277, "sequence": "11"}, {"point_id": 279, "sequence": "12"}, {"point_id": 280, "sequence": "13"}, {"point_id": 281, "sequence": "14"}, {"point_id": 645, "sequence": "15"}, {"point_id": 646, "sequence": "16"}, {"point_id": 647, "sequence": "17"}, {"point_id": 648, "sequence": "18"}, {"point_id": 649, "sequence": "19"}, {"point_id": 650, "sequence": "20"}, {"point_id": 270, "sequence": "21"}, {"point_id": 651, "sequence": "22"}, {"point_id": 271, "sequence": "23"}, {"point_id": 592, "sequence": "24"}, {"point_id": 593, "sequence": "25"}, {"point_id": 272, "sequence": "26"}, {"point_id": 594, "sequence": "27"}, {"point_id": 595, "sequence": "28"}, {"point_id": 596, "sequence": "29"}, {"point_id": 597, "sequence": "30"}, {"point_id": 512, "sequence": "31"}, {"point_id": 273, "sequence": "32"}, {"point_id": 317, "sequence": "33"}, {"point_id": 318, "sequence": "34"}, {"point_id": 274, "sequence": "35"}, {"point_id": 82, "sequence": "36"}, {"point_id": 83, "sequence": "37"}, {"point_id": 188, "sequence": "38"}, {"point_id": 429, "sequence": "39"}]}, {"route": "7 to Downtown", "stops": [{"point_id": 448, "sequence": "1"}, {"point_id": 82, "sequence": "2"}, {"point_id": 83, "sequence": "3"}, {"point_id": 449, "sequence": "4"}, {"point_id": 450, "sequence": "5"}, {"point_id": 451, "sequence": "6"}, {"point_id": 452, "sequence": "7"}, {"point_id": 263, "sequence": "8"}, {"point_id": 453, "sequence": "9"}, {"point_id": 454, "sequence": "10"}, {"point_id": 264, "sequence": "11"}, {"point_id": 455, "sequence": "12"}, {"point_id": 456, "sequence": "13"}, {"point_id": 457, "sequence": "14"}, {"point_id": 458, "sequence": "15"}, {"point_id": 459, "sequence": "16"}, {"point_id": 460, "sequence": "17"}, {"point_id": 461, "sequence": "18"}, {"point_id": 462, "sequence": "19"}, {"point_id": 463, "sequence": "20"}, {"point_id": 464, "sequence": "21"}, {"point_id": 465, "sequence": "22"}, {"point_id": 466, "sequence": "23"}, {"point_id": 467, "sequence": "24"}, {"point_id": 468, "sequence": "25"}, {"point_id": 469, "sequence": "26"}, {"point_id": 470, "sequence": "27"}, {"point_id": 471, "sequence": "28"}, {"point_id": 472, "sequence": "29"}, {"point_id": 473, "sequence": "30"}, {"point_id": 474, "sequence": "31"}, {"point_id": 475, "sequence": "32"}, {"point_id": 476, "sequence": "33"}, {"point_id": 477, "sequence": "34"}, {"point_id": 478, "sequence": "35"}, {"point_id": 479, "sequence": "36"}, {"point_id": 190, "sequence": "37"}, {"point_id": 191, "sequence": "38"}, {"point_id": 192, "sequence": "39"}, {"point_id": 111, "sequence": "40"}, {"point_id": 480, "sequence": "41"}]}, {"route": "11 to UVic", "stops": [{"point_id": 1, "sequence": "1"}, {"point_id": 2, "sequence": "2"}, {"point_id": 3, "sequence": "3"}, {"point_id": 4, "sequence": "4"}, {"point_id": 5, "sequence": "5"}, {"point_id": 6, "sequence": "6"}, {"point_id": 7, "sequence": "7"}, {"point_id": 8, "sequence": "8"}, {"point_id": 9, "sequence": "9"}, {"point_id": 10, "sequence": "10"}, {"point_id": 11, "sequence": "11"}, {"point_id": 12, "sequence": "12"}, {"point_id": 13, "sequence": "13"}, {"point_id": 14, "sequence": "14"}, {"point_id": 15, "sequence": "15"}, {"point_id": 16, "sequence": "16"}, {"point_id": 17, "sequence": "17"}, {"point_id": 18, "sequence": "18"}, {"point_id": 19, "sequence": "19"}, {"point_id": 20, "sequence": "20"}, {"point_id": 21, "sequence": "21"}, {"point_id": 22, "sequence": "22"}, {"point_id": 23, "sequence": "23"}, {"point_id": 24, "sequence": "24"}, {"point_id": 25, "sequence": "25"}, {"point_id": 26, "sequence": "26"}, {"point_id": 27, "sequence": "27"}, {"point_id": 28, "sequence": "28"}, {"point_id": 29, "sequence": "29"}, {"point_id": 30, "sequence": "30"}, {"point_id": 31, "sequence": "31"}, {"point_id": 32, "sequence": "32"}, {"point_id": 33, "sequence": "33"}, {"point_id": 34, "sequence": "34"}, {"point_id": 35, "sequence": "35"}, {"point_id": 36, "sequence": "36"}, {"point_id": 37, "sequence": "37"}, {"point_id": 38, "sequence": "38"}, {"point_id": 39, "sequence": "39"}, {"point_id": 40, "sequence": "40"}, {"point_id": 41, "sequence": "41"}, {"point_id": 42, "sequence": "42"}, {"point_id": 43, "sequence": "43"}, {"point_id": 44, "sequence": "44"}, {"point_id": 45, "sequence": "45"}, {"point_id": 46, "sequence": "46"}, {"point_id": 47, "sequence": "47"}, {"point_id": 48, "sequence": "48"}, {"point_id": 49, "sequence": "49"}, {"point_id": 50, "sequence": "50"}, {"point_id": 51, "sequence": "51"}, {"point_id": 52, "sequence": "52"}, {"point_id": 53, "sequence": "53"}, {"point_id": 54, "sequence": "54"}, {"point_id": 55, "sequence": "55"}, {"point_id": 56, "sequence": "56"}, {"point_id": 57, "sequence": "57"}, {"point_id": 58, "sequence": "58"}, {"point_id": 59, "sequence": "59"}, {"point_id": 60, "sequence": "60"}, {"point_id": 61, "sequence": "61"}, {"point_id": 62, "sequence": "62"}, {"point_id": 63, "sequence": "63"}, {"point_id": 64, "sequence": "64"}, {"point_id": 65, "sequence": "65"}, {"point_id": 66, "sequence": "66"}, {"point_id": 67, "sequence": "67"}, {"point_id": 68, "sequence": "68"}, {"point_id": 69, "sequence": "69"}, {"point_id": 70, "sequence": "70"}, {"point_id": 71, "sequence": "71"}, {"point_id": 72, "sequence": "72"}, {"point_id": 73, "sequence": "73"}, {"point_id": 74, "sequence": "74"}, {"point_id": 75, "sequence": "75"}, {"point_id": 76, "sequence": "76"}, {"point_id": 77, "sequence": "77"}, {"point_id": 78, "sequence": "78"}, {"point_id": 79, "sequence": "79"}, {"point_id": 80, "sequence": "80"}]}, {"route": "15 to UVic", "stops": [{"point_id": 35, "sequence": "1"}, {"point_id": 36, "sequence": "2"}, {"point_id": 38, "sequence": "3"}, {"point_id": 40, "sequence": "4"}, {"point_id": 42, "sequence": "5"}, {"point_id": 45, "sequence": "6"}, {"point_id": 47, "sequence": "7"}, {"point_id": 260, "sequence": "8"}, {"point_id": 261, "sequence": "9"}, {"point_id": 208, "sequence": "10"}, {"point_id": 188, "sequence": "11"}, {"point_id": 262, "sequence": "12"}]}, {"route": "18 to UVic", "stops": [{"point_id": 676, "sequence": "1"}, {"point_id": 677, "sequence": "2"}, {"point_id": 678, "sequence": "3"}, {"point_id": 679, "sequence": "4"}, {"point_id": 680, "sequence": "5"}, {"point_id": 681, "sequence": "6"}, {"point_id": 682, "sequence": "7"}, {"point_id": 683, "sequence": "8"}, {"point_id": 684, "sequence": "9"}, {"point_id": 271, "sequence": "10"}, {"point_id": 592, "sequence": "11"}, {"point_id": 593, "sequence": "12"}, {"point_id": 272, "sequence": "13"}, {"point_id": 594, "sequence": "14"}, {"point_id": 595, "sequence": "15"}, {"point_id": 596, "sequence": "16"}, {"point_id": 597, "sequence": "17"}, {"point_id": 512, "sequence": "18"}, {"point_id": 273, "sequence": "19"}, {"point_id": 317, "sequence": "20"}, {"point_id": 318, "sequence": "21"}, {"point_id": 274, "sequence": "22"}, {"point_id": 82, "sequence": "23"}, {"point_id": 83, "sequence": "24"}, {"point_id": 188, "sequence": "25"}, {"point_id": 80, "sequence": "26"}]}, {"route": "15 to Downtown", "stops": [{"point_id": 262, "sequence": "1"}, {"point_id": 83, "sequence": "2"}, {"point_id": 263, "sequence": "3"}, {"point_id": 264, "sequence": "4"}, {"point_id": 265, "sequence": "5"}, {"point_id": 266, "sequence": "6"}, {"point_id": 104, "sequence": "7"}, {"point_id": 106, "sequence": "8"}, {"point_id": 108, "sequence": "9"}, {"point_id": 110, "sequence": "10"}, {"point_id": 35, "sequence": "11"}]}, {"route": "17 to Downtown", "stops": [{"point_id": 652, "sequence": "1"}, {"point_id": 653, "sequence": "2"}, {"point_id": 654, "sequence": "3"}, {"point_id": 655, "sequence": "4"}, {"point_id": 656, "sequence": "5"}, {"point_id": 226, "sequence": "6"}, {"point_id": 227, "sequence": "7"}, {"point_id": 228, "sequence": "8"}, {"point_id": 229, "sequence": "9"}, {"point_id": 430, "sequence": "10"}, {"point_id": 431, "sequence": "11"}, {"point_id": 617, "sequence": "12"}, {"point_id": 618, "sequence": "13"}, {"point_id": 619, "sequence": "14"}, {"point_id": 620, "sequence": "15"}, {"point_id": 621, "sequence": "16"}, {"point_id": 622, "sequence": "17"}, {"point_id": 623, "sequence": "18"}, {"point_id": 624, "sequence": "19"}, {"point_id": 657, "sequence": "20"}, {"point_id": 658, "sequence": "21"}, {"point_id": 659, "sequence": "22"}, {"point_id": 660, "sequence": "23"}, {"point_id": 661, "sequence": "24"}, {"point_id": 662, "sequence": "25"}, {"point_id": 663, "sequence": "26"}, {"point_id": 664, "sequence": "27"}, {"point_id": 665, "sequence": "28"}, {"point_id": 666, "sequence": "29"}, {"point_id": 667, "sequence": "30"}, {"point_id": 668, "sequence": "31"}, {"point_id": 669, "sequence": "32"}, {"point_id": 670, "sequence": "33"}, {"point_id": 671, "sequence": "34"}, {"point_id": 672, "sequence": "35"}, {"point_id": 673, "sequence": "36"}, {"point_id": 674, "sequence": "37"}, {"point_id": 675, "sequence": "38"}, {"point_id": 110, "sequence": "39"}, {"point_id": 35, "sequence": "40"}]}, {"route": "39 to UVic", "stops": [{"point_id": 275, "sequence": "1"}, {"point_id": 276, "sequence": "2"}, {"point_id": 277, "sequence": "3"}, {"point_id": 278, "sequence": "4"}, {"point_id": 279, "sequence": "5"}, {"point_id": 280, "sequence": "6"}, {"point_id": 281, "sequence": "7"}, {"point_id": 282, "sequence": "8"}, {"point_id": 283, "sequence": "9"}, {"point_id": 284, "sequence": "10"}, {"point_id": 135, "sequence": "11"}, {"point_id": 136, "sequence": "12"}, {"point_id": 137, "sequence": "13"}, {"point_id": 138, "sequence": "14"}, {"point_id": 139, "sequence": "15"}, {"point_id": 140, "sequence": "16"}, {"point_id": 141, "sequence": "17"}, {"point_id": 142, "sequence": "18"}, {"point_id": 143, "sequence": "19"}, {"point_id": 144, "sequence": "20"}, {"point_id": 145, "sequence": "21"}, {"point_id": 285, "sequence": "22"}, {"point_id": 286, "sequence": "23"}, {"point_id": 287, "sequence": "24"}, {"point_id": 288, "sequence": "25"}, {"point_id": 289, "sequence": "26"}, {"point_id": 290, "sequence": "27"}, {"point_id": 291, "sequence": "28"}, {"point_id": 292, "sequence": "29"}, {"point_id": 293, "sequence": "30"}, {"point_id": 294, "sequence": "31"}, {"point_id": 295, "sequence": "32"}, {"point_id": 296, "sequence": "33"}, {"point_id": 297, "sequence": "34"}, {"point_id": 298, "sequence": "35"}, {"point_id": 299, "sequence": "36"}, {"point_id": 300, "sequence": "37"}, {"point_id": 301, "sequence": "38"}, {"point_id": 302, "sequence": "39"}, {"point_id": 303, "sequence": "40"}, {"point_id": 304, "sequence": "41"}, {"point_id": 305, "sequence": "42"}, {"point_id": 306, "sequence": "43"}, {"point_id": 307, "sequence": "44"}, {"point_id": 308, "sequence": "45"}, {"point_id": 309, "sequence": "46"}, {"point_id": 310, "sequence": "47"}, {"point_id": 311, "sequence": "48"}, {"point_id": 312, "sequence": "49"}, {"point_id": 313, "sequence": "50"}, {"point_id": 314, "sequence": "51"}, {"point_id": 315, "sequence": "52"}, {"point_id": 316, "sequence": "53"}, {"point_id": 273, "sequence": "54"}, {"point_id": 317, "sequence": "55"}, {"point_id": 318, "sequence": "56"}, {"point_id": 274, "sequence": "57"}, {"point_id": 82, "sequence": "58"}, {"point_id": 83, "sequence": "59"}, {"point_id": 188, "sequence": "60"}, {"point_id": 319, "sequence": "61"}]}, {"route": "12 to University Heights", "stops": [{"point_id": 319, "sequence": "1"}, {"point_id": 366, "sequence": "2"}, {"point_id": 367, "sequence": "3"}, {"point_id": 368, "sequence": "4"}, {"point_id": 497, "sequence": "5"}, {"point_id": 498, "sequence": "6"}, {"point_id": 499, "sequence": "7"}, {"point_id": 500, "sequence": "8"}, {"point_id": 501, "sequence": "9"}, {"point_id": 502, "sequence": "10"}, {"point_id": 503, "sequence": "11"}, {"point_id": 504, "sequence": "12"}, {"point_id": 505, "sequence": "13"}, {"point_id": 506, "sequence": "14"}, {"point_id": 507, "sequence": "15"}, {"point_id": 508, "sequence": "16"}, {"point_id": 509, "sequence": "17"}, {"point_id": 510, "sequence": "18"}, {"point_id": 511, "sequence": "19"}, {"point_id": 512, "sequence": "20"}, {"point_id": 513, "sequence": "21"}, {"point_id": 481, "sequence": "22"}]}, {"route": "76 to Swartz Bay", "stops": [{"point_id": 319, "sequence": "1"}, {"point_id": 685, "sequence": "2"}]}], "stops": [{"lat": 48.46053822, "routes": ["14 to Vic General"], "lon": -123.3269578, "id": 86}, {"lat": 48.460471736, "routes": ["18 to UVic"], "lon": -123.360353042, "id": 681}, {"lat": 48.46848449, "routes": ["16 to UVic", "39 to UVic", "13 to Cadboro Bay", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3209082, "id": 274}, {"lat": 48.45193133, "routes": ["26 to Dockyard"], "lon": -123.3820495, "id": 239}, {"lat": 48.47924298, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.411429, "id": 350}, {"lat": 48.44828345, "routes": ["26 to UVic"], "lon": -123.3997507, "id": 577}, {"lat": 48.46597267, "routes": ["11 to UVic", "11 to Tillicum Mall", "29 to UVic", "17 to UVic", "33 to UVic", "18 to UVic"], "lon": -123.3095174, "id": 80}, {"lat": 48.47681527, "routes": ["12 to UVic"], "lon": -123.3062455, "id": 495}, {"lat": 48.4578482717, "routes": ["17 to Downtown"], "lon": -123.360081016, "id": 662}, {"lat": 48.47314505, "routes": ["29 to UVic"], "lon": -123.3208793, "id": 614}, {"lat": 48.45394477, "routes": ["26 to Dockyard"], "lon": -123.3746166, "id": 237}, {"lat": 48.47196658, "routes": ["26 to Dockyard", "51 to Langford", "16 to Uptown", "17 to Downtown"], "lon": -123.3518072, "id": 226}, {"lat": 48.45632348, "routes": ["11 to UVic"], "lon": -123.4132127, "id": 11}, {"lat": 48.44765574, "routes": ["11 to UVic"], "lon": -123.3991979, "id": 21}, {"lat": 48.44352604, "routes": ["11 to Tillicum Mall"], "lon": -123.3073557, "id": 391}, {"lat": 48.45470455, "routes": ["11 to UVic"], "lon": -123.4185672, "id": 13}, {"lat": 48.49163455, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4197571, "id": 344}, {"lat": 48.44468054, "routes": ["4 to Downtown"], "lon": -123.3361612, "id": 525}, {"lat": 48.44550541, "routes": ["14 to Vic General"], "lon": -123.3267628, "id": 94}, {"lat": 48.47969944, "routes": ["39 to UVic"], "lon": -123.4115874, "id": 288}, {"lat": 48.46895205, "routes": ["26 to Dockyard", "39 to Royal Oak/Camosun/West Exch", "51 to Langford", "13 to University Heights"], "lon": -123.3122317, "id": 216}, {"lat": 48.4170577, "routes": ["33 to UVic"], "lon": -123.3789424, "id": 630}, {"lat": 48.42593847, "routes": ["14 to Vic General", "15 to Downtown", "11 to Tillicum Mall", "17 to Downtown"], "lon": -123.3605507, "id": 110}, {"lat": 48.42155992, "routes": ["33 to UVic"], "lon": -123.3833113, "id": 625}, {"lat": 48.45174586, "routes": ["11 to Tillicum Mall"], "lon": -123.2996112, "id": 384}, {"lat": 48.43998925, "routes": ["11 to UVic"], "lon": -123.3125145, "id": 55}, {"lat": 48.4414046, "routes": ["14 to UVic"], "lon": -123.4013038, "id": 160}, {"lat": 48.46610595, "routes": ["4 to UVic", "4 to Downtown"], "lon": -123.3093438, "id": 214}, {"lat": 48.46012358, "routes": ["11 to UVic"], "lon": -123.298541, "id": 65}, {"lat": 48.45875413, "routes": ["39 to UVic", "51 to UVic"], "lon": -123.457555, "id": 281}, {"lat": 48.44367789, "routes": ["26 to Dockyard"], "lon": -123.4016923, "id": 247}, {"lat": 48.43526825, "routes": ["11 to UVic", "14 to UVic", "4 to Downtown"], "lon": -123.3654045, "id": 31}, {"lat": 48.46368758, "routes": ["14 to Vic General", "16 to UVic", "39 to UVic", "7 to Downtown", "4 to Downtown", "26 to UVic", "29 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3163375, "id": 82}, {"lat": 48.44447277, "routes": ["11 to Tillicum Mall"], "lon": -123.2969495, "id": 388}, {"lat": 48.41090715, "routes": ["7 to UVic"], "lon": -123.3458356, "id": 548}, {"lat": 48.47659455, "routes": ["12 to University Heights"], "lon": -123.3372731, "id": 509}, {"lat": 48.44877939, "routes": ["11 to UVic"], "lon": -123.40407, "id": 20}, {"lat": 48.48635598, "routes": ["39 to UVic"], "lon": -123.3375324, "id": 310}, {"lat": 48.44011318, "routes": ["4 to Downtown"], "lon": -123.3543685, "id": 531}, {"lat": 48.46192281, "routes": ["11 to Tillicum Mall", "13 to University Heights"], "lon": -123.2950957, "id": 379}, {"lat": 48.41604282, "routes": ["7 to UVic"], "lon": -123.3559565, "id": 541}, {"lat": 48.45790402, "routes": ["4 to UVic", "7 to UVic"], "lon": -123.3156775, "id": 213}, {"lat": 48.45860518, "routes": ["14 to Vic General", "39 to UVic"], "lon": -123.4349568, "id": 136}, {"lat": 48.42493379, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3412915, "id": 43}, {"lat": 48.45128942, "routes": ["11 to Tillicum Mall"], "lon": -123.4006062, "id": 427}, {"lat": 48.45082501, "routes": ["11 to Tillicum Mall"], "lon": -123.2978339, "id": 385}, {"lat": 48.43584355, "routes": ["51 to UVic"], "lon": -123.4947344, "id": 640}, {"lat": 48.45153422, "routes": ["17 to Downtown"], "lon": -123.3610691, "id": 664}, {"lat": 48.46019237, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4503189, "id": 358}, {"lat": 48.687504, "routes": ["76 to Swartz Bay"], "lon": -123.410615, "id": 685}, {"lat": 48.42626402, "routes": ["14 to Vic General", "15 to Downtown", "11 to Tillicum Mall"], "lon": -123.3377883, "id": 104}, {"lat": 48.46906287, "routes": ["26 to UVic"], "lon": -123.3708823, "id": 591}, {"lat": 48.4577248, "routes": ["13 to Cadboro Bay"], "lon": -123.2781098, "id": 520}, {"lat": 48.4685763, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3393559, "id": 597}, {"lat": 48.4808154, "routes": ["12 to UVic"], "lon": -123.3395151, "id": 485}, {"lat": 48.48081507, "routes": ["12 to University Heights"], "lon": -123.3136999, "id": 500}, {"lat": 48.47758298, "routes": ["39 to UVic", "29 to UVic"], "lon": -123.3338924, "id": 314}, {"lat": 48.44336731, "routes": ["11 to Tillicum Mall"], "lon": -123.3845386, "id": 406}, {"lat": 48.46624304, "routes": ["17 to Downtown"], "lon": -123.3477042, "id": 656}, {"lat": 48.48938931, "routes": ["39 to UVic"], "lon": -123.4181687, "id": 291}, {"lat": 48.43523646, "routes": ["51 to Langford"], "lon": -123.4919812, "id": 442}, {"lat": 48.47039016, "routes": ["26 to Dockyard", "51 to Langford", "17 to Downtown"], "lon": -123.3621456, "id": 228}, {"lat": 48.44162927, "routes": ["51 to Langford"], "lon": -123.4702671, "id": 438}, {"lat": 48.41799986, "routes": ["7 to UVic"], "lon": -123.3557461, "id": 540}, {"lat": 48.43223993, "routes": ["11 to UVic"], "lon": -123.3216411, "id": 49}, {"lat": 48.46851834, "routes": ["16 to UVic", "39 to UVic", "13 to Cadboro Bay", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3320518, "id": 273}, {"lat": 48.4668114, "routes": ["18 to UVic"], "lon": -123.3618962, "id": 683}, {"lat": 48.44326525, "routes": ["11 to UVic"], "lon": -123.3848784, "id": 25}, {"lat": 48.46021016, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.2855689, "id": 71}, {"lat": 48.44424457, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3268406, "id": 177}, {"lat": 48.48398853, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4145724, "id": 348}, {"lat": 48.43753808, "routes": ["14 to Vic General"], "lon": -123.3284101, "id": 98}, {"lat": 48.44281798, "routes": ["51 to Langford"], "lon": -123.5043068, "id": 446}, {"lat": 48.46163202, "routes": ["13 to University Heights"], "lon": -123.2985699, "id": 515}, {"lat": 48.45559296, "routes": ["14 to UVic"], "lon": -123.4404854, "id": 150}, {"lat": 48.45973326, "routes": ["13 to University Heights", "13 to Cadboro Bay"], "lon": -123.280344, "id": 514}, {"lat": 48.48092203, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4126341, "id": 349}, {"lat": 48.43905919, "routes": ["51 to Langford"], "lon": -123.504156, "id": 445}, {"lat": 48.43053055, "routes": ["17 to Downtown"], "lon": -123.3587469, "id": 673}, {"lat": 48.41540732, "routes": ["7 to UVic"], "lon": -123.3278331, "id": 554}, {"lat": 48.45231648, "routes": ["18 to UVic"], "lon": -123.3605852, "id": 678}, {"lat": 48.46677101, "routes": ["11 to Tillicum Mall"], "lon": -123.2961613, "id": 371}, {"lat": 48.49852666, "routes": ["39 to UVic"], "lon": -123.3931668, "id": 297}, {"lat": 48.47676561, "routes": ["29 to UVic"], "lon": -123.3229439, "id": 600}, {"lat": 48.49769618, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3739382, "id": 336}, {"lat": 48.46051852, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.2909418, "id": 69}, {"lat": 48.42575131, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "15 to Downtown", "4 to Downtown", "7 to UVic", "17 to Downtown"], "lon": -123.3651884, "id": 35}, {"lat": 48.42889801, "routes": ["26 to Dockyard"], "lon": -123.4245177, "id": 258}, {"lat": 48.42555852, "routes": ["14 to Vic General", "11 to Tillicum Mall"], "lon": -123.3571311, "id": 109}, {"lat": 48.47870638, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3820115, "id": 621}, {"lat": 48.43726368, "routes": ["11 to UVic"], "lon": -123.3127846, "id": 53}, {"lat": 48.46746779, "routes": ["51 to Langford"], "lon": -123.3845955, "id": 432}, {"lat": 48.41528134, "routes": ["7 to UVic"], "lon": -123.3309331, "id": 553}, {"lat": 48.43254383, "routes": ["11 to Tillicum Mall"], "lon": -123.3201041, "id": 399}, {"lat": 48.46903275, "routes": ["11 to UVic", "12 to UVic"], "lon": -123.3052487, "id": 79}, {"lat": 48.41922311, "routes": ["33 to UVic"], "lon": -123.365871, "id": 635}, {"lat": 48.43405363, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3289514, "id": 172}, {"lat": 48.42967182, "routes": ["11 to UVic", "15 to UVic"], "lon": -123.3296499, "id": 47}, {"lat": 48.43858975, "routes": ["4 to Downtown"], "lon": -123.3657857, "id": 534}, {"lat": 48.46126703, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.292392, "id": 68}, {"lat": 48.46455626, "routes": ["14 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4308462, "id": 146}, {"lat": 48.41180333, "routes": ["7 to UVic"], "lon": -123.3539833, "id": 544}, {"lat": 48.46691765, "routes": ["51 to UVic"], "lon": -123.3868134, "id": 648}, {"lat": 48.46916442, "routes": ["39 to UVic"], "lon": -123.4232937, "id": 285}, {"lat": 48.43008982, "routes": ["26 to Dockyard"], "lon": -123.4101491, "id": 254}, {"lat": 48.44682282, "routes": ["18 to UVic"], "lon": -123.3611697, "id": 676}, {"lat": 48.43217314, "routes": ["14 to Vic General", "4 to UVic", "11 to Tillicum Mall"], "lon": -123.3644051, "id": 113}, {"lat": 48.46683413, "routes": ["11 to UVic"], "lon": -123.2960529, "id": 75}, {"lat": 48.45925612, "routes": ["11 to Tillicum Mall"], "lon": -123.2996668, "id": 381}, {"lat": 48.43703515, "routes": ["51 to UVic"], "lon": -123.4865826, "id": 643}, {"lat": 48.44586694, "routes": ["39 to UVic", "51 to UVic"], "lon": -123.4664825, "id": 279}, {"lat": 48.45563884, "routes": ["11 to Tillicum Mall"], "lon": -123.4119016, "id": 423}, {"lat": 48.43380613, "routes": ["14 to Vic General", "4 to UVic", "11 to Tillicum Mall"], "lon": -123.364467, "id": 114}, {"lat": 48.46994942, "routes": ["26 to Dockyard", "51 to Langford", "16 to Uptown", "17 to UVic", "17 to Downtown"], "lon": -123.3660078, "id": 229}, {"lat": 48.48897678, "routes": ["39 to UVic"], "lon": -123.3379939, "id": 309}, {"lat": 48.4795761, "routes": ["39 to UVic", "29 to UVic"], "lon": -123.3354206, "id": 313}, {"lat": 48.44979004, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3254077, "id": 179}, {"lat": 48.45109074, "routes": ["16 to UVic", "16 to Uptown"], "lon": -123.3717425, "id": 267}, {"lat": 48.41801214, "routes": ["33 to UVic"], "lon": -123.371875, "id": 633}, {"lat": 48.41875717, "routes": ["33 to UVic"], "lon": -123.3771499, "id": 631}, {"lat": 48.45926733, "routes": ["39 to UVic"], "lon": -123.4453118, "id": 283}, {"lat": 48.50255267, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3593829, "id": 333}, {"lat": 48.44031823, "routes": ["11 to UVic"], "lon": -123.3727205, "id": 28}, {"lat": 48.45994851, "routes": ["14 to Vic General", "39 to UVic"], "lon": -123.4330931, "id": 137}, {"lat": 48.49806671, "routes": ["39 to UVic"], "lon": -123.380571, "id": 299}, {"lat": 48.4397938, "routes": ["4 to Downtown"], "lon": -123.3568132, "id": 532}, {"lat": 48.42290383, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3502445, "id": 41}, {"lat": 48.42994313, "routes": ["26 to UVic"], "lon": -123.4101679, "id": 570}, {"lat": 48.41309604, "routes": ["7 to UVic"], "lon": -123.3341133, "id": 552}, {"lat": 48.44578444, "routes": ["26 to UVic"], "lon": -123.4004753, "id": 576}, {"lat": 48.45207256, "routes": ["14 to Vic General"], "lon": -123.326324, "id": 91}, {"lat": 48.49985552, "routes": ["39 to UVic"], "lon": -123.3668595, "id": 303}, {"lat": 48.44376506, "routes": ["11 to UVic"], "lon": -123.3897049, "id": 23}, {"lat": 48.43622756, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3285448, "id": 173}, {"lat": 48.42921162, "routes": ["7 to UVic"], "lon": -123.322509, "id": 559}, {"lat": 48.46227303, "routes": ["11 to Tillicum Mall"], "lon": -123.2879578, "id": 374}, {"lat": 48.41585351, "routes": ["7 to UVic"], "lon": -123.3274723, "id": 555}, {"lat": 48.46931673, "routes": ["39 to Royal Oak/Camosun/West Exch", "29 to UVic"], "lon": -123.3325381, "id": 320}, {"lat": 48.4499026, "routes": ["26 to UVic"], "lon": -123.3839722, "id": 583}, {"lat": 48.43502256, "routes": ["17 to Downtown"], "lon": -123.3581464, "id": 671}, {"lat": 48.45027751, "routes": ["26 to UVic"], "lon": -123.3974649, "id": 578}, {"lat": 48.45460922, "routes": ["11 to UVic"], "lon": -123.3935648, "id": 2}, {"lat": 48.47753437, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3335827, "id": 323}, {"lat": 48.46889478, "routes": ["26 to Dockyard"], "lon": -123.3710415, "id": 230}, {"lat": 48.41609151, "routes": ["7 to Downtown"], "lon": -123.3499381, "id": 474}, {"lat": 48.42324758, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "33 to UVic"], "lon": -123.3534658, "id": 40}, {"lat": 48.46339422, "routes": ["14 to Vic General", "39 to UVic"], "lon": -123.4310912, "id": 138}, {"lat": 48.41862909, "routes": ["33 to UVic"], "lon": -123.385389, "id": 627}, {"lat": 48.45314389, "routes": ["26 to UVic"], "lon": -123.3920003, "id": 580}, {"lat": 48.46154983, "routes": ["51 to Langford"], "lon": -123.4028995, "id": 435}, {"lat": 48.48934496, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3377671, "id": 328}, {"lat": 48.4297448, "routes": ["26 to Dockyard"], "lon": -123.4074835, "id": 253}, {"lat": 48.4610564, "routes": ["26 to UVic"], "lon": -123.3690492, "id": 588}, {"lat": 48.42435983, "routes": ["4 to UVic", "7 to Downtown"], "lon": -123.3652539, "id": 192}, {"lat": 48.44721415, "routes": ["14 to Vic General"], "lon": -123.3263795, "id": 93}, {"lat": 48.4546204, "routes": ["11 to UVic"], "lon": -123.3006873, "id": 63}, {"lat": 48.45145665, "routes": ["11 to Tillicum Mall"], "lon": -123.4151999, "id": 417}, {"lat": 48.44224787, "routes": ["26 to UVic"], "lon": -123.4019401, "id": 574}, {"lat": 48.46732391, "routes": ["14 to Vic General", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4294329, "id": 140}, {"lat": 48.45015932, "routes": ["11 to UVic"], "lon": -123.4091076, "id": 18}, {"lat": 48.43565406, "routes": ["14 to Vic General"], "lon": -123.3853377, "id": 119}, {"lat": 48.42225419, "routes": ["7 to Downtown"], "lon": -123.322438, "id": 462}, {"lat": 48.44432062, "routes": ["11 to UVic"], "lon": -123.3094868, "id": 58}, {"lat": 48.49900811, "routes": ["39 to UVic"], "lon": -123.3889074, "id": 298}, {"lat": 48.43704768, "routes": ["26 to Dockyard"], "lon": -123.4026139, "id": 250}, {"lat": 48.43954535, "routes": ["14 to UVic"], "lon": -123.3934654, "id": 163}, {"lat": 48.45870211, "routes": ["39 to Royal Oak/Camosun/West Exch", "51 to Langford"], "lon": -123.4580678, "id": 359}, {"lat": 48.50134482, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.362595, "id": 334}, {"lat": 48.46923733, "routes": ["51 to UVic"], "lon": -123.3705171, "id": 651}, {"lat": 48.46340647, "routes": ["51 to UVic"], "lon": -123.4316347, "id": 645}, {"lat": 48.44532058, "routes": ["51 to Langford", "51 to UVic"], "lon": -123.5057369, "id": 447}, {"lat": 48.48231712, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3364527, "id": 325}, {"lat": 48.45519071, "routes": ["17 to Downtown"], "lon": -123.3597553, "id": 663}, {"lat": 48.45176961, "routes": ["14 to Vic General"], "lon": -123.4255646, "id": 132}, {"lat": 48.44440384, "routes": ["51 to UVic"], "lon": -123.5094814, "id": 636}, {"lat": 48.46265179, "routes": ["26 to UVic"], "lon": -123.3679756, "id": 589}, {"lat": 48.43595164, "routes": ["14 to Vic General"], "lon": -123.3684657, "id": 116}, {"lat": 48.41216263, "routes": ["7 to UVic"], "lon": -123.3368332, "id": 551}, {"lat": 48.46605393, "routes": ["14 to Vic General", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4335247, "id": 142}, {"lat": 48.50175213, "routes": ["39 to UVic"], "lon": -123.3608414, "id": 304}, {"lat": 48.43729481, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.461835, "id": 364}, {"lat": 48.44364589, "routes": ["17 to Downtown"], "lon": -123.3604803, "id": 667}, {"lat": 48.45934552, "routes": ["13 to Cadboro Bay"], "lon": -123.2758057, "id": 521}, {"lat": 48.44038727, "routes": ["4 to UVic"], "lon": -123.3511812, "id": 200}, {"lat": 48.45056743, "routes": ["14 to UVic"], "lon": -123.4239846, "id": 153}, {"lat": 48.48271219, "routes": ["12 to University Heights"], "lon": -123.3219125, "id": 502}, {"lat": 48.44156019, "routes": ["39 to UVic", "51 to UVic"], "lon": -123.4700454, "id": 277}, {"lat": 48.45812399, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3291055, "id": 183}, {"lat": 48.44341791, "routes": ["11 to UVic"], "lon": -123.3864881, "id": 24}, {"lat": 48.47818405, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3844679, "id": 620}, {"lat": 48.4654857, "routes": ["17 to Downtown"], "lon": -123.345623, "id": 655}, {"lat": 48.41112963, "routes": ["7 to UVic"], "lon": -123.3478386, "id": 547}, {"lat": 48.44837903, "routes": ["14 to Vic General"], "lon": -123.4173855, "id": 129}, {"lat": 48.4491728, "routes": ["14 to UVic"], "lon": -123.4200219, "id": 154}, {"lat": 48.42446409, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "33 to UVic"], "lon": -123.3645784, "id": 36}, {"lat": 48.44239038, "routes": ["4 to Downtown"], "lon": -123.3417501, "id": 527}, {"lat": 48.4816107, "routes": ["12 to University Heights"], "lon": -123.3167233, "id": 501}, {"lat": 48.43345617, "routes": ["11 to UVic"], "lon": -123.3158976, "id": 51}, {"lat": 48.46086635, "routes": ["11 to Tillicum Mall"], "lon": -123.2978955, "id": 380}, {"lat": 48.42966222, "routes": ["26 to Dockyard"], "lon": -123.4220232, "id": 257}, {"lat": 48.43410144, "routes": ["14 to Vic General"], "lon": -123.3809562, "id": 118}, {"lat": 48.42204398, "routes": ["4 to Downtown"], "lon": -123.3654479, "id": 535}, {"lat": 48.46045316, "routes": ["11 to Tillicum Mall", "13 to University Heights"], "lon": -123.2904318, "id": 377}, {"lat": 48.45300481, "routes": ["11 to UVic"], "lon": -123.4194035, "id": 14}, {"lat": 48.41450329, "routes": ["33 to UVic"], "lon": -123.381661, "id": 629}, {"lat": 48.43951448, "routes": ["39 to UVic"], "lon": -123.4769656, "id": 276}, {"lat": 48.43168543, "routes": ["11 to UVic", "14 to UVic", "4 to Downtown"], "lon": -123.3646985, "id": 33}, {"lat": 48.43127075, "routes": ["26 to UVic"], "lon": -123.4051493, "id": 571}, {"lat": 48.44130924, "routes": ["26 to Dockyard"], "lon": -123.4024364, "id": 248}, {"lat": 48.47901128, "routes": ["29 to UVic"], "lon": -123.3229317, "id": 601}, {"lat": 48.4731818, "routes": ["29 to UVic"], "lon": -123.3247485, "id": 613}, {"lat": 48.42994637, "routes": ["7 to Downtown"], "lon": -123.3226167, "id": 459}, {"lat": 48.45777977, "routes": ["7 to Downtown", "4 to Downtown"], "lon": -123.3158514, "id": 449}, {"lat": 48.45253223, "routes": ["14 to UVic"], "lon": -123.4285276, "id": 152}, {"lat": 48.43694835, "routes": ["14 to UVic"], "lon": -123.3885753, "id": 165}, {"lat": 48.44799533, "routes": ["4 to UVic", "15 to UVic", "7 to UVic"], "lon": -123.3203414, "id": 208}, {"lat": 48.46940304, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3792731, "id": 617}, {"lat": 48.46177683, "routes": ["14 to UVic", "4 to UVic", "15 to UVic", "16 to UVic", "39 to UVic", "7 to UVic", "26 to UVic", "29 to UVic", "17 to UVic", "33 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3083811, "id": 188}, {"lat": 48.50249106, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3440206, "id": 330}, {"lat": 48.45130097, "routes": ["4 to UVic", "7 to UVic"], "lon": -123.3160345, "id": 210}, {"lat": 48.43545616, "routes": ["7 to Downtown"], "lon": -123.3223511, "id": 457}, {"lat": 48.45079293, "routes": ["14 to Vic General"], "lon": -123.4241565, "id": 131}, {"lat": 48.42153293, "routes": ["7 to UVic"], "lon": -123.3653699, "id": 536}, {"lat": 48.45057844, "routes": ["11 to Tillicum Mall"], "lon": -123.4122598, "id": 416}, {"lat": 48.45004661, "routes": ["11 to Tillicum Mall"], "lon": -123.3982176, "id": 428}, {"lat": 48.43282424, "routes": ["17 to Downtown"], "lon": -123.3584426, "id": 672}, {"lat": 48.45333769, "routes": ["11 to Tillicum Mall"], "lon": -123.4200246, "id": 419}, {"lat": 48.49068166, "routes": ["29 to UVic"], "lon": -123.3217635, "id": 605}, {"lat": 48.43356716, "routes": ["11 to Tillicum Mall"], "lon": -123.317083, "id": 398}, {"lat": 48.48274813, "routes": ["12 to UVic"], "lon": -123.321317, "id": 491}, {"lat": 48.49049613, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4186992, "id": 345}, {"lat": 48.46976688, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3424308, "id": 596}, {"lat": 48.46191601, "routes": ["14 to Vic General", "15 to Downtown", "16 to UVic", "39 to UVic", "7 to Downtown", "4 to Downtown", "26 to UVic", "29 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.316041, "id": 83}, {"lat": 48.47760871, "routes": ["12 to University Heights"], "lon": -123.3064851, "id": 498}, {"lat": 48.45426155, "routes": ["11 to UVic", "11 to Tillicum Mall"], "lon": -123.3963297, "id": 1}, {"lat": 48.41817793, "routes": ["7 to UVic"], "lon": -123.3574302, "id": 539}, {"lat": 48.44132395, "routes": ["11 to Tillicum Mall"], "lon": -123.3118816, "id": 393}, {"lat": 48.45047996, "routes": ["26 to UVic"], "lon": -123.3868477, "id": 582}, {"lat": 48.44170273, "routes": ["15 to Downtown", "7 to Downtown"], "lon": -123.3220334, "id": 264}, {"lat": 48.4528555, "routes": ["11 to Tillicum Mall"], "lon": -123.4036529, "id": 426}, {"lat": 48.46846702, "routes": ["51 to Langford", "17 to UVic", "17 to Downtown"], "lon": -123.3784292, "id": 431}, {"lat": 48.47000001, "routes": ["16 to UVic", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3638868, "id": 271}, {"lat": 48.41204099, "routes": ["7 to Downtown"], "lon": -123.3410224, "id": 470}, {"lat": 48.41758995, "routes": ["7 to Downtown"], "lon": -123.3537503, "id": 476}, {"lat": 48.44152034, "routes": ["11 to UVic"], "lon": -123.3758412, "id": 27}, {"lat": 48.45433155, "routes": ["18 to UVic"], "lon": -123.3598637, "id": 679}, {"lat": 48.47176207, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3464048, "id": 594}, {"lat": 48.41939233, "routes": ["33 to UVic"], "lon": -123.3760338, "id": 632}, {"lat": 48.49865942, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3821485, "id": 337}, {"lat": 48.44249954, "routes": ["14 to UVic"], "lon": -123.4040285, "id": 159}, {"lat": 48.42995402, "routes": ["14 to Vic General", "4 to UVic", "11 to Tillicum Mall"], "lon": -123.3643095, "id": 112}, {"lat": 48.46871792, "routes": ["26 to Dockyard", "51 to Langford"], "lon": -123.3358719, "id": 221}, {"lat": 48.46869629, "routes": ["26 to Dockyard", "39 to Royal Oak/Camosun/West Exch", "51 to Langford", "13 to University Heights"], "lon": -123.3295203, "id": 219}, {"lat": 48.44405538, "routes": ["14 to Vic General"], "lon": -123.3270769, "id": 95}, {"lat": 48.47261402, "routes": ["39 to UVic"], "lon": -123.4184669, "id": 286}, {"lat": 48.44732765, "routes": ["11 to Tillicum Mall"], "lon": -123.3971573, "id": 411}, {"lat": 48.44460765, "routes": ["11 to Tillicum Mall"], "lon": -123.3052127, "id": 390}, {"lat": 48.46873836, "routes": ["18 to UVic"], "lon": -123.3634122, "id": 684}, {"lat": 48.46686587, "routes": ["51 to Langford"], "lon": -123.3891811, "id": 433}, {"lat": 48.45333882, "routes": ["11 to UVic", "26 to Dockyard"], "lon": -123.3943627, "id": 3}, {"lat": 48.49421501, "routes": ["39 to UVic"], "lon": -123.4117929, "id": 294}, {"lat": 48.43881537, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4654977, "id": 363}, {"lat": 48.46646679, "routes": ["26 to UVic"], "lon": -123.3689252, "id": 590}, {"lat": 48.46638207, "routes": ["39 to UVic", "39 to Royal Oak/Camosun/West Exch", "12 to UVic", "12 to University Heights", "13 to University Heights", "13 to Cadboro Bay", "76 to Swartz Bay"], "lon": -123.3086325, "id": 319}, {"lat": 48.44874943, "routes": ["17 to Downtown"], "lon": -123.3619376, "id": 665}, {"lat": 48.43024432, "routes": ["26 to Dockyard"], "lon": -123.4132721, "id": 255}, {"lat": 48.45245079, "routes": ["11 to Tillicum Mall"], "lon": -123.4177987, "id": 418}, {"lat": 48.4800965, "routes": ["12 to University Heights"], "lon": -123.3398512, "id": 508}, {"lat": 48.47595912, "routes": ["29 to UVic"], "lon": -123.328008, "id": 598}, {"lat": 48.46869973, "routes": ["26 to Dockyard", "39 to Royal Oak/Camosun/West Exch", "51 to Langford", "13 to University Heights", "16 to Uptown"], "lon": -123.3208867, "id": 217}, {"lat": 48.4405129706, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.466697918, "id": 362}, {"lat": 48.41230815, "routes": ["7 to Downtown"], "lon": -123.3433958, "id": 471}, {"lat": 48.45025577, "routes": ["11 to UVic"], "lon": -123.3983051, "id": 5}, {"lat": 48.45398363, "routes": ["11 to UVic"], "lon": -123.4055914, "id": 8}, {"lat": 48.44805293, "routes": ["26 to Dockyard"], "lon": -123.4003271, "id": 245}, {"lat": 48.41899325, "routes": ["7 to UVic"], "lon": -123.324086, "id": 556}, {"lat": 48.45740328, "routes": ["11 to Tillicum Mall"], "lon": -123.3003974, "id": 382}, {"lat": 48.46854768, "routes": ["12 to University Heights", "13 to Cadboro Bay", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3348255, "id": 512}, {"lat": 48.44381539, "routes": ["4 to UVic"], "lon": -123.3376696, "id": 204}, {"lat": 48.44595259, "routes": ["17 to Downtown"], "lon": -123.3611636, "id": 666}, {"lat": 48.4675308, "routes": ["51 to UVic"], "lon": -123.3822593, "id": 649}, {"lat": 48.43741884, "routes": ["14 to Vic General"], "lon": -123.3888193, "id": 120}, {"lat": 48.47107313, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3809865, "id": 618}, {"lat": 48.50018563, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4032339, "id": 340}, {"lat": 48.48226146, "routes": ["12 to University Heights"], "lon": -123.3277809, "id": 504}, {"lat": 48.4759708, "routes": ["29 to UVic"], "lon": -123.3252358, "id": 599}, {"lat": 48.50338845, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3495486, "id": 331}, {"lat": 48.48281601, "routes": ["12 to UVic"], "lon": -123.3303022, "id": 488}, {"lat": 48.47281938, "routes": ["29 to UVic"], "lon": -123.3263127, "id": 612}, {"lat": 48.45314723, "routes": ["14 to Vic General"], "lon": -123.3267574, "id": 90}, {"lat": 48.4891003, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4180489, "id": 346}, {"lat": 48.47208466, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4189837, "id": 353}, {"lat": 48.43453006, "routes": ["11 to Tillicum Mall"], "lon": -123.3131542, "id": 397}, {"lat": 48.46326517, "routes": ["17 to Downtown"], "lon": -123.338633, "id": 653}, {"lat": 48.43010354, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3298387, "id": 170}, {"lat": 48.46284195, "routes": ["26 to Dockyard"], "lon": -123.36806, "id": 232}, {"lat": 48.45774173, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4434147, "id": 356}, {"lat": 48.45225753, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3262336, "id": 180}, {"lat": 48.45495977, "routes": ["26 to Dockyard", "16 to Uptown"], "lon": -123.3729299, "id": 236}, {"lat": 48.44582986, "routes": ["4 to UVic"], "lon": -123.3326306, "id": 206}, {"lat": 48.41575793, "routes": ["7 to Downtown"], "lon": -123.3276032, "id": 465}, {"lat": 48.43854429, "routes": ["11 to UVic"], "lon": -123.3680963, "id": 29}, {"lat": 48.45254812, "routes": ["39 to Royal Oak/Camosun/West Exch", "51 to Langford"], "lon": -123.4631438, "id": 360}, {"lat": 48.4659831, "routes": ["11 to UVic"], "lon": -123.2945017, "id": 74}, {"lat": 48.48009926, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3355959, "id": 324}, {"lat": 48.43147558, "routes": ["11 to Tillicum Mall"], "lon": -123.326162, "id": 400}, {"lat": 48.43681276, "routes": ["51 to UVic"], "lon": -123.4985549, "id": 639}, {"lat": 48.44032563, "routes": ["11 to Tillicum Mall"], "lon": -123.3722734, "id": 403}, {"lat": 48.42580221, "routes": ["7 to Downtown"], "lon": -123.3227836, "id": 461}, {"lat": 48.4829457, "routes": ["12 to University Heights"], "lon": -123.3302314, "id": 505}, {"lat": 48.44558654, "routes": ["14 to UVic"], "lon": -123.410433, "id": 157}, {"lat": 48.46626733, "routes": ["14 to Vic General", "14 to UVic"], "lon": -123.3091658, "id": 81}, {"lat": 48.44427749, "routes": ["14 to Vic General"], "lon": -123.4074487, "id": 126}, {"lat": 48.46039463, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.327896, "id": 185}, {"lat": 48.46594935, "routes": ["51 to Langford", "51 to UVic"], "lon": -123.3092134, "id": 429}, {"lat": 48.4666545, "routes": ["17 to Downtown"], "lon": -123.3359129, "id": 652}, {"lat": 48.4491338, "routes": ["11 to UVic"], "lon": -123.406171, "id": 19}, {"lat": 48.48142457, "routes": ["12 to University Heights"], "lon": -123.3227179, "id": 503}, {"lat": 48.41877681, "routes": ["7 to Downtown"], "lon": -123.3245309, "id": 464}, {"lat": 48.43661366, "routes": ["11 to Tillicum Mall"], "lon": -123.3130296, "id": 396}, {"lat": 48.45315851, "routes": ["26 to Dockyard"], "lon": -123.3916226, "id": 243}, {"lat": 48.44620785, "routes": ["4 to Downtown"], "lon": -123.3275611, "id": 522}, {"lat": 48.45367578, "routes": ["14 to Vic General"], "lon": -123.4370551, "id": 134}, {"lat": 48.4493045, "routes": ["18 to UVic"], "lon": -123.361641, "id": 677}, {"lat": 48.45256662, "routes": ["26 to UVic"], "lon": -123.3762038, "id": 585}, {"lat": 48.43880515, "routes": ["11 to Tillicum Mall"], "lon": -123.3128056, "id": 395}, {"lat": 48.4300972, "routes": ["26 to UVic"], "lon": -123.4139377, "id": 569}, {"lat": 48.43579771, "routes": ["14 to Vic General"], "lon": -123.3659807, "id": 115}, {"lat": 48.46650462, "routes": ["51 to Langford"], "lon": -123.3934964, "id": 434}, {"lat": 48.44923398, "routes": ["11 to Tillicum Mall"], "lon": -123.4063837, "id": 414}, {"lat": 48.43755928, "routes": ["7 to UVic"], "lon": -123.322061, "id": 562}, {"lat": 48.44481095, "routes": ["4 to UVic"], "lon": -123.3351918, "id": 205}, {"lat": 48.44304012, "routes": ["11 to UVic"], "lon": -123.3821491, "id": 26}, {"lat": 48.42983248, "routes": ["26 to UVic"], "lon": -123.4165852, "id": 568}, {"lat": 48.46824122, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4246978, "id": 354}, {"lat": 48.47217748, "routes": ["29 to UVic"], "lon": -123.3174066, "id": 615}, {"lat": 48.44784728, "routes": ["11 to Tillicum Mall"], "lon": -123.3994255, "id": 412}, {"lat": 48.46438807, "routes": ["15 to UVic", "15 to Downtown"], "lon": -123.3083656, "id": 262}, {"lat": 48.45264887, "routes": ["7 to Downtown", "4 to Downtown"], "lon": -123.315456, "id": 451}, {"lat": 48.47379794, "routes": ["12 to University Heights"], "lon": -123.3037472, "id": 497}, {"lat": 48.49845687, "routes": ["39 to UVic"], "lon": -123.3695313, "id": 302}, {"lat": 48.41319284, "routes": ["7 to Downtown"], "lon": -123.3342227, "id": 468}, {"lat": 48.44026417, "routes": ["14 to Vic General"], "lon": -123.3954221, "id": 122}, {"lat": 48.45229552, "routes": ["26 to Dockyard"], "lon": -123.3900443, "id": 242}, {"lat": 48.43923369, "routes": ["14 to Vic General"], "lon": -123.3281263, "id": 97}, {"lat": 48.44209, "routes": ["11 to Tillicum Mall"], "lon": -123.3102778, "id": 392}, {"lat": 48.47497035, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3835188, "id": 619}, {"lat": 48.4408278, "routes": ["4 to Downtown"], "lon": -123.3497189, "id": 529}, {"lat": 48.46071352, "routes": ["26 to Dockyard"], "lon": -123.3690839, "id": 233}, {"lat": 48.44340345, "routes": ["11 to UVic"], "lon": -123.3113502, "id": 57}, {"lat": 48.43737778, "routes": ["7 to Downtown"], "lon": -123.3222745, "id": 456}, {"lat": 48.4333897, "routes": ["26 to UVic"], "lon": -123.4036667, "id": 572}, {"lat": 48.47670911, "routes": ["12 to UVic"], "lon": -123.3371679, "id": 484}, {"lat": 48.44103115, "routes": ["4 to UVic"], "lon": -123.3454387, "id": 202}, {"lat": 48.49143903, "routes": ["29 to UVic"], "lon": -123.324659, "id": 606}, {"lat": 48.45444056, "routes": ["11 to Tillicum Mall"], "lon": -123.4088374, "id": 424}, {"lat": 48.49210694, "routes": ["29 to UVic"], "lon": -123.3288545, "id": 607}, {"lat": 48.4431734, "routes": ["11 to Tillicum Mall"], "lon": -123.3815805, "id": 405}, {"lat": 48.45154202, "routes": ["11 to UVic", "26 to Dockyard"], "lon": -123.3963383, "id": 4}, {"lat": 48.45737524, "routes": ["11 to UVic"], "lon": -123.3001969, "id": 64}, {"lat": 48.42989678, "routes": ["15 to Downtown", "11 to Tillicum Mall"], "lon": -123.3295598, "id": 266}, {"lat": 48.45777737, "routes": ["39 to UVic"], "lon": -123.4435553, "id": 284}, {"lat": 48.46403711, "routes": ["13 to University Heights"], "lon": -123.3028496, "id": 516}, {"lat": 48.42471252, "routes": ["14 to Vic General", "11 to Tillicum Mall"], "lon": -123.348877, "id": 107}, {"lat": 48.46568823, "routes": ["17 to Downtown"], "lon": -123.3611838, "id": 659}, {"lat": 48.43581744, "routes": ["14 to UVic"], "lon": -123.3693405, "id": 169}, {"lat": 48.47553233, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4123878, "id": 351}, {"lat": 48.45176076, "routes": ["26 to UVic"], "lon": -123.3893365, "id": 581}, {"lat": 48.47947915, "routes": ["12 to UVic"], "lon": -123.3091601, "id": 494}, {"lat": 48.42388124, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "33 to UVic"], "lon": -123.3592022, "id": 38}, {"lat": 48.41710257, "routes": ["7 to Downtown"], "lon": -123.3524714, "id": 475}, {"lat": 48.42366812, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3572201, "id": 39}, {"lat": 48.45283178, "routes": ["11 to UVic"], "lon": -123.4033579, "id": 7}, {"lat": 48.45627567, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3281889, "id": 182}, {"lat": 48.4681024, "routes": ["11 to UVic"], "lon": -123.2982508, "id": 76}, {"lat": 48.46620919, "routes": ["7 to Downtown", "7 to UVic"], "lon": -123.3088333, "id": 448}, {"lat": 48.44124858, "routes": ["4 to Downtown"], "lon": -123.3446875, "id": 528}, {"lat": 48.45925288, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4451113, "id": 357}, {"lat": 48.45558924, "routes": ["11 to UVic"], "lon": -123.4166879, "id": 12}, {"lat": 48.41211888, "routes": ["7 to UVic"], "lon": -123.356937, "id": 543}, {"lat": 48.47230957, "routes": ["39 to UVic"], "lon": -123.332761, "id": 316}, {"lat": 48.44223459, "routes": ["4 to UVic"], "lon": -123.3416289, "id": 203}, {"lat": 48.44010147, "routes": ["14 to UVic"], "lon": -123.3953865, "id": 162}, {"lat": 48.42966285, "routes": ["26 to UVic"], "lon": -123.4208129, "id": 567}, {"lat": 48.4700072, "routes": ["11 to UVic", "12 to UVic"], "lon": -123.3040473, "id": 78}, {"lat": 48.43892068, "routes": ["4 to UVic"], "lon": -123.3623788, "id": 196}, {"lat": 48.42020572, "routes": ["7 to Downtown"], "lon": -123.3607401, "id": 479}, {"lat": 48.45090208, "routes": ["11 to UVic"], "lon": -123.4144036, "id": 16}, {"lat": 48.44685188, "routes": ["11 to Tillicum Mall"], "lon": -123.3954105, "id": 410}, {"lat": 48.41834753, "routes": ["7 to Downtown"], "lon": -123.3580035, "id": 478}, {"lat": 48.47580971, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3729874, "id": 623}, {"lat": 48.42332712, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "33 to UVic"], "lon": -123.3460551, "id": 42}, {"lat": 48.46149769, "routes": ["51 to UVic"], "lon": -123.4025612, "id": 646}, {"lat": 48.46874895, "routes": ["26 to Dockyard", "51 to Langford"], "lon": -123.340219, "id": 222}, {"lat": 48.41399862, "routes": ["7 to Downtown"], "lon": -123.3456395, "id": 472}, {"lat": 48.43339174, "routes": ["14 to Vic General"], "lon": -123.3293392, "id": 100}, {"lat": 48.48404823, "routes": ["39 to UVic"], "lon": -123.4143867, "id": 289}, {"lat": 48.46853874, "routes": ["39 to UVic", "13 to Cadboro Bay", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3280102, "id": 317}, {"lat": 48.46803028, "routes": ["12 to University Heights", "13 to University Heights"], "lon": -123.3329105, "id": 513}, {"lat": 48.43548307, "routes": ["51 to Langford"], "lon": -123.4899733, "id": 441}, {"lat": 48.46063297, "routes": ["14 to Vic General"], "lon": -123.3220685, "id": 85}, {"lat": 48.42122238, "routes": ["4 to UVic", "4 to Downtown"], "lon": -123.3633622, "id": 189}, {"lat": 48.46547192, "routes": ["13 to University Heights"], "lon": -123.3053894, "id": 517}, {"lat": 48.44972594, "routes": ["26 to Dockyard"], "lon": -123.3983737, "id": 244}, {"lat": 48.43320391, "routes": ["11 to UVic", "14 to UVic", "4 to Downtown"], "lon": -123.3647541, "id": 32}, {"lat": 48.43214688, "routes": ["15 to Downtown", "11 to Tillicum Mall"], "lon": -123.322911, "id": 265}, {"lat": 48.45976084, "routes": ["39 to UVic"], "lon": -123.4491555, "id": 282}, {"lat": 48.48404604, "routes": ["12 to University Heights", "29 to UVic"], "lon": -123.3342975, "id": 506}, {"lat": 48.50331601, "routes": ["39 to UVic"], "lon": -123.3564053, "id": 305}, {"lat": 48.44888507, "routes": ["11 to Tillicum Mall"], "lon": -123.2946767, "id": 386}, {"lat": 48.49588858, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3358469, "id": 329}, {"lat": 48.43766558, "routes": ["17 to Downtown"], "lon": -123.3587939, "id": 670}, {"lat": 48.44004032, "routes": ["11 to Tillicum Mall"], "lon": -123.3126408, "id": 394}, {"lat": 48.44997603, "routes": ["14 to Vic General"], "lon": -123.3256293, "id": 92}, {"lat": 48.44576511, "routes": ["11 to Tillicum Mall"], "lon": -123.3934555, "id": 409}, {"lat": 48.42670168, "routes": ["14 to Vic General", "4 to UVic", "11 to Tillicum Mall", "7 to Downtown"], "lon": -123.3646564, "id": 111}, {"lat": 48.43835275, "routes": ["51 to UVic"], "lon": -123.5079625, "id": 638}, {"lat": 48.45813614, "routes": ["26 to UVic"], "lon": -123.3687761, "id": 587}, {"lat": 48.460436, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3216864, "id": 186}, {"lat": 48.49296278, "routes": ["39 to UVic"], "lon": -123.4142323, "id": 293}, {"lat": 48.46957279, "routes": ["11 to Tillicum Mall"], "lon": -123.3012412, "id": 369}, {"lat": 48.46370085, "routes": ["11 to UVic"], "lon": -123.2903796, "id": 73}, {"lat": 48.45272978, "routes": ["26 to Dockyard"], "lon": -123.3763883, "id": 238}, {"lat": 48.42099202, "routes": ["4 to UVic", "7 to Downtown", "33 to UVic"], "lon": -123.3661127, "id": 190}, {"lat": 48.49437517, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4117369, "id": 342}, {"lat": 48.43874153, "routes": ["11 to Tillicum Mall"], "lon": -123.3681997, "id": 401}, {"lat": 48.45994683, "routes": ["17 to Downtown"], "lon": -123.3605934, "id": 661}, {"lat": 48.47215849, "routes": ["26 to Dockyard", "51 to Langford"], "lon": -123.3475558, "id": 225}, {"lat": 48.47017302, "routes": ["29 to UVic"], "lon": -123.3181801, "id": 616}, {"lat": 48.44075998, "routes": ["14 to UVic"], "lon": -123.39917, "id": 161}, {"lat": 48.44437229, "routes": ["11 to Tillicum Mall"], "lon": -123.3011735, "id": 389}, {"lat": 48.42857229, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3324021, "id": 46}, {"lat": 48.43251189, "routes": ["11 to UVic"], "lon": -123.3192626, "id": 50}, {"lat": 48.43905179, "routes": ["14 to Vic General"], "lon": -123.3916157, "id": 121}, {"lat": 48.46123762, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.2971819, "id": 66}, {"lat": 48.43659493, "routes": ["11 to UVic", "4 to Downtown"], "lon": -123.3661146, "id": 30}, {"lat": 48.43910395, "routes": ["17 to Downtown"], "lon": -123.3591947, "id": 669}, {"lat": 48.48522673, "routes": ["29 to UVic"], "lon": -123.3202155, "id": 603}, {"lat": 48.44051869, "routes": ["7 to UVic"], "lon": -123.3218828, "id": 563}, {"lat": 48.43974155, "routes": ["4 to UVic"], "lon": -123.3560061, "id": 198}, {"lat": 48.4557074, "routes": ["11 to Tillicum Mall"], "lon": -123.4156067, "id": 421}, {"lat": 48.45971045, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.329884, "id": 184}, {"lat": 48.44851199, "routes": ["11 to Tillicum Mall"], "lon": -123.403212, "id": 413}, {"lat": 48.4868834, "routes": ["39 to UVic"], "lon": -123.4155156, "id": 290}, {"lat": 48.45364266, "routes": ["14 to UVic"], "lon": -123.4372523, "id": 151}, {"lat": 48.43774994, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3282398, "id": 174}, {"lat": 48.47152696, "routes": ["26 to Dockyard", "51 to Langford", "17 to Downtown"], "lon": -123.3548225, "id": 227}, {"lat": 48.45637877, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.441525, "id": 355}, {"lat": 48.43412873, "routes": ["14 to UVic"], "lon": -123.3813399, "id": 167}, {"lat": 48.47159599, "routes": ["26 to Dockyard", "51 to Langford"], "lon": -123.3446396, "id": 224}, {"lat": 48.49920683, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3887084, "id": 338}, {"lat": 48.45621925, "routes": ["11 to Tillicum Mall"], "lon": -123.413604, "id": 422}, {"lat": 48.43077541, "routes": ["7 to UVic"], "lon": -123.322373, "id": 560}, {"lat": 48.42591031, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3382742, "id": 44}, {"lat": 48.45933461, "routes": ["13 to Cadboro Bay"], "lon": -123.2817347, "id": 519}, {"lat": 48.4400477, "routes": ["7 to Downtown"], "lon": -123.3221117, "id": 455}, {"lat": 48.44356449, "routes": ["4 to Downtown"], "lon": -123.3388071, "id": 526}, {"lat": 48.41815264, "routes": ["7 to Downtown"], "lon": -123.3562192, "id": 477}, {"lat": 48.47319208, "routes": ["39 to Royal Oak/Camosun/West Exch", "29 to UVic"], "lon": -123.3324718, "id": 321}, {"lat": 48.43398014, "routes": ["26 to Dockyard"], "lon": -123.4036313, "id": 251}, {"lat": 48.4283945, "routes": ["26 to UVic"], "lon": -123.4280701, "id": 565}, {"lat": 48.42770407, "routes": ["4 to UVic"], "lon": -123.3644014, "id": 193}, {"lat": 48.42416812, "routes": ["11 to UVic", "14 to UVic", "33 to UVic"], "lon": -123.3618182, "id": 37}, {"lat": 48.46247001, "routes": ["17 to Downtown"], "lon": -123.3599756, "id": 660}, {"lat": 48.46450577, "routes": ["51 to Langford"], "lon": -123.4311092, "id": 436}, {"lat": 48.43912372, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3279567, "id": 175}, {"lat": 48.44541955, "routes": ["14 to Vic General"], "lon": -123.4097333, "id": 127}, {"lat": 48.44156276, "routes": ["14 to Vic General"], "lon": -123.4012735, "id": 124}, {"lat": 48.44641953, "routes": ["11 to UVic"], "lon": -123.3072011, "id": 59}, {"lat": 48.43998955, "routes": ["51 to UVic"], "lon": -123.47667, "id": 644}, {"lat": 48.4351725, "routes": ["4 to UVic", "11 to Tillicum Mall"], "lon": -123.3649746, "id": 194}, {"lat": 48.45389877, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3269855, "id": 181}, {"lat": 48.50328952, "routes": ["39 to UVic"], "lon": -123.3495164, "id": 306}, {"lat": 48.471885, "routes": ["16 to UVic", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3504578, "id": 272}, {"lat": 48.45257771, "routes": ["39 to UVic", "51 to UVic"], "lon": -123.4628142, "id": 280}, {"lat": 48.45788293, "routes": ["18 to UVic"], "lon": -123.3598079, "id": 680}, {"lat": 48.48355969, "routes": ["12 to University Heights"], "lon": -123.3392444, "id": 507}, {"lat": 48.47485425, "routes": ["12 to University Heights"], "lon": -123.3352511, "id": 510}, {"lat": 48.4385405, "routes": ["26 to Dockyard"], "lon": -123.4021049, "id": 249}, {"lat": 48.46464375, "routes": ["14 to Vic General", "39 to UVic"], "lon": -123.4303659, "id": 139}, {"lat": 48.46843152, "routes": ["17 to Downtown"], "lon": -123.363493, "id": 658}, {"lat": 48.4422156, "routes": ["15 to UVic", "7 to UVic"], "lon": -123.3218106, "id": 261}, {"lat": 48.46541005, "routes": ["11 to Tillicum Mall"], "lon": -123.2937052, "id": 372}, {"lat": 48.4685411, "routes": ["39 to UVic", "13 to Cadboro Bay", "26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3238122, "id": 318}, {"lat": 48.42910892, "routes": ["14 to Vic General", "11 to Tillicum Mall"], "lon": -123.3313717, "id": 102}, {"lat": 48.42809342, "routes": ["14 to Vic General", "11 to Tillicum Mall"], "lon": -123.3340299, "id": 103}, {"lat": 48.50005265, "routes": ["39 to UVic"], "lon": -123.403144, "id": 296}, {"lat": 48.45353791, "routes": ["4 to UVic", "7 to UVic"], "lon": -123.3148518, "id": 211}, {"lat": 48.45349728, "routes": ["16 to UVic", "26 to UVic"], "lon": -123.3746105, "id": 268}, {"lat": 48.45195793, "routes": ["11 to UVic"], "lon": -123.301316, "id": 62}, {"lat": 48.41227637, "routes": ["7 to Downtown"], "lon": -123.3376577, "id": 469}, {"lat": 48.47564361, "routes": ["39 to UVic", "29 to UVic"], "lon": -123.3328687, "id": 315}, {"lat": 48.43483619, "routes": ["14 to UVic"], "lon": -123.3753972, "id": 168}, {"lat": 48.44396654, "routes": ["26 to UVic"], "lon": -123.4013741, "id": 575}, {"lat": 48.47564052, "routes": ["39 to Royal Oak/Camosun/West Exch", "29 to UVic"], "lon": -123.3326195, "id": 322}, {"lat": 48.49700681, "routes": ["39 to UVic"], "lon": -123.4049144, "id": 295}, {"lat": 48.47534857, "routes": ["12 to UVic"], "lon": -123.3355207, "id": 483}, {"lat": 48.41861435, "routes": ["7 to UVic"], "lon": -123.3610035, "id": 537}, {"lat": 48.46767784, "routes": ["14 to UVic", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4359916, "id": 144}, {"lat": 48.44745737, "routes": ["15 to Downtown", "7 to Downtown", "4 to Downtown"], "lon": -123.3213685, "id": 263}, {"lat": 48.46308849, "routes": ["18 to UVic"], "lon": -123.3594933, "id": 682}, {"lat": 48.46157656, "routes": ["11 to Tillicum Mall", "13 to University Heights"], "lon": -123.2927316, "id": 378}, {"lat": 48.43506448, "routes": ["14 to Vic General"], "lon": -123.3748809, "id": 117}, {"lat": 48.4804181, "routes": ["12 to UVic"], "lon": -123.3126262, "id": 493}, {"lat": 48.46803926, "routes": ["51 to UVic"], "lon": -123.3793739, "id": 650}, {"lat": 48.42059454, "routes": ["7 to UVic"], "lon": -123.3233126, "id": 557}, {"lat": 48.44457527, "routes": ["7 to UVic"], "lon": -123.3217053, "id": 564}, {"lat": 48.46790266, "routes": ["11 to Tillicum Mall"], "lon": -123.2981724, "id": 370}, {"lat": 48.44422152, "routes": ["51 to Langford"], "lon": -123.4679207, "id": 437}, {"lat": 48.43516417, "routes": ["51 to UVic"], "lon": -123.492188, "id": 641}, {"lat": 48.46419861, "routes": ["17 to Downtown"], "lon": -123.342373, "id": 654}, {"lat": 48.4358695, "routes": ["11 to UVic"], "lon": -123.3128791, "id": 52}, {"lat": 48.46691687, "routes": ["14 to Vic General", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4363001, "id": 141}, {"lat": 48.41554013, "routes": ["7 to Downtown"], "lon": -123.3280055, "id": 466}, {"lat": 48.43707932, "routes": ["4 to UVic"], "lon": -123.366043, "id": 195}, {"lat": 48.45528536, "routes": ["7 to Downtown", "4 to Downtown"], "lon": -123.3143988, "id": 450}, {"lat": 48.48689177, "routes": ["29 to UVic"], "lon": -123.3319747, "id": 609}, {"lat": 48.46622389, "routes": ["14 to Vic General", "14 to UVic", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4350071, "id": 143}, {"lat": 48.4836935, "routes": ["39 to UVic", "29 to UVic"], "lon": -123.3369963, "id": 311}, {"lat": 48.45531848, "routes": ["16 to UVic", "26 to UVic"], "lon": -123.3715355, "id": 269}, {"lat": 48.4410534, "routes": ["14 to Vic General"], "lon": -123.3277259, "id": 96}, {"lat": 48.45678102, "routes": ["26 to Dockyard"], "lon": -123.3697397, "id": 235}, {"lat": 48.46891301, "routes": ["51 to Langford", "16 to Uptown", "17 to UVic", "17 to Downtown"], "lon": -123.3742316, "id": 430}, {"lat": 48.42052367, "routes": ["7 to Downtown"], "lon": -123.3234581, "id": 463}, {"lat": 48.48192477, "routes": ["12 to UVic"], "lon": -123.3269853, "id": 489}, {"lat": 48.42698895, "routes": ["11 to UVic", "14 to UVic", "15 to UVic", "33 to UVic"], "lon": -123.3357177, "id": 45}, {"lat": 48.44547724, "routes": ["4 to Downtown"], "lon": -123.3340594, "id": 524}, {"lat": 48.48562463, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4155339, "id": 347}, {"lat": 48.44545344, "routes": ["26 to Dockyard"], "lon": -123.4009221, "id": 246}, {"lat": 48.41154063, "routes": ["7 to UVic"], "lon": -123.3515473, "id": 545}, {"lat": 48.47047528, "routes": ["17 to Downtown"], "lon": -123.3654598, "id": 657}, {"lat": 48.4844347, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3368466, "id": 326}, {"lat": 48.41183656, "routes": ["7 to UVic"], "lon": -123.3434892, "id": 549}, {"lat": 48.41551445, "routes": ["7 to Downtown"], "lon": -123.3490974, "id": 473}, {"lat": 48.442276, "routes": ["14 to Vic General"], "lon": -123.4031538, "id": 125}, {"lat": 48.43564334, "routes": ["7 to UVic"], "lon": -123.3221519, "id": 561}, {"lat": 48.46325239, "routes": ["14 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4315904, "id": 147}, {"lat": 48.45455861, "routes": ["11 to UVic"], "lon": -123.4088412, "id": 9}, {"lat": 48.42538844, "routes": ["7 to UVic"], "lon": -123.3222974, "id": 558}, {"lat": 48.46781507, "routes": ["12 to UVic", "12 to University Heights", "13 to University Heights", "13 to Cadboro Bay"], "lon": -123.3349584, "id": 481}, {"lat": 48.45194861, "routes": ["11 to UVic"], "lon": -123.4016075, "id": 6}, {"lat": 48.43979316, "routes": ["51 to Langford"], "lon": -123.4781081, "id": 439}, {"lat": 48.46967608, "routes": ["11 to UVic"], "lon": -123.3010671, "id": 77}, {"lat": 48.46363949, "routes": ["11 to Tillicum Mall"], "lon": -123.2905454, "id": 373}, {"lat": 48.44606806, "routes": ["4 to UVic"], "lon": -123.327835, "id": 207}, {"lat": 48.44962056, "routes": ["14 to Vic General"], "lon": -123.4204416, "id": 130}, {"lat": 48.48412555, "routes": ["12 to UVic"], "lon": -123.3364206, "id": 487}, {"lat": 48.44955755, "routes": ["4 to UVic", "7 to UVic"], "lon": -123.3180176, "id": 209}, {"lat": 48.44689303, "routes": ["11 to UVic"], "lon": -123.3043935, "id": 60}, {"lat": 48.4476808, "routes": ["11 to UVic"], "lon": -123.3013766, "id": 61}, {"lat": 48.48376008, "routes": ["12 to UVic"], "lon": -123.3390939, "id": 486}, {"lat": 48.44215522, "routes": ["11 to UVic"], "lon": -123.312213, "id": 56}, {"lat": 48.50366077, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.355144, "id": 332}, {"lat": 48.44387955, "routes": ["11 to Tillicum Mall"], "lon": -123.3896371, "id": 408}, {"lat": 48.48983129, "routes": ["29 to UVic"], "lon": -123.3302121, "id": 608}, {"lat": 48.41826641, "routes": ["33 to UVic"], "lon": -123.3680516, "id": 634}, {"lat": 48.49068203, "routes": ["39 to UVic"], "lon": -123.419288, "id": 292}, {"lat": 48.46715541, "routes": ["11 to Tillicum Mall", "12 to University Heights"], "lon": -123.3072991, "id": 366}, {"lat": 48.47424897, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4155334, "id": 352}, {"lat": 48.45361044, "routes": ["11 to Tillicum Mall"], "lon": -123.4066562, "id": 425}, {"lat": 48.43666641, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.461239, "id": 365}, {"lat": 48.41221544, "routes": ["7 to UVic"], "lon": -123.3399062, "id": 550}, {"lat": 48.43552405, "routes": ["14 to Vic General"], "lon": -123.3288378, "id": 99}, {"lat": 48.4140024, "routes": ["7 to UVic"], "lon": -123.3568776, "id": 542}, {"lat": 48.43757459, "routes": ["26 to UVic"], "lon": -123.4022317, "id": 573}, {"lat": 48.47143136, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3543293, "id": 593}, {"lat": 48.49637653, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4054481, "id": 341}, {"lat": 48.45716518, "routes": ["26 to UVic"], "lon": -123.3693016, "id": 586}, {"lat": 48.45055499, "routes": ["11 to UVic"], "lon": -123.4118932, "id": 17}, {"lat": 48.46884098, "routes": ["16 to UVic", "51 to UVic"], "lon": -123.3735439, "id": 270}, {"lat": 48.44781636, "routes": ["14 to UVic"], "lon": -123.4156639, "id": 155}, {"lat": 48.44333299, "routes": ["7 to Downtown"], "lon": -123.3219579, "id": 454}, {"lat": 48.41130054, "routes": ["7 to UVic"], "lon": -123.3494101, "id": 546}, {"lat": 48.49915901, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3921406, "id": 339}, {"lat": 48.42992998, "routes": ["26 to Dockyard"], "lon": -123.4175302, "id": 256}, {"lat": 48.4974899, "routes": ["39 to UVic"], "lon": -123.377627, "id": 300}, {"lat": 48.45737242, "routes": ["14 to Vic General"], "lon": -123.3288917, "id": 88}, {"lat": 48.43947539, "routes": ["4 to UVic"], "lon": -123.3581668, "id": 197}, {"lat": 48.43536603, "routes": ["39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.471505, "id": 275}, {"lat": 48.44006955, "routes": ["4 to UVic"], "lon": -123.3534613, "id": 199}, {"lat": 48.44206629, "routes": ["17 to Downtown"], "lon": -123.360027, "id": 668}, {"lat": 48.47374813, "routes": ["12 to UVic"], "lon": -123.3038586, "id": 496}, {"lat": 48.48306176, "routes": ["29 to UVic"], "lon": -123.3215223, "id": 602}, {"lat": 48.4270495, "routes": ["7 to Downtown"], "lon": -123.3639614, "id": 480}, {"lat": 48.42961034, "routes": ["17 to Downtown"], "lon": -123.3588892, "id": 674}, {"lat": 48.4664613, "routes": ["51 to UVic"], "lon": -123.390561, "id": 647}, {"lat": 48.44652607, "routes": ["14 to UVic"], "lon": -123.4123612, "id": 156}, {"lat": 48.45560666, "routes": ["11 to UVic"], "lon": -123.4113145, "id": 10}, {"lat": 48.4712489, "routes": ["12 to UVic"], "lon": -123.3348035, "id": 482}, {"lat": 48.45222489, "routes": ["11 to UVic"], "lon": -123.417605, "id": 15}, {"lat": 48.44740839, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3261242, "id": 178}, {"lat": 48.45221984, "routes": ["26 to UVic"], "lon": -123.3952586, "id": 579}, {"lat": 48.46239297, "routes": ["11 to UVic"], "lon": -123.2879671, "id": 72}, {"lat": 48.44545456, "routes": ["7 to Downtown"], "lon": -123.3218768, "id": 453}, {"lat": 48.45981806, "routes": ["11 to Tillicum Mall", "13 to University Heights"], "lon": -123.2885529, "id": 376}, {"lat": 48.43718297, "routes": ["51 to Langford"], "lon": -123.4996362, "id": 444}, {"lat": 48.43624305, "routes": ["51 to Langford"], "lon": -123.495933, "id": 443}, {"lat": 48.42856938, "routes": ["7 to Downtown"], "lon": -123.3226881, "id": 460}, {"lat": 48.43135863, "routes": ["14 to Vic General"], "lon": -123.3297781, "id": 101}, {"lat": 48.4708842, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3438673, "id": 595}, {"lat": 48.42867496, "routes": ["11 to UVic", "14 to UVic", "4 to Downtown"], "lon": -123.3645689, "id": 34}, {"lat": 48.4930107, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4146739, "id": 343}, {"lat": 48.47137594, "routes": ["12 to University Heights"], "lon": -123.3349905, "id": 511}, {"lat": 48.42269021, "routes": ["4 to UVic", "7 to Downtown", "33 to UVic"], "lon": -123.3656645, "id": 191}, {"lat": 48.4408345, "routes": ["4 to UVic"], "lon": -123.348763, "id": 201}, {"lat": 48.41663136, "routes": ["33 to UVic"], "lon": -123.3850764, "id": 628}, {"lat": 48.46867657, "routes": ["26 to Dockyard", "39 to Royal Oak/Camosun/West Exch", "51 to Langford", "13 to University Heights"], "lon": -123.3250702, "id": 218}, {"lat": 48.47937832, "routes": ["12 to University Heights"], "lon": -123.3084148, "id": 499}, {"lat": 48.43671733, "routes": ["51 to Langford"], "lon": -123.4874381, "id": 440}, {"lat": 48.45857197, "routes": ["26 to Dockyard"], "lon": -123.3688508, "id": 234}, {"lat": 48.43971998, "routes": ["11 to Tillicum Mall"], "lon": -123.3707521, "id": 402}, {"lat": 48.42763605, "routes": ["26 to Dockyard", "26 to UVic"], "lon": -123.4281392, "id": 259}, {"lat": 48.4408075748, "routes": ["51 to UVic"], "lon": -123.511531104, "id": 637}, {"lat": 48.45268571, "routes": ["14 to Vic General"], "lon": -123.4288599, "id": 133}, {"lat": 48.43175756, "routes": ["7 to Downtown"], "lon": -123.3225337, "id": 458}, {"lat": 48.42463093, "routes": ["14 to Vic General", "15 to Downtown", "11 to Tillicum Mall"], "lon": -123.3462585, "id": 106}, {"lat": 48.42935807, "routes": ["26 to UVic"], "lon": -123.4234342, "id": 566}, {"lat": 48.42459978, "routes": ["14 to Vic General", "11 to Tillicum Mall"], "lon": -123.3427485, "id": 105}, {"lat": 48.43850854, "routes": ["11 to UVic"], "lon": -123.3126378, "id": 54}, {"lat": 48.4497295, "routes": ["26 to Dockyard"], "lon": -123.3844862, "id": 240}, {"lat": 48.4651753, "routes": ["13 to Cadboro Bay"], "lon": -123.3052244, "id": 518}, {"lat": 48.45949517, "routes": ["14 to Vic General"], "lon": -123.3176149, "id": 84}, {"lat": 48.44967203, "routes": ["7 to Downtown", "4 to Downtown"], "lon": -123.3179382, "id": 452}, {"lat": 48.44359392, "routes": ["11 to Tillicum Mall"], "lon": -123.3868129, "id": 407}, {"lat": 48.46714532, "routes": ["14 to UVic", "39 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4294507, "id": 145}, {"lat": 48.50167426, "routes": ["39 to UVic"], "lon": -123.3433446, "id": 307}, {"lat": 48.45947341, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3179126, "id": 187}, {"lat": 48.43551054, "routes": ["14 to UVic"], "lon": -123.3844094, "id": 166}, {"lat": 48.48174365, "routes": ["39 to UVic", "29 to UVic"], "lon": -123.3365491, "id": 312}, {"lat": 48.44524688, "routes": ["11 to UVic"], "lon": -123.3929764, "id": 22}, {"lat": 48.45979859, "routes": ["14 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4334611, "id": 148}, {"lat": 48.41736546, "routes": ["7 to UVic"], "lon": -123.3590377, "id": 538}, {"lat": 48.4958328, "routes": ["39 to UVic"], "lon": -123.3360364, "id": 308}, {"lat": 48.415103, "routes": ["7 to Downtown"], "lon": -123.3320247, "id": 467}, {"lat": 48.48690503, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3373184, "id": 327}, {"lat": 48.4704061, "routes": ["26 to UVic", "17 to UVic", "51 to UVic", "18 to UVic"], "lon": -123.3607081, "id": 592}, {"lat": 48.44151883, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3274512, "id": 176}, {"lat": 48.47777276, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.3754019, "id": 622}, {"lat": 48.43945143, "routes": ["4 to Downtown"], "lon": -123.3597425, "id": 533}, {"lat": 48.49749948, "routes": ["39 to UVic"], "lon": -123.3729368, "id": 301}, {"lat": 48.45607558, "routes": ["14 to Vic General"], "lon": -123.3282391, "id": 89}, {"lat": 48.47585232, "routes": ["39 to UVic"], "lon": -123.4118348, "id": 287}, {"lat": 48.45017211, "routes": ["11 to Tillicum Mall"], "lon": -123.4087241, "id": 415}, {"lat": 48.46006049, "routes": ["11 to Tillicum Mall", "13 to University Heights"], "lon": -123.286029, "id": 375}, {"lat": 48.44414054, "routes": ["14 to UVic"], "lon": -123.4074046, "id": 158}, {"lat": 48.43279818, "routes": ["15 to UVic", "7 to UVic"], "lon": -123.3222169, "id": 260}, {"lat": 48.46607925, "routes": ["26 to Dockyard", "16 to UVic", "16 to Uptown", "26 to UVic"], "lon": -123.3090015, "id": 215}, {"lat": 48.44074658, "routes": ["14 to Vic General"], "lon": -123.3985724, "id": 123}, {"lat": 48.45446381, "routes": ["11 to Tillicum Mall"], "lon": -123.3008553, "id": 383}, {"lat": 48.42527982, "routes": ["14 to Vic General", "15 to Downtown", "11 to Tillicum Mall"], "lon": -123.3546964, "id": 108}, {"lat": 48.48164366, "routes": ["12 to UVic"], "lon": -123.317199, "id": 492}, {"lat": 48.44647892, "routes": ["11 to Tillicum Mall"], "lon": -123.2943508, "id": 387}, {"lat": 48.44221671, "routes": ["11 to Tillicum Mall"], "lon": -123.3771887, "id": 404}, {"lat": 48.45502178, "routes": ["11 to Tillicum Mall"], "lon": -123.4177339, "id": 420}, {"lat": 48.45545144, "routes": ["4 to UVic", "7 to UVic"], "lon": -123.3142481, "id": 212}, {"lat": 48.4449793, "routes": ["39 to UVic"], "lon": -123.466309, "id": 278}, {"lat": 48.46873132, "routes": ["26 to Dockyard", "51 to Langford", "16 to Uptown"], "lon": -123.3334735, "id": 220}, {"lat": 48.46616842, "routes": ["26 to Dockyard"], "lon": -123.3687398, "id": 231}, {"lat": 48.43108054, "routes": ["26 to Dockyard"], "lon": -123.4056257, "id": 252}, {"lat": 48.44034136, "routes": ["4 to Downtown"], "lon": -123.3525384, "id": 530}, {"lat": 48.44659333, "routes": ["14 to Vic General"], "lon": -123.41219, "id": 128}, {"lat": 48.42111672, "routes": ["33 to UVic"], "lon": -123.3855169, "id": 626}, {"lat": 48.43155868, "routes": ["11 to UVic"], "lon": -123.3250855, "id": 48}, {"lat": 48.49992699, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.3671408, "id": 335}, {"lat": 48.45641277, "routes": ["14 to Vic General", "39 to UVic"], "lon": -123.4404775, "id": 135}, {"lat": 48.43868841, "routes": ["14 to UVic"], "lon": -123.3909561, "id": 164}, {"lat": 48.43535508, "routes": ["51 to UVic"], "lon": -123.4898433, "id": 642}, {"lat": 48.488052772, "routes": ["29 to UVic"], "lon": -123.318448631, "id": 604}, {"lat": 48.4503508, "routes": ["26 to Dockyard"], "lon": -123.3861826, "id": 241}, {"lat": 48.42727144, "routes": ["17 to Downtown"], "lon": -123.3590369, "id": 675}, {"lat": 48.47030385, "routes": ["11 to Tillicum Mall", "12 to University Heights"], "lon": -123.3034821, "id": 368}, {"lat": 48.45950588, "routes": ["14 to Vic General"], "lon": -123.329982, "id": 87}, {"lat": 48.4733094279, "routes": ["17 to UVic", "17 to Downtown"], "lon": -123.370330898, "id": 624}, {"lat": 48.47048692, "routes": ["26 to Dockyard", "51 to Langford"], "lon": -123.3429912, "id": 223}, {"lat": 48.43196909, "routes": ["14 to UVic", "33 to UVic"], "lon": -123.3293958, "id": 171}, {"lat": 48.4815778, "routes": ["12 to UVic", "29 to UVic"], "lon": -123.322398, "id": 490}, {"lat": 48.44491304, "routes": ["39 to Royal Oak/Camosun/West Exch"], "lon": -123.4660959, "id": 361}, {"lat": 48.46184911, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.2948748, "id": 67}, {"lat": 48.47284636, "routes": ["29 to UVic"], "lon": -123.3308692, "id": 611}, {"lat": 48.45983819, "routes": ["11 to UVic", "13 to Cadboro Bay"], "lon": -123.2888765, "id": 70}, {"lat": 48.45847468, "routes": ["14 to UVic", "39 to Royal Oak/Camosun/West Exch"], "lon": -123.4354521, "id": 149}, {"lat": 48.46932762, "routes": ["11 to Tillicum Mall", "12 to University Heights"], "lon": -123.3046376, "id": 367}, {"lat": 48.48490407, "routes": ["29 to UVic"], "lon": -123.3331763, "id": 610}, {"lat": 48.44623376, "routes": ["4 to Downtown"], "lon": -123.3311477, "id": 523}, {"lat": 48.45209055, "routes": ["26 to UVic"], "lon": -123.3805478, "id": 584}]}
# Code based on Polymaps example from Mike Bostock http://bl.ocks.org/899670
polymaps = org.polymaps
map = polymaps.map().container(d3.select("#map").append("svg:svg").attr("width", "100%").attr("height", "100%").node())
.zoom(13)
.center({lat: 48.455164, lon: -123.351059})# Victoria BC west of Cedar Hill Golf Course
.add(polymaps.drag())
.add(polymaps.wheel().smooth(false))
.add(polymaps.dblclick())
.add(polymaps.arrow())
.add(polymaps.touch())
# Stamen toner tiles http://maps.stamen.com
map.add(polymaps.image().url(polymaps.url("http://tile.stamen.com/toner/{Z}/{X}/{Y}.png")))
# Classes
class Layer
zoomLevel: ->
@map.zoom()
@prevZoom = 0
@distance = 0
pixelDistance: ->
if @zoomLevel != @prevZoom
@prevZoom = @zoomLevel
p0 = @map.pointLocation({x: 0, y: 0})
p1 = @map.pointLocation({x: 1, y: 1})
@distance = {lat:Math.abs(p0.lat - p1.lat),lon:Math.abs(p0.lon - p1.lon)}
@distance
constructor: (@map) ->
@selector = d3.select("#map svg").insert("svg:g")
@map.on "move", => @update()
@map.on "resize", => @update()
# Lat/Lng transform function
transform: (location) =>
d = @map.locationPoint(location)
"translate(" + d.x + "," + d.y + ")"
cluster: (elements, distance) ->
currentElements = elements.slice(0)
pixelDistance = @pixelDistance()
distLat = distance * pixelDistance.lat
distLon = distance * pixelDistance.lon
clustered = []
while currentElements.length > 0
stop = currentElements.shift()
cluster = []
cluster.push stop
i = 0
while i < currentElements.length
if Math.abs(currentElements[i].lat - stop.lat) < distLat and Math.abs(currentElements[i].lon - stop.lon) < distLon
aStop = currentElements.splice i,1
cluster.push aStop[0]
i--
i++
clustered.push cluster
clustered
class BusStopLayer extends Layer
@clusters = []
@stops = []
@prevNumStops = 0
@prevZoom = 0
update: ->
if not @stops
@stops = []
if not @prevNumStops
@prevNumStops = 0
if not @prevZoom
@prevZoom = 0
if @zoomLevel() != @prevZoom or @prevNumStops != @stops.length
@prevZoom = @zoomLevel()
@prevNumStops = @stops.length
start = new Date()
@clusters = @cluster(@stops,10)
console.log @clusters
console.log "clustering: " + ((new Date()) - start)
start = new Date()
marker = @selector.selectAll("g").data(@clusters)
marker.enter().append("g")
.append("circle")
.attr("class", "stop no-tip")
marker.exit().remove()
@selector.selectAll("g").selectAll("circle")
.attr('r', (cluster) -> if cluster.length > 1 then 5 else 3.5)
.attr("text", (cluster) -> "<ul>" + ((("<li>" + route + "</li>") for route in stop.routes).join("") for stop in cluster).join("") + "</ul>")
console.log "laying out: " + ((new Date()) - start)
start = new Date()
console.log "pop up: " + ((new Date()) - start)
# TODO just have a single g element that is transformed
start = new Date()
@selector.selectAll("g").attr("transform", (cluster) =>
@transform cluster[0]
)
console.log "transforming: " + ((new Date()) - start)
addStops: (stops) ->
stops.sort((a,b) -> a.lat-b.lat)
@stops = stops
$(".stop").live("mouseover", (event) ->
console.log event
$(this).qtip(
overwrite: false
content:
attr: 'text'
show:
event: event.type,
ready: true
hide: 'mouseout'
, event)
)
@update()
# create layers - order of layers important because of SVG drawing
busStopLayer = new BusStopLayer map
loadBusRoutes = () ->
d3.json 'uvic-transit.json', (json) ->
busStopLayer.addStops json.stops
do ->
loadBusRoutes()
html, body, #map {
width: 100%;
height: 100%;
left: 0px;
top: 0px;
margin: 0;
padding: 0;
position: absolute;
overflow: hidden;
-webkit-text-size-adjust: none; /* Prevent font scaling in landscape on iPad*/
}
.qtip {
font-family: Arial, sans-serif;
font-size: 10pt;
line-height: 12pt;
}
.header {
position: absolute;
left: 0px;
top: 0px;
background: #fff;
background: rgba(0, 0, 0, 0.6);
border: 1px solid gray;
border-top: 0px;
border-left: 0px;
padding: 10px;
color:white;
font-family: Arial, sans-serif;
}
#copyright {
position: absolute;
left: 0px;
bottom: 0px;
width: 100%;
background: #fff;
background: rgba(0, 0, 0, 0.6);
border: 0px;
border-top: 1px solid gray;
padding: 10px;
color:white;
font-family: Arial, sans-serif;
font-size: 8pt;
}
.label {
margin-right: 8px;
}
.stop {
fill : #7aa6fe;
stroke: black;
stroke-width: 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment