From 2f388e4df7395036c32a2b82414ca26cdf8898f8 Mon Sep 17 00:00:00 2001 From: Beiqi Zou <34224013+BQZic@users.noreply.github.com> Date: Tue, 6 Nov 2018 20:54:39 -0500 Subject: [PATCH] Display east only/west only/all routes (#23) * Display east only/west only/all routes * Add functions to determine whether a route has been added --- Icons/Icon-72.png | Bin 0 -> 3244 bytes Icons/Icon-72@2x.png | Bin 0 -> 15425 bytes Icons/Icon.png | Bin 0 -> 2553 bytes Icons/Icon@2x.png | Bin 0 -> 5433 bytes Icons/shuttle_icon.png | Bin 0 -> 33903 bytes .../AppIcon.appiconset/shuttle_icon-1.png | Bin 0 -> 33903 bytes .../AppIcon.appiconset/shuttle_icon.png | Bin 0 -> 33903 bytes ShuttleTrackeriOS/Base.lproj/Main.storyboard | 18 +- ShuttleTrackeriOS/ViewController.swift | 159 ++++++++++++------ 9 files changed, 123 insertions(+), 54 deletions(-) create mode 100644 Icons/Icon-72.png create mode 100644 Icons/Icon-72@2x.png create mode 100644 Icons/Icon.png create mode 100644 Icons/Icon@2x.png create mode 100644 Icons/shuttle_icon.png create mode 100644 ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon-1.png create mode 100644 ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon.png diff --git a/Icons/Icon-72.png b/Icons/Icon-72.png new file mode 100644 index 0000000000000000000000000000000000000000..b04214c32bf715c1b97efdc98dff7d1a78249d8e GIT binary patch literal 3244 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 literal 0 HcmV?d00001 diff --git a/Icons/Icon.png b/Icons/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d8af4ac9b972b47c64d1832b2346f43020b9c7 GIT binary patch literal 2553 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 literal 0 HcmV?d00001 diff --git a/Icons/shuttle_icon.png b/Icons/shuttle_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10da2341b2bd9a277892b47d766c3a70a3f333ce GIT binary patch literal 33903 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 literal 0 HcmV?d00001 diff --git a/ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon-1.png b/ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon-1.png new file mode 100644 index 0000000000000000000000000000000000000000..10da2341b2bd9a277892b47d766c3a70a3f333ce GIT binary patch literal 33903 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 literal 0 HcmV?d00001 diff --git a/ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon.png b/ShuttleTrackeriOS/Assets.xcassets/AppIcon.appiconset/shuttle_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10da2341b2bd9a277892b47d766c3a70a3f333ce GIT binary patch literal 33903 zcmeIb2T&AS*C^Tq0Rf33C@>^Rl0`*f2qK6AB1+C9sALckX2_$cfPm;hB?mDO6%ddN zqa-CGIpdHs14s^UH-qPXRqwC&s&3V-y8mBv)u|)B_lkR^y?S>~khYfE5$Y4v5Ck2$ zdPU_X1W^zmh^mu{0^DJ^Ee-$g@VzTWt`H>72meQc`Jm_yLEO+)m5aKV*qQ!PCyq|e z>fd~qu(xneC%&JJvYh>AxghF!37M1ucmG3MoX>;9nzlHl5s|==Fk{X9CwWOzwkg%0 znY2&gc}dtZP9I&)KDuh}KG^Srz+M@yZ;X967qELlMqFH+x~`?IU0?Xl{3kBOEKa}) z1Sw&|J1yRJa>aJNs$wL_wzaiu3ExRR;%1V0sAxNH3$-^1#f+5r5c}q4czHrv#gq|g}>l_J(_vYeA<;6a5oP1nTAO{P>u&~e4qu+;LTF>ITZ>p-6tl)9~ zN}_RkMpv+o&O?eZ^9aU|2E#&}f3Ek}C3BTZ=6!IgoVFMF%YlMJMB)r~wmiOy?}>Tq1+Qm0%fW>y|!J@<_$87frX@zTJ0i9+_Y905UvAx_UI?7vw{Kq_YE1a=Pi z=MT0o5lL|Why$xV{zo>BBe}b+-CTI|XCD_W5vK6z>hLV^njE9SdvoD15&E%hQ{otv zOv&B39i(}7@bH;{8XG6{!v4UO{K2;NmW=uHox^8h_AE2HmyAdY^{3uDW2{7w@O*p= zNkn6KHvjJIUDsgDHM1jOEq!KrEJUxw()Bq_P2KCMX&gP@@bR;|x^S|i9&rd#_vk>R zdnimA*V{AA8}6?sR>mRX=JSt6|3nGyYw8OZk%Z*01kden-6u7q!>*P@iH{PsgguLP z{?!yC3_D%^t1r_Q`$l9sspVBP+I2UsGN$0f{$f%@r=(xwB=iWEIPQKYA{{c`4A&fP zI2~k7O;5a2E#qzxa|$2zeII{NsC=l*?8$iHeMuwx4C5T}f&b3`crLcOw{UJ3*>G~e z%!^0~(kXU7F<)I(Rn?-rsVx=z;J5EypIQ+PQJnGlg5s`euCBUnbM9 zdu@MP@1^HJGc_IE4;=M_KWs}}_y%6T^WJBs?Xr7;eOT**R|3Qv52oVy&elX#y8e4( zJPv^H#=kp5q?jld4qRBM!I6Dm(73|w75~hbO1UgnB8uiuA3qO7Ru_xoFQ^lP3skgP zeXrk*(RuJGaf;G-HEbvUjvuqiPfh<+XW=<`GCpu$_TZ(orl5V3e{m}#FyA_d2#mUA z{-+RRhSc=me)sDBYW4e!#ZI$cIOgMi%s_pMF7otvKc>g%T(eIV_q}xHfq`lX+2+2| zX;v32HEV2%f+#&-yaPJWb$CXvxSQm?KoDGEhp+}ao14y~isid^FGAS!z~Zu`6gJ0t z7h57My6-`d`FiK-;A=nM-MB*}5dOT@z5^c^%z<+qL=V^o4#Fd>h5s4h@xREGuC1V0 zh{0DiDZW-j?An!+K$y`%|C(cDP#|1$u@6^CDE2tOD$sv4yk8O>1IKL$Nd z$f@(~88{UAa=%d`$+zENL0$gadJFm6IyoM+-?Eba+xoeC@^8cK%HMX}0V1MC4|GJ- z!+{+gxCm?sxPvf4bcp{hp?2ajdD7pr0DGJttl&Y8gAD>ymrt7*b4{;TlYORKnGj*gRMJk3I7ukWHwqx%G12l z2geoq^f>+ceOcbRKUL z9;5emX*02>ZpzS!wx%EbQYfUY#Kd~>7;oOaqUL+o)2MDAj^&w@n!Mp+eqZP&-n%qm zyl{1uj9llDqs?60>bIqVUHS1nhf+GNyq{^WT>g7{?I+dW18v87_O0zC-`|Go?Z^8O z`9%oBeyRNralQj@fuMs317ZIU1=4zhOC`^b5RX-32^)5StJi1u zACZN0f-%LczX$rw|Bd`(7X#6Mx-T&f$vgf%^<0AZTq)-yv1i;6Y70R}$o;i%%H+EL zhWqQ@geq1kdgrgU(M=A-H;$l?L1X@S{b(ZOi^u;a2_qVUZ)Y{}wi4Z`e^boszxkxz zIB?aGop>Y~x}a(5v-0B9-`sRtS>zfK^v9j=M3;k<#2NA159Nt%4lI(lGA3_dv=;&H zf9W42Dd-@vL(oC}0zv=ZiAS@CVb8(T&*d#>O1E_PZy!!Rb}U+Oe)ocAV}p#`*!bqg z^8c%oj7k?#zoF{c)u`B?W38FpZr=DqL?q1F|D^1Yp*yR zzq!kmURT$zUTX8R@Jm5gU)kbY6#Xe4B7Z1{q$F|D;V zX6(tZe0UvR-phP8p$s(#{p{@|d`i?{*PwlXdHx z$+4w1JU{=2f6dTf`)1B63~tBTAIn=1 zWKOsHh^Fqe>XUeFcrTKor`xNFVHJ~3y-w~yh!EG8^i)RLq^4v|a{vX(uEaJwJx;nQ zvEi?llKcrKp`BK6W~VJxI&BW4b&L%wu?)XCeGAL zDBNSr3zhnU7*T=pX*Yn4wtNhK9AVC5qBe7Xx40>j)TR!8T2@0YG`D(*^~r6pchMzZ-&NFjd5 zk$n5}OM(N;VdMYJIh@!aunf$ek4X<5_pZsq2+w#UZgu?$I(k%NKD7~+h(cUEyvCyq z$a5?rn{n)-^J9$UZMm_r;);jEU&D>i8G?7meSCk{^iP$@b!Hj~0+2)r7lA*^>6wS; zukbgP`L3_TG?t@+0o+L)nx->3$&EHqKfiiJ!D-x+r9W|{^ua*X(bTH$PHROUHS1Gd zpn{;#3?`*eje)124Y}EDJ9rx=1cJ=v)zZ(?+rSuq08!QQ%Lf4g8 zjajdCZ)rEwH`x|hmlc*<1GV^?bM$4(fs{T>15&5H!?nfGEo1AO|1|k+Xe~|lI@@I* zrf0-o410_Y3GTfLhH+qV`lsYRNef@i?b`D5+uFXn?!P)C(r*74ljQ@;EpeszIU?UP zq&+lPahi^#%ym0D6aZq?E4$lTGt0&-FQ^uKOm2^bEAEt~A=3ma{l$L8V>5D3z>{R_ z;}u$G+d%SsT+ac;LYd)bKumDQOlQ!l| z{M;^XYNoMRg_bRKvKCwCX|un^EU?+<$HZ^Q?0$}#nE9%bdwHwua$RS^+oO6O>2<~q zz~GeFt85}BXwQ00g-pq%u_iq1-#Xr5dg{X0a z%{tL6sZL85QMKwdq~YSR-RtM}Hp&=Nou+;0HRhg03CDJ$MM=BQh5N-pOc{TUgz1xs zEwcFhJqu92QC@E2yEK`+0>6LyPw(pD`dI$%grZ!+BR3Vnv^nn|A8kRjbchm)W(b>7 zwSVNd#kS`D6DHN;a`arbZzM|R zOM)$JldrbpFLI4`wwQ3J=Yw!CH}ADI0Q-eUCHfCruoN)1&$x4yS5D5J6^>FzroG>I zZd^6*wM^%Ce|2uGV{j*Q5T4DJQ)=CG_ImkZ^h#9oyS$a?^g4}(%$+&bH!qW@2q{{9 zwSnDexrFV{4avrXYo&uSBCttU3yDWHZU0Pgub@oyD~{iG$`_lR4HLJ|yegI3`u>zl z&ZLRr##QM;zs72vQkxdWgn;hWo}XYna6(o5OU^qBpYBGiqb0Rl9-dM#Vf^RP;l~(V z9w(HF1tIb<1=4O%W4zcur?d}H!Yx#76;mCrFZcf)*wlgE*+{zJar9!K8X@UU;x}AY zHXA92gbYCyjxB7@qnHI_0CI_#Agvne3Wh3c(eI0E^%rBJg49}8O1;ZW?%bA?bP!h% zY`H%aL|ld{0EoiI`;O+#rLdyT;4{))X9{w}jjsi&y-f1Cn@c$}Awt)CtR1tjduJ+1 z0I@7wZLqb%wH+~6WrSMBXNWWgJDYnBPPNMR*xroA2-znb-Zrw&OhuoECySGoc!_P3 zVvry!KTEx0%y!oj z&S-#8#Ljm~B&G7*pImrpwP2gQuW+P=L55egGp@F5GWk_goDmEE6JtE^5e(5GT-?>7+&zprY3J)rO z0Sm%iBF8j~11^;U)kGR%&v(~vcka%8psF4kplP&lR}28Cun>KZ`U^F8Wu&q7VBL63 zvc>wtP=Bf5rr#jjdod4;=i$5+0s@d6-475Ew#D3_f>Wj{8QobKRoJ15UQmEJX zMZT5OfR;4i_!raA#m&lby%#_yN~w5l3oPYmaMN1fwDb94%bCZR_a|}wD@-Fm2<@b` z_+I%o)}f0mu`VwkGK4(v}C{Sc=ce`nvO zl5CZU%?z^k=MKBUh?hE-liWnLkf^*70Ce}lh#V8XIX=Uf^_lHR-u#E9V}Wm(@lwZJ zu=6~Wf1d69mNEfEpwr!}iyl@MSg|0|*Fw4vZ!zJe?yq`2W2dIg3wAG}Ab~Ndnx2c3 zA5}th6$$COlvPO{Ca|Sq5>?Al5Rn;6P#Ug&5yrV+7_^Lhj0w?1{=nb)p^ZX??&*wn z%-pXcilsRm<6bFxjg5i_!N*Mhg>CKdf}}qd2*Z{f=|5giJ)u_rtIumC_U!E;faCF7 z9PY9uLl!Hnv&#(}NR;+UEU34+WG&^73-KT>$++U*NARF@2uaKq@n8<>X#F=b3dh~_ z%;W48N`S?*)F;+OdKk!r(IOsS2U#f^S=8Q>)) z1t(2O&-SW-v#^sDJ|In@#C{FcmfQZ`LK#W%(G}z$4iW6dXnD7fo8CZhthuU&oa32? zE`eX88^2Dx1~dZyLFGqbZ?))ycZsp)RfT%Fxnyjt)+Wp9fi+4hSMR-|Afvs6v{)$? z0_c_KLA)L)WRcV-(4Id1)SQYiVUo)SP+)KMxGfiS02_fEG`zz?=EI@kV|-R0={d9M z9fBFc%52o2kbj8ddft8^r;u1tWO$c255lMAGBX>$<5|F6S6Z@GoUOoWlaT~>Xet>^ zf1`Vro-)$&W2k^6U5_1DkF2N(#96Nm)oJqg%yF|1qAk-OW0p@MPWRZ54kvwrwanh_ zx)M8gLrI=0k+iz14sJkAM=3mbA9aE7=nu&+STQD2v@wkMY)1m` z(b*ZOTG-qj?*aF*=zBK<#C=HDL5)~qW~rl${0f_t(HZVT60mn89mXnu-rX3wWl#E^ z^~q`RlpN63?`4{uhWS6k{RHq27wzYOO0eR37^N7@-E1(!C&sM_y94{o{nn|WRKBa;g8qYH2(!JPon!NW9+%pWzRyX z2wnda9AS|6Bsm=o3`{z2A*2+>q8nnY{e&|22C_KmA2x(qV9lF?pX9e$+rI;b+XOF* zR;C=ne!aib==m7qaLS29#n~KNzsvwaXiBS2aw8iFS#Go)vV*VEO2>%=a(o*A@}!c_ z-FWoEk=z7V42!ujSCPGW#y8-E#@Y%!_&kZEuY(BbC^K?SfnG~~I@Of&$= zKMR};LO<)5B)YC6cq*;THiF0;M>?1QQcm69Bp;#_Fa=;SD$5qJ3}H1l0ps0e5l!d> zD**b+er5T1G0jo6CsOpxc!FWt0`^?+xB;>Tj0x%JrfG5-W)&;BB%N@s=_?8Spb=Qp znev@XouNsp9qtz1@lkYevF@$B_ctZJ#JKhTHS-JsZ*zYP&YCpfLaTL+c zh+>u~h}DW<2vdXMllDaRsQ*r8$8ZrrMZl=Y{5E((dDQa$uBkMLGqb=lgj7tGR^{na zzUe%3OzWf~tev8#NIa7UdvPtJ6|<=lr5!^=t6WXUv(z|-FiQL}9V8p1j(-BwoXBBp zOM15DCNmF$9&?yfeRQ1yf|`BdZH^A*v6++Fp&-tHPRf`grs^@~!8I;fJU^9C2iQ#Y zOTZiE+|C(c)-w+`QmWHq7{Wd$>!w0amhOObl-M7l4%wYq+Pb=FF2#fBzuzZRcSy*n z&p5iPv=;$vFt-`rMS?Ujjh)h*OPF^5^-fC}S^tbQ?d>)|tR(05ybw#*Ru`pT3J5!& zCTSZ=ZI$S;2FiL9^!ZfL6_T^9S_S6HCAGGyP}|8KddwtPe;Za7A*ES7?O>FC++)n^ z7>@xB25nZ09e}Y%l~owBHqK+h>p6g|APv&!Y#pR4V4S5Qatw?w1}~)pA91HniI@H) zdzf%appepTbR8(EnXdSG)Dz0AkFL5J4LwwZQ|FdS^vRXtaxGzsl!Jp%S({7tTUq52 zb)cYMK$>))<5+c7kvAaDJ17ESEP zH8mQd0pd}Ay0%7Fus7nCaU6!qoH}nbRm1m>Qg*)VB5M;hrnXN7)!B;(e>-euuZQ95 z`_~?0SQbgi?={V&O6!Aw#Ld&M10kBKmWu$`2tU;jqUjP)Su6;AU!|ex38A*srwo~= z0YBct@c~ZaK!TCsU;Ma@k9lnw`y)uZu}T_!z##WaPS>S=cNYjb09L%Aa;{%LnG|Te zpo)A!s7V#zHT_7RDoN5+uhmq03J_$HP=Y0`l|;c~^%Z1YvDSA$vxjApqg9=G$faZ% zD0<|r6*X>5SFH15paCP79kyoa5F?-!F!3rW{3vehBb{huumK5=Ilm?MJ?|8fHQ5R* z;PQT?EUJ$Lrymt;pa8~zyE@cs07JvA9Y;f1Zq(>n!OHZ<9vFzd*R9PJxHPKI9pV0s z36=g)UOE^aQ%7P$*ONelO43|v40V4u)(q-OVq?724fvB}U_-eQRHeoOfDR=QV*tBF z?5>VDkNKfxCd#f8dUb&D;hfgv$8cXS>`KHiWRl8ps*^bcMSwyQOOWb4jM~(dintbN zK=PU&GO-c|w{dH1E)cxsmY35Is1z|R*@_IH%sMN@DnXG796-{TU?y4?PLd_xO6m6I zR1`zzy|e}Bs~U|Zz}V7CN0*4!p^1O{feFvzWOwWB3P05KCY3Bc1~BsOYir1TY`m?S zDPZt7c(&mXc5w>6FEa_9NVFFJ5TOxhaGuK?JKLhh0W`7fUQa`SJV$SO7Cy!t(s@GJ z%l!Qsu)0>bnSplJhbnuz0q(pnkdpl8v`~7BGY>)sbd)2?dyf zw40L5QLOKzsGb0i`8RJH63=&GASmM|3Igex6~)fhovajzG{-}wghTKeJOG_lBS);l z@l1IBTMi|%WhbEdDEK>5d`U4!m3HHGgA7iBA%Q0t$VVz1aD_T!nnXU4K#;rxM7JB~ z`E&*_l5`v%@ZKfG)-dB)YL5tDcOriRB$6kjenHrsiBo&{!CFm(9fOl)#W=4l4yE}( zR{x8Va*47na01|m?x)lsikhmxMJfXIha)6Pejn+h#o$l)D0vmI-9Ye|KLn4A*l6=3 zz^$hmGQyBy0z;+}GiN{}aJG0C50By>D%gq$r>)m{iFYL|grSrE>57z;im{9^~-Ph@+5#}!KE~P7*HV-SKIq*n0x<>gv|xl%XR z9U7Ydgr;7)ZH=CVvnjaRjS7owT7lSP*dxfo-qF3+fEPg%_lw38aKr*f@sZ9(2VQIl z?o`76|6fggt6RRzux^08f#E0X*Ptwg|6qGhI>@H5oxi=|!yYatvqA?Cc=8qJI|Qp3 zT{hxu$zyb}Bq$%{lJ8s9aNvO;W94a?y`_^B2@d|tyY6`7pXqa@lEel$O7y{NQnpyQ z^JWC9x%*6^<6iQZamrYs2{GC5@=wybYkML_!$Y?nm)6A&@TYa^d{t(j;F?A-PuB*~Va87T$SB1zqt z19_r1zes1?1lUfx!7G?}t^PjgL>!~ZDDYZ!dQ|3_r8Qwgk^xitCXHne z0s+TXn3SCBZ^5dfA2)(blBqMjl}jE?KA~x5&yNJRtB2o^*^^8i?wB%r!pN& ze+Jjlw^#yV;T4|CoRy$Mf*36+7gsK!jtr*Ey0EkW7{6cWLNJpfU0^Y`?NALgIP6M* z&W#-d+Xy9b8BSd??@;#&H%7eP_gFz}sD~CzCaL%+?wymlr-fi@EvPPd;wZbi7AfPy z0kZD3&lC&%pUzD4fy{mj2Tcc?XoA}#uEY4I8ETwQ^|v;)K!cYtpu$0R5EUf+Nz^yv zg8*(@W1{75BwQbT$@oP+lufGv?DxlX4vpehIi)|jzcRuZGI;@ffHzQ3O-AaQ?RTch$sm1%C>}+Ncd-|>&ZV?vR@=>;(YFu*bN{?X3R90AkRxt=5 zeD0;(mpVbDZ4=d1=vgmNe6u{;DTHi5(FHXNH0EMYTqsWi4xnsoM{4r{Fxh<0qd`ZxmF&Hy_co%~dzaQv&DcsYYK&6o5PRz6M%>2EzOWO0&qlf$^LK*=C9< zhW=&HGPcea0i}}et06l@sO^+7V_%_f!wxXV+6vdH0V}4zI!-Y1KAuQzz z;X7FyZ#>%k5tvcC(EWs~_iEz#Q=uM_3}Iu{O@nzl(+gw5x-q|K)%kgm((9muU8ZD(CH~zN9Vwir5B-Km1{n4qaQnm?I zt*H>P*I#eqIu!)3W=_3V$Ey>9ZpW!VH{qXBr9XM)B`;6Zd)XV>FDwnHzyEsq+$tbA zMeWgV-e{Vf?Dhdk*BkfDD3m3w?kN)>pBcKVL{O2)2d z0;^5n`FZaiCuHJ9B(`x@1(_y;Yz!og7LT`l)(LOyqxle8`Rw#Ik1%36G-16#7~PMv z)nq3ckuE^*W7%MYI`fXGO69xzcks8P!qf^_<#amXeu*nAM6K2ZnA&f(A2OGyF*!ymh|`9`O@g;~jMUUl6;c6zoZfweso z*^f~&tCII9UN8&^tPvC6!j#jHo~iwiP=4zoFs&1f0Lf>3e2E!G^m66!u?V_yCmBRD z8^QBfrad5XCIP_r7oe+dsvzf3VC1NI6S(~};6H9ldd&nTzrpq_odod!w@`QwRW7Wf zBvv1Her|w8gNab!4@LzR_D1h5{^8c9G*36AV+=bK#Y5K?WrhLxDn!Z*N~??6?DJb1US=GLZ;(HMsY&*En^D~!8<4Bx$7iQt?0(X^Bs$H&pYG&# zFEEwes&2NR+hl-J0iy(twS$VM}q2wU;y`?-}V6YV4UsBLZvwY4o*@2qtfP)L#K+)XVrx zpbAf4_#F+AjsJGlzf@^;Rq7Jb90i>&_MWl%;|Y==v~S9qZv2caZqgUa9%(= zGr{mHCdc(RF3c3nqfs2NC{+OSaQ&5r4d<_OCR$i}>S`AHw=)q8Urt`4OrI@>j)SE# z7w7ctHwMgSiCVADoVKN&ps_kLNx>M#BDed?ob||+-?2B~rd@`T=KTvx4XkFT6UReZ z-m|M9^+hk!Ys&divt_ZVEwr>9hj&}JX9f9(mZPPjAAmJTt2{T9Zk=q3L~-N)j3-GH zfC+~Dt6#C^QkTP>03WZ}>QDTNWfNInKdOCdy;ZH{i2# zAtERq;3`UG^BNDO%eqXEwbYaV#I}#MqGmpm%n6Xjzq6R2WDNVfX)~pn$48G6OB3WO zJq|RCf`HAxTH5RzB%OQU)a0aA-Ymn5kY^0=sD2v{r8AD(SF^%7SyHGqfUc{<6WYYuYSNMX?6RSG@q(QHa6l$Ud_qz-=+s5V%|OzS>?yC?MiWv;P3{*d8!`fgE|dXw`Z5-csYuTCMa; z+2AeqSoVv@`#3dT1+>BD#aXqoa|F zIjT6heCr53pwGmX$Hxge{dvv*zCC!YfpM`1kP+m2Pgij`|ZU zjD>%>3LsJ|J&X(l1VyROJchr6jgx%VFF)@+8muP@El!Y^h%gI&qR!*SzpTxRiei^Y zQbx4xeU=+18GMCdweT_W2hZFE8cbVgpqeZgOMr1eGRgyT7QWR!;%t&6VMR=YE2+$j z_*i73IXT#DKx?1EJ~m=doD@QHdV0l{)^|n8^7!yC^-EIX*T;g}gGIIJ_t@Q<;Ks;cpnmQTurR zR*qWtD;JvP+I+W&6XbGTM}^{3B64=u=-bDSop}kzHBeUT`EX%!9aVx8S zt4=~Q;nCS=lnsM&S>+qCj|7aY&!)bE%Y**$gmh)nW($KRExiOkkamg|0bKJTR**91 z6?PT-rXR69+th_uSwOYLkQb51Lh?IKLQ$vT0>uWO!k|{oc--DPnw{yJSj_%bn_a?#{O$i`1iNjB^mz6?DLo&-lJ0Dk7J#V+zU7#EV zc|El0JwXL&mnki`H4w^P=bx~VdF-g?&{kRL=y&?vpX_`9a>Bo`gJ2iY!soZbdZ+(s zsQ884s#htg&ZUOpVVrJP*{FFDp#-o3b?vFCiwn%x-*_P~xbMoWmEqU2H^t*gVZCgO z57V%wW!7|lvY7woCiFqG+%rqlXQ^t+mFy`{;ya*3qpA{0#Xpnx2R~jr#@dm%bX%u> z1h&@=2?2a%>1TRD!89`ugsC-~nY^4{qxaH$?dI<4uA$%4Mp+H5*2;??f%Z(#-iHk1 zFux=e!Z>K*wu!%tocnuNNwdDJmjvAh<8~IM5vQ$fx`WjC+!}ut?_1-s<8Oqkt#_up z2F2z%yXLpxvhm7$*Ydj0$fw`7`q6VYq=47IYXMzgQFvwAgB9+fr4*#y2hC)+ibUXo z==SG2#q&cT^S^CAE_2V#E)BU=8D4!v$t0vH z1cN3d_~9Gih}EWv3}GLpm=^|NXrpG%!Zao>^)h8OvpRjK!Xy`TNig1N;}5-`w*2p-32;M7X}hX(Eh3Eb)1!fHldl+T zT$}7W>0yOWliFG50skz{Hu%s6U{|??ziC4o=ZYg^V5l?KL%KpFnQCg01&$_0`M2Kb z350_Bq!tbdnY*j>A&rmkFc8@62!2P$o=Vfslz{>h`y0$xsTbk$ohV}^>%6c!*B5U# z3Y=S%O0-p;*>5AN|HCUYakdKa%d}fNyBqEv6VlgdH$NoavaGS?pxpv>kp^fJL6?LY zYd8DLH*R_?N0p0DpL1Ba4zfB1RF%o2_;kv;yyNt5D%688_hPOiw+k1&2G_itZBk0v zt}_sv+-Cx-V0%uBT=kOJ@>#EJ-R-YROsLn9aPHTit(CS6FN&0NDT&=|6n`fTGB%d~c+S=Q zKy))ZFG959Dd%-PsrfR+u9^EU|7nSWQP~A~Wa#&W7hwRmzkbUA$|Q{R`iUp9CmU#k zDs{A2>9$h9qjVc1Fd2Jxv$8coBqn~dD4@GAJ(9w0a@_fqMt}wSZDN25(vW9-^yNcF z*m{*D0i1kNVZMxe;}?6fhEt~yk^LSOJaej5`Gp-Z6~4kKlnQc! zNh-{oI7t()(8VX`u0KBhiL2Yr@x(~&hzfXwm{pIEv+U$N$&J4l5#;gUQmhAXWR<;N z6S-*u{Kbt+)P3@JzR`6l@ugo)7MX~XXfEpejD$or*`@DXK4Y16MMv08@4n&3_bs>AP z3C$NN$$_mxp)Ablh!Z|v9J;b|HU`?#b|yGFPj|}Bg~+7{GtyIV4-_Cb>Lb!B{7P+) zD~yG}AQhs@0~PPCzY2)Qd_gWp32vE8Bo#8(I6sxMI{kJ>1<960&*hxcV4@p*b8(+~v$9Xr6gmx8$0#-_OrCOYe^L;3v^B<(V=S-x`08t{ zNgzg>uYC>MA{f%AnIwH`X|d~u+#C$f^lWM6dnvo~5wGkR=d!%mDpq>*ps%yd+?sP! zaJKd-xc>ctSfvCQ{4!4L2pXd+_M)Yj(dRAO&X_??aBZ&UNq zic?i#amo3)jatPb;ex7grU0ij)GPg;7RgWbmwRZiELpCg>$lA7V&?@W>Q5!4C-tl3 z^)_PQQXYc7NNO=Z?JAm58gv}}-6B})6O;dHGvC41v@iH&WOk1Dqq{1_BFxO~O^1k> zPv$%(Hu7 zi9sqzl-?NS8My)C-^Cq;@q7P*UIhR9s_5SzGkEduw+Me8+}g7#@Rr+wCJr>Q=P?J~ zao`FEuJFI*3Wc%H17#d<5EBn~DELtJz!!MK1g;kWE`MM1432}l*6_XhR5!k1G3&pt zs3Kb9T%wcrjwOK6_Y3-h__%-Jzo%+dy27VR;OnI1=>b{L?IHd(LU8v!>HaSkz5I0E zfghOZlqYZj2Gv zzQfmI@LPW&`5!fe6?3i-Cp8-ctCgJNgO6K+E75NNaojmBdN=v+Z#hXCN(}BK5B>+Q zWkpuu{mOELTID==D+aEKqJ(}0^&HV-gv-??H#P_IL9+_JnssOpZuwnWC6+S#I$Cbq zHhW@_#$b7oiQz8A<7)V*~2 zAI+VBiKuA^TXn!24{#OPwcLolb6k$_-D#RA1!N}OF`${B!p|4qzrV=MdKykiCXN5W z%7dzZiWh3{|Hl*-3DI#Gqq+Z>lkrmou$%v8iCt6dZtoj zc5uz-uOuR0;8n6KEJvv_W^S|3=j@A}<&bR9(=}J0nz1jG=%lsC5zL)DfQHg%@UP7z4M==I7Dw0R^u%Fqp@l~s{}QJ0biZA4 zwlrEJXDYCBhs;2aZht+0mnohe@N~@ctIC_H41TeyFFeY=vu}~OYtH$}#-DrSJ2NdT zmPTXy6i%=ZmiF1g^01B%%{n+gHOV_WTNxu*Z5NMNVIg8gO_XMJU=4~`2tDJ&K5xyA z?cZjrx`2^D56}0%c8TT;?^Ux>8@OJyvj59tO7bDV^xWO2`DQ!LH>ekj`o4=P7bL3l zU{X zydaLum&#NRGjz+@3$5tnalQq1Kz-DtTluO=T;NojsdvR8Puxf2b!=36pV!0&=>i| zuNGxy9RrAiFIq%q8KYabce*wdv|P)6&b|waxM?o(!TUanix?oFzRBL%P+KyoX28|s z5@7x=S_9*h8xM&HaG_WKaoOo_xo95zP_5)SKp^qzrnx%d8*x}Nq*`6L>3K-L){%|* zcmX`i@V>jV#XfxARMKChxyu05>iqg9?}(4$H~1X^a49X7nyIgAe#9Dl0S4fFe{-U7 z#mK{bl(^Wd# zxKL7g!D!CB5De#RUFYr&w7Zla}ma3SeMXAK+FXCI>6gCK`vYU|`O-oS zJoHfqvTaw8CkmIzpC0G|r|+=>i+|*xBlv0bFC%NX2?Z{0*1x|<_s_pSV0ZlB*1mEM zG(kAf#GVEYyyGA!{QtSa+U{)sH^;uqY=?$i4qc^ed4j%m-78o&Q0L+Z-7C5gx*2L- z^w0zDehlx(lKFeO4C|1n>A0~|y+0#{FqKfwc_ zCKWIzOn^*@{;5mRnJZAD)uJ3^_G0kr`%1p{yq{3>L%B=jkgOmma>&->uBan#9wvd7 zaZ9w&MBFMTPV`6NFgweJkc#KZC9P_x{;96THXX7U~xelW~@7n0=$)wNmpVDe`r zHwYplTvfTKOEU3zOA7%0GctSqc*Z^D=x3&hkLdzVLEFhKGQR_z^U?e+7L@ z89I8#x#|`_7nCIcgkt$QucCv0sYL}P@`B>pkR8l@HiAw9IKDdkbh)Dr9bKx%fv0gV z2T6p~eFdYL!l*OG$P)iaA5{|tXQ;sK6ct~=c&0E+#d)*y-0WE83~+8;|Ee!#BHMZ# z27FcEJb0Ia`X2W=aKHd2_+$Q6V&yyX^mRxGU!MpthXc&YzRBeLh}VVDJ{y43K3FlcKX)+f08iZAFw5dJtct_=mASt zN6@u5@HZOozmq?E0U|ANV><`ol7WiJUk(aSR&8&W{=D(asW{3XC-IRI_t2ZIda|pE z5?XTxu#^JjI&UNhLiTLQ!Ry>NnaPKsF`s3Nq6G*F1A?9BUXT0b9i-+_JUjL!Z>97q zX_lZXbpCktWDj_Oer*?Uy#k~}THss!Bj{==P+?kN6OI)GYV8tSk6V0&d6m!c%7>Q< z%A(BVczgs}I0J}!oh)xX#E&pzAcwmA4eC6^!5g42x9D()AM+0`1*yr9lR)u5O9FPn z!2S@|$x}|YpgDprTEg$_4Cqca0!f_P6r)5Tiyu5)z}Bz$QVxl{9Gv_|f-vz*QY-mW zUcxn2tb}AHts;DuB|Z#bHsCIA6$4D>^}9SYp}PiA82t4^l05S9ZV@Z&4bkyS_P+jb`nYqCLx zdF!LQeI4MzQ6bRe2)aWvs3uLGiY)o-BxD$huKUW~d6^E<_TQq*QeTuyPpeXpB-2Wx@hCL#*L%O6`u!PkA2cp{px(l+Z-@ z7F{#&qn#&A^oZMNKjCq}*1-V`RV|gz%BV;G4-juhP5=M^ literal 0 HcmV?d00001 diff --git a/ShuttleTrackeriOS/Base.lproj/Main.storyboard b/ShuttleTrackeriOS/Base.lproj/Main.storyboard index ac998a2..8f6376c 100644 --- a/ShuttleTrackeriOS/Base.lproj/Main.storyboard +++ b/ShuttleTrackeriOS/Base.lproj/Main.storyboard @@ -1,10 +1,10 @@ - + - + @@ -16,6 +16,20 @@ + + + + + + + + + + + + + + diff --git a/ShuttleTrackeriOS/ViewController.swift b/ShuttleTrackeriOS/ViewController.swift index cdce6dd..49ffd85 100644 --- a/ShuttleTrackeriOS/ViewController.swift +++ b/ShuttleTrackeriOS/ViewController.swift @@ -10,17 +10,68 @@ import UIKit import Mapbox class ViewController: UIViewController, MGLMapViewDelegate { - + @IBOutlet var mapView: MGLMapView! - // ================================================================= - // Probably put these variables in another file, but put them here for now + // Get shuttle tracker info + let vehicles = initVehicles() + let updates = initUpdates() + let stops = initStops() + let routes = initRoutes() + + // Store info var eastCoordinates: [CLLocationCoordinate2D]! var westCoordinates: [CLLocationCoordinate2D]! var lateNightCoordinates: [CLLocationCoordinate2D]! var parsedRoutes: [String:[CLLocationCoordinate2D]] = [:] - var vehicleIcons: [Int:CustomPointAnnotation] = [:] - var timer = Timer() + + // Display + var eastline: CustomPolyline! + var westline: CustomPolyline! + + // Check whether a route has been added + var addedRoutes: [String:CustomPolyline] = [:] + + //var timer = Timer() + //var vehicleIcons: [String:CustomPointAnnotation] = [:] + + + @IBAction func toggleRoutes(_ sender: UISegmentedControl) { + switch sender.selectedSegmentIndex { + case 0: + addRoutes(addRoute: "east") + addRoutes(addRoute: "west") + case 1: + addRoutes(addRoute: "east") + removeRoutes(removeRoute: "west") + case 2: + addRoutes(addRoute: "west") + removeRoutes(removeRoute: "east") + default: + break + } + } + + func removeRoutes(removeRoute: String){ + if let route = addedRoutes[removeRoute] { + mapView.removeAnnotation(route) + addedRoutes.removeValue(forKey: removeRoute) + } + } + + func addRoutes(addRoute: String){ + if let _ = addedRoutes[addRoute]{ + + } else { + if addRoute == "east"{ + mapView.addAnnotation(eastline) + addedRoutes["east"] = eastline + } else if addRoute == "west"{ + mapView.addAnnotation(westline) + addedRoutes["west"] = westline + } + } + } override func viewDidLoad() { super.viewDidLoad() @@ -30,40 +81,34 @@ class ViewController: UIViewController, MGLMapViewDelegate { mapView.showsUserLocation = true mapView.delegate = self - let vehicles = initVehicles() - let updates = initUpdates() - let stops = initStops() - let routes = initRoutes() - print("Initialized \(vehicles.count) vehicles") print("Initialized \(updates.count) updates") print("Initialized \(stops.count) stops") print("Initialized \(routes.count) routes") parsingData(routes: routes) - displayStops(stops: stops) - grabVehicles(vehicles: vehicles) + //grabVehicles(vehicles: vehicles) //scheduledTimerWithTimeInterval() + } // Wait until the map is loaded before adding to the map. func mapViewDidFinishLoadingMap(_ mapView: MGLMapView) { displayRoute() + displayStops(stops: stops) } - - // ================================================================= - // Probably put these functions in another file, but put them here for now - // Display routes func displayRoute(){ - let westline = CustomPolyline(coordinates: westCoordinates, count: UInt(westCoordinates.count)) + westline = CustomPolyline(coordinates: westCoordinates, count: UInt(westCoordinates.count)) westline.color = UIColor(red: 200/255, green: 55/255, blue: 0, alpha: 1) - let eastline = CustomPolyline(coordinates: eastCoordinates, count: UInt(eastCoordinates.count)) + eastline = CustomPolyline(coordinates: eastCoordinates, count: UInt(eastCoordinates.count)) eastline.color = UIColor(red: 120/255, green: 180/255, blue: 0, alpha: 1) mapView.addAnnotation(westline) mapView.addAnnotation(eastline) + addedRoutes["east"] = eastline + addedRoutes["west"] = westline } // Display stops @@ -74,42 +119,10 @@ class ViewController: UIViewController, MGLMapViewDelegate { let coordinate = CLLocationCoordinate2D(latitude: stop.latitude, longitude: stop.longitude) let point = CustomPointAnnotation(coordinate: coordinate, title: stop.name, subtitle: stop.desc) point.reuseIdentifier = "customAnnotation\(count)" - //point.image = dot(size:15, color: UIColor(red: 20/255, green: 80/255, blue: 200/255, alpha: 1)) point.image = dot(size:15, color: UIColor.darkGray) mapView.addAnnotation(point) } } - - // 1. core animation - // 2. Add annotation and remove it - // 3. Icon - // 4. Mapbox MGLayer - // leaflet - func scheduledTimerWithTimeInterval(){ - timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateVehicles), userInfo: nil, repeats: true) - } - - @objc func updateVehicles(){ - //changeCoord() - } - - func changeCoord(){ - UIView.animate(withDuration: 1.5, animations: { - //self.point.coordinate = CLLocationCoordinate2D(latitude: 42.73028, longitude: -73.67736+Double(self.count)) - }) - } - - func grabVehicles(vehicles: [Vehicle]){ - var count = 0 - for vehicle in vehicles{ - count += 1 - let coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0) - let point = CustomPointAnnotation(coordinate: coordinate, title: vehicle.tracker_id, subtitle: vehicle.description) - point.image = dot(size:15, color: UIColor.orange) - vehicleIcons[vehicle.id] = point - mapView.addAnnotation(point) - } - } // Parsing longitude and latitude of points into a list func parsingData(routes: [Route]){ @@ -124,7 +137,7 @@ class ViewController: UIViewController, MGLMapViewDelegate { westCoordinates = parsedRoutes["West Campus"]! } - + func mapView(_ mapView: MGLMapView, strokeColorForShapeAnnotation annotation: MGLShape) -> UIColor { if let annotation = annotation as? CustomPolyline { return annotation.color ?? .purple @@ -160,5 +173,47 @@ class ViewController: UIViewController, MGLMapViewDelegate { // Set the line width for polyline annotations return 4.5 } - + + // 1. core animation + // 2. Add annotation and remove it + // 3. Icon + // 4. Mapbox MGLayer + // leaflet + // func scheduledTimerWithTimeInterval(){ + // timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.updateVehicles), userInfo: nil, repeats: true) + // } + + // @objc func updateVehicles(){ + // //changeCoord() + // let updates = initUpdates() + // for update in updates{ + // if let a = vehicleIcons[update.tracker_id]{ + // print("Prev: \(a.coordinate)") + // a.coordinate = CLLocationCoordinate2D(latitude: update.latitude, longitude: update.longitude) + // print("Post: \(a.coordinate)") + // } + // } + // + // + // } + + // func changeCoord(){ + // UIView.animate(withDuration: 1.5, animations: { + // //self.point.coordinate = CLLocationCoordinate2D(latitude: 42.73028, longitude: -73.67736+Double(self.count)) + // }) + // } + + // func grabVehicles(vehicles: [Vehicle]){ + // var count = 0 + // for vehicle in vehicles{ + // count += 1 + // let coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0) + // let point = CustomPointAnnotation(coordinate: coordinate, title: vehicle.tracker_id, subtitle: vehicle.description) + // point.image = dot(size:15, color: UIColor.orange) + // vehicleIcons[vehicle.tracker_id] = point + // mapView.addAnnotation(point) + // } + // } + + }