From 85abb4b57eae87fe5df8960ffec500267613fe04 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Tue, 17 Mar 2020 18:59:29 +0100 Subject: [PATCH 1/2] Add a blinking marker on user position on geolocate fix #339 --- umap/static/umap/img/24.png | Bin 14755 -> 15600 bytes umap/static/umap/img/24.svg | 161 ++++++++++++++------------- umap/static/umap/js/umap.controls.js | 56 ++++++++-- umap/static/umap/map.css | 26 ++++- 4 files changed, 158 insertions(+), 85 deletions(-) diff --git a/umap/static/umap/img/24.png b/umap/static/umap/img/24.png index bfac46bef523ceec9ba104e1e8e99fcc11784a33..c4a9bddfbefb9c36b9a290da6a7bdcfa43ebf499 100644 GIT binary patch literal 15600 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 literal 14755 zcmb7rc{Eh<-~SzZ_Mwp7M3O!GE=|^up^%*nLS!e)lrSnpL&jPdO7=Col7vB0)+{AM z)-s{7J|EBTpWh$f=bY!c=S+_29(U$*-=FvUwcW(4W(F*byo?Y8u^1U5QQ+r?;}-)R z_%|{8$N~JI3Dh&PVgN@Z!%Zys{e-`vZ6G+m>i7kVa<|G4@dvD)Ejsl#Do1U~w@O2`KHX|7*Dp6{yHS7LnuRFEE__4tM{XFh-1lqg zHMcLB4-|W4TF6n+F+`u5w{g>Pw!-QgV~@C3i92DKaME2Jq0X-VaJbPtXK929X46_( zTdRb8E;34F)BdN+(kS2ds|x8q>Dd!uc~@mu+Y-tzmqh1Jy-ipt8#Z*-OzVtM)a zyowHT@4uZpfefNo)|PC<7l&{9Po89;IV;YQD8y-@g%Nqfph)OBr>>=eL5~6y zCLH{8T3+wPRm$$xid`IgYuCR1d-v|$BWRyP*M-YA&)PV* z*8lrEkHB)1pFR$(sz<+B5tAwS4HmlCgoWDnc4v~w1NIHE4jfA7G^@sE5yCfR-Xs|+ z|8p1#Vq~ZyZ7Inhs>;+G(9oEfuV2%780|j4Sc$;m zHy}CX0be@*+Sv^qjoI?!#d)k>$VTl6bt3=L6TTQD)VVrCylNs(%xN#~bwkEbE8b9) z^_I8y-aFsD($}vS*@xYr{n&G)N&x`@1CjoUYmWSdFJ8DjcDH59q^xUgkI%1nKjNNc znX_38q3Zlz?4_NN(hSob+qwj^e@|?Aesm&U5Hg1k)5g2Brpew#-8ocNf(D@~b1qv) z;Q~&UuCOys%DUwDo(OG`;E_pKlI9KG?MU(owh#U@4Q&-)xHoi4G9yNspOtaZ8UIo z$`pGY_L$n;f9re-lg}|M2sOkXeBe{U6!0`q>+}*$5|xH{^Yr93rod$#o2>*O;9SIq7hfX(m=3fo?t zs7*&PeQFG3hdZ!2JKbDDHIaDCxJAB7ppu&0z*V*4UG_he@9y5mZ@7|jTDApN4cpb)^(4@Dj9}-MWO*fj{IU)98+tX=86Lnfh%BE_LB9-H|F*!MTdTniO z=&yB^WG(8&)tBFD%4q*JTZ&Td;}eS5WFM$12GgCNl11#cPc`74JsT1&FoBhYRFBs~ zB+9{|?d?-MjB&>Jrj80L{>~}0>8R@3ij|fYcS}(F@J?KG+PBo@lSW)pHosfhU6nEG z(VOU1W!6dgh$M;6sblh&!3L6L6`pEdUte#WZXgsD6%h&wsNCJ%N9_HdfNP}Va97G- zz6^^YX3BqmJ6W<4kz276SU9|NW@(RQstA|moJBH=?ug-6a2l}=Cq`D{Hh((Hh1q~@ z?~H!(#89+!uSu)2uy9`V@327MPky5P(^rQV)jk*oGD72lLt3-?M}CijTGL9rrd*+C zxQvW;dkYJ=tfXYNIz(^Oz}|B0`t@i>N5?}B__QGskM`QVY}~}DV370chi^)$&+qom@Ycib8JUDDU!M8Hx z;~Jq~UVk||r9YmPem`FAmQU-ihM_{Y zM}Q@uXZxUx*flFwB<^1URWjCWj{HK>r<`7{FboVAQJB4EX{k_NT#Rle*Y`>t_aFIi zbBV8)kR7z2?q&}x%}^o~gnM{inWernX%Y=V-?T5OtNYvA*Vk9=){{If-F-1l+R%x$ zCh-!u)v|~JJ{V4p{MGJu(}LMkadSso6za3OA^8I9OrocK^9nI%;C!f*$0OzPyAE0X zwb&(hs8SR(&X%IHRZ=T2zU&br71|GT?6kDB4kn+~y7|zVrIKU8B5nTQVO`|n=9Vol zE90+U$gndrT@)4*6B~iq)6SLF)YRmDR(roRTv%e3rTD7k`SUqbbUR~gj>Q+nwOL4e zO_oJLNR*J15n*bqCfF%|`r!uM?`7vz>MEZnls&ib;)+1C7<-QmOYz;js2deHb-DbN zlM`2MZ2swK=5760scC3vNFlrQ6d65bJ^VXj&gMZPL-tlzulnn|yDyYGMN=03=H=xT z!g5&W(l$3YE&KZWkLGULF*`FsuOY?c(+Z?@i$Z+?&{3eruqvuf0_WK)|3;jBvUOq( z7ooE-T{#}jH0)>J-%`-;2Nf&N6v&T=`_vFO%y4V~26vd6o{qZ5H?M>qTzsVDHlbF} zGwk`7dud8So8JGozXmO&dH8R>AA9a~LN39TNlcefwdAj#5FQed%A&@-?&=$_uE z;+0b8&V`-%D)J$TuQ3$tW+Nk`UOq_X?HD~S*1c-w%8}WiW7FGraZJ|KJgchb1**d| zwRJ2D$^`+Qs(}F>k_BP`@H)4`r0%n$av4h9NDN%`S~>eW~u5*QV6O~8LGYO5N$0% zNO`bs=@;angTd$bJ-H&rky!2P>)TXu_vic8a5A{k!{mDh#rX_(Nx#-@q?G*@`qD2h zUNqmHvWDIeT3h#JL4g}|&BST&Zm-{4Nn9dvnrq5WKOVrOqS|Sl4Y(iHxK`VQH%rXi zLpeA^DZq1opza894u9F+-mbhLM(mRZXo?NHB;e!Y!UZ2Tot~a1Cy+HS#TZJMICs3- z%XSVMQ5OeCm-a{5r>aq6)wXy7lRo$ za1pPHG?Z}a8Z&=R2x#=m>fkwlH|?8$7fW}cev&%8v#HANVLf!X^iBKp_UPXs$i6LP zZBk=UlT6&AG)Q!-X>;k(#IZY_`%Wlca*3H2DA@19^ZrxDQ?TV*$7&CVvQSX9g7^BQw z=zh-ESj?1(iuoebFn4psMyc1NIC*i%DYcc0nNA2%&}Er+Fr_%a;xF2CJN;eO9L&-}^OJU;AcH>2ju?9y)b;3NQTnM`&92xTAu~HxhrW*b< z=yFd9EZ7KzmOmX$Y{WosA^;?Ai4jh<*6jJc^lW!`*8ztr>C}F9sDqAHEMWYWNW3}s~ULPci=lL%L6(;;&4g=o!eNFwSsDtaq5*JL#g)b_m z&S(wd4=+8<$5Yk}MO|4-OeYWoDGTE$HeI+v%;(9;<%ffbuOAxY{d0b7K#{0E>gkMa z-d~0i=5Ycr0qCl&ZFp>UL@;$6Hbk^w9v`la5#kuGfb{F!3?+78{xA%$2-2c&D@Kl7 z&M9uz8YmYt)!KVHLGOiYQJtZLS+#%2gHSYa+!@*HM#sWPIX86zWCant- zT2DY*0S`r|*i*ePb}4iJ`18-b*efsLqCRyfA7awhIQ$e`0Orh>KeW?~`}_n&cj?7d znYZ+t#&SIST0SQht_-cu5ciQ_r%qzm@E@mSHQoDg#!#p^{(}1j1r=AzlB>v|`z|~? zi?0t;KjI`T2jO~;voE+CpTeAm+Eu{G^_C@O2XkwUvxCMl>Owx?9y5kmy+4OZ!Bb|y zn6LybDH0kq6y@MPrbLB}Q@2}oW}UF;=u zI-u(UJ2PDg$FMz=(6#>V+pnFysnK$~#(eey8L?kai@idA_Ok-a=T4eV0~PQOfDyl2 zyd|NV%&0E`iJn9D!QT=l^41bm?06VW3V8O;VTjg*PsjMU$Cal@c#7PHR`V-aHTzVs<~;Tyy?m3 z?<;VIpi%odQDGMj&&`za6=u&=v^jMqe<)NEbA|0d6_Q5vRq#JVn~qf6x^-*U`FX>Z zohn(k_@aT4#D+8J2hk{jmGDIw`Bxs^#x@rPh4Tr?lNXWMt>!zhPk0$$Ii4IE;d=LE zYb&dpkNxu=N+$m|0TjZN)6qcOo>>h}mX;&Aw{f%C@$vD#QvJJ$1pZ-o0cJ=&%|{knARstGxJ!1wf-~u?SJ;NPG{gYH?#T z&)1I1R`MQ=br|aB+v_R)&C6{%2A5zE|o6Pb~T){lRW-Xc38-XWB6^g z&8jdW;;KZjFnr)9x~ry)8Y13A$70bWqaR_r&FpmWd^}VmwPJ?2^%#k`bUUTk zYX|o6n!-=z@medj)U7$Yv8^t=TJE);B#4RYX33a<-SRI0DQ8>DxHo35n1UGxmYghH}4b&f~y*tm`_~3e3|=$YqbNu zsUiQSETD^BUEhBn?HVcId>ZDN9LB`u$ft~7#mYT4Ge(YGAj`V+SG)hXwb(?&m$jh2 z`-iommaVJYLlScRRlki)PYZ|^FhPIw3LODSKqBsRG6X#Ix!$(tI!-9SQ_$%4;5Vlt zSh{Rjg|nsQkIY0l8d>V{$^;7A+oL5-M{dZ!PsrXaeEnL|h37-M_h=bj_`x{6F15l2 zi*uS+)?#CQeNtWdG`0GCCozFO_HD~_gScIgLnU?9r8{^2D0R7CIv?F}r0$cWXv751 zRnI(%xy}|2c6Sa*vm5(1)oL*N$$@h!Y6fA!TEfkt0}EELCX za7+=uSG`dA?*FEwqGFv!1j+rm%DFth^HDdN1Sh(q-<;6>+W9C-vR2%T|lM9VwHYOL2!J$ zi_|mJ46Ad@_}$*?>MOcVUAE**NkSye!Rx1_*z&}eRGkAv`)=YThnVaC4h|o=RgX)d z^VaPjat;px9f2+?vviiLEA^fhEnnz`+y0E5f={xG!w;R4{wa47V*&&>Q5~}#Ula#Y zb^{op-+Kr0h+PSIT;kG2#4d$BiwS-BN$#2Fwr)gCCM(?n=iG zmo>zUjg4)T;BL8-$n8nu8+0b1jU9ro+x6n$>uc*!wfO>gB5tz;s_-DGBzht+i&sW8 zUEZuMgG!5ePwc@LQPnd8;$%=^;ycN|}r(x|RFtNIL3OeQ^su5xmJ?B%g7b#(M&d?n}$ z&sa;Ox3;$KN)mvu)P`?j?(9MS<;BEY2t0*xaHdcBhrv#Q?YqvH(Dgd7T)Ys-Z6eaV zNse^79;BVbrLm?~3j&TFraG;r5qU%VaH6@wS|O0{+nvXiSWg4-9}bQTbg_F>Z)BKq z$sTd+9!e@IY<9%5BFj#AmIvv>cYjv#TYYO#bcWmLf*!UoD?2-oaSJD3VFff3#!fZl zUrCYoHi*7!VqO9YjTgv41gr4m@LDl_q!|M`g#kh9oBTFdQo zsi3px2#7%@b?*!6@toiH&vePm<}~LTsea3oO%su> z8Y7BBSR|qx=#%bQB)fQ*I?(+`I1}H8KqS~XXOa$UePB`GL(xlX{3~OXel%CpQAd%B zfvRG*RGrt5ieGEWe6dR&{y|pGN31&lTbDTzCmt+G(R`ZcIq8OW0$Q;$RaeI<>zoTZ z89t1HOt4F0=tFyn`Wp;@DxKoiJIQIGrtpk9^F2`^lVX)W)Tp)j(v^>yZYTH#l^ofq zR}R@+@l1jcgqXaCpNBF|a&tE(bbY@KmC(k%jbR`5B}Q5TQjzvz>H5~3y=5!Ucuw8>4>u7L$%#MuQq9fj3x5ve$%bm_9g-?Llm-hxAgl! z|Mv8_59hHu814a?7-U(pTPQBL!7*A8(VdhH(_F>A&;fvvwo`$~5BvR`lWn^MipJtP z;!x-7H5+|exwd^Kl8j28pakC%0S}>uqD_!V$eYN*VZeDkAk5QkG(>CsYUNwQYn2Jr z%V{q>)grZLU7)mE^<`d@af4g=uJcE$PaT2e?*HN4PO-hZ`c#C1y1u4hhd}2e@Hv?v z`r-&b<)!9mUJM%ygS~P8?ei7m3eXK)#-|By-$CoA^xl*jyja;yf%X|XxsgHDfota= zws)-C-?BGgHa1R99YWA?C!Bk%mNvF|QN}D)bawD9aj!ViUM=Qu|CCon$C&wHsHOJ$ zr%#{c&SppK1wX!et|&btqas&3YWE^2m-}8>oL~=fDJd&I{24Vq&$7I-SWr-4cV*;c zu@@Lj1#jN`E5hwnu&4B_;85If3k-hap0rMe@9PHE21^HX zpQW9hMl#;--hqk@_1qFbVJG(@+fO9V81U<+qLwSb_2as}eWMmbP5{_ksCCa`}glp<0`D5k;BAr*{yoHAS0LYlymRjD@DRT6n2wwWOce9pKA`S(8vY_uh)Ne2 zHdMMXlOt@<8+J(1G@Ee_f78)J>!Z>)|A(R!o+q3Zk_wVOk%{yf(stVq*$a#$(zDhh zB^Cyef32a{ITIrz)xTu0WgZ3{@Z^igUq4D87LA6L3Kx+v1v^_O3lfn(4m2}Q5Uj3G z8=z;Nm`QZ^w(7mn@FEpkir$%0WA6HAWlRZ$=u7Npu1VB;XZ=jWy9-^eMlJhIjAl3f z>V5G5s~s5BKHHo5#*e3SHXX&1Rh-^@Gs{7ad;tZS0I>irz8o*(3=O?!yo#1D38Wp5PmuK?VRYdK4d`F-6uf{9GMZi z(sXbNgj3bwmJ2)q$pymTr!>Zx(ox;Lje**C{x*xP#`GCLA=bugG7mDBrAE^=oC={b zGs+FRxoeO~L`1~Qc_1df@|tw0+9On)(7Ql>gjD3zWxGahgushPzkK&mtlcF7+~(C|t=%~)dSA`6)kTQl%Z^i@cS zU>%>~y|2cvz7kvYN9qDZkZKAkv~sEVQ0m`Pz}XXUsWj~JZHZ&2Q^>!BGyw9(qp8Ws z_B50r^_)E9PKjFDh*6V6dYieP9mD0Vg>1cKVbiH%5>!L#GDwxN?bwb9Z`i!m8-MDFx-ee_4TdF z!4JJ2u*W-;$PQ{~L@_&Yi2;)Qd^0=+i#{H0P?=N5VE|;uKCIC7BCdyMO{F?S;pGbV z?2=Q5X=-B1PN20F#;(|^(ZNqGH*4R+*4*GXx>Q}U!ihswY)@NyA_}_kPu=6Of`IZ= zJSt)k8NA=7ediVsSi~TJKezV|rl5ZkaEC!+5>zz1F)QE1WIML?6nuQ>4*D=@D#Sgu z*z4E;t{*Ywee%4OkA2w7@CflMWd#V*D@~*6zSheS`cP`@o#j7Tg(HNMgCwGqQ_mjg z(&~_oNI_dBW$)wQpSxI32?g2vZ4%`f*kY=sfRPVCw&Mm8xlgC+r(es4E%Ga;Gb@yg= zgP28-Cv~+`!YYV4q8?x;LJ&tH4c7CNf;j!GWTK}QJRNpUydVJLyc-d*A6`{x4pw;W zt+W4$V*`;6p8J8w7xc<<>^gSoH2QF$v5l~l1RP_(gWatu&Q#X9YOj%EhtK2VFG)l^ znbUN{kxCAakJ09t?$j3OQXF^&iwu2E%O-E)TzTp5`s*Z^+*tssZ;wlx&j7$93mbPD z+Y(Z<8{DD03fl{{VV$EDc_9B8xoE&Rcx5^jfSryPV3;Wygz%M@m**Qv@Ih7vh}3(` zUsQf4sghYBR39(I-L=la@^j}QOb)UK4!$!Nql(7yr*X(1vYr|{0F$vJzU%uD41?SB z=&dhRl#*w5d%t{t@tw*C`81l?w?@c1didHP(Gpf9^E>_R`a55nIX99uOsZOHWdVo) z>n;l4{%17*pZ>=!@NGSr2P|S*v6qG@N1_d|G9Cd2*Hd0YuLsbW-`}O-DOjd1GBHf^ z&6>QwiDmoko<2S&dq;w@H7eBNIotLdA!plB z<*qIEQNV3p;?(&tG*y=?r-axoY)0x<;`P$&WsA-89p$3;|DA#MGx4vhEqKIwBM{3p zzsH{etLoE_?nmST9T|fC(u0YZ(V8-ku?mO12rvo}>Znx~^e*@y4V(oD=>RMQt`=UF3Dk|BR~AJe*`m-8Ix=wz&* zk}271+yhU3IHG62M#J^7Xr?(HYo@|HpBFjxHG6q^`BIMDk&eHN7}UzNSEl0J&l@8& z7#@k(<;Da~PEBP`H*}|Zs46XdW?UpwkN=%eeTp~W9PX`3fmGzlIs$tQ^q-*TrU ze(@SQOvr%*#(nqx3?*uYpP5^XBZ{)b1k<(?ae9-$Rj)W(aPw0gh)&Q!smE>#YD6&d z_gg#9EH0YgeB;euA%9=s0#Jb9@VvCnsVmWT3Kx-tO?D=IQMLB|I0|V}chYL-S9aHw z&F6e7hJH5>Ew%sxK&10OrQpPqh^z?i{}4n&bq}!^r^(kj3XM{S0SQDh*r5aLp7gU* zcae%ya*sntzU}dWbS&y6Yi;1gbRf- zr&czziThRTKk|)V=^-XrI#Z$ZmYnkBKfrl#{K;MV>J^1)^&H6pp&mRNwbQ0y8Pj@9 z?QhgA(IA@Pn0)-k#_Fmjoy-9XA206*n~W_n)D0W7b{tmb{&c`aiQpIP1*!O>p+)k+ zw8h7@>4u=ZZL!*+_R?s*M7{-y{yjzNtv5{_!QJm zC09~dc*ghrW>!{Kc_sw~O>qp*0|~ehngj2&!Rp>d|FQoxJbZ^>*I*>E_%_<*aiGjJ zn?~9}3anKRxq?@dfVKG{QdOrG$!)PoZ0M5>g}aF_FG^f9Meb!6H}Tnjpg1+EZ4+Em zrQO<2ZZn0mDs-42W9a=&5UKxShZcePD-HpWNg2Bm>@M&{?IfdDR`Ec>{7GVKRY{45 z!HA+?$h#|N>Fp);lX$n9TzLF4i^I#<3+R#^dEvQd37X1N>a}kZcbZ`cbrB$dXRZ5! z?xsGX2srJRm(fP_gG@kN*9j^jN6*3m5G^D=vz z(rEVlaRcI(Bfo$uFw++fro&fedWZ@*)R@N3vayK?Cv+c5u9flzX&JHTj*iFJ=yybG z^}ZU*m6esyUoCy#z^+&z?pyl=J(Pvz7$Zj@qW@39v^HFVqA6dA*W_Tbr6%K)1T=^7 zS?-^dcdZ_`hxSy3@*AWiGbdGm6%dWcN;MP>39RFWpn-t_CYPOqr(+dQQOyXsn2#a} zk@VSz1wiB7SF>#QRE*%luvCX7p8FZE73F`*C;T3thPwLXuJPX=k7RE@N;+ySa^OR{ ztAoR(pVvFXeW7UU6Zf&t;Jm^yV}?w5cU?Ln89$XdA&Ow>1UKLWG)46f=%#xB!P64= z?-hI15^#-xj?6Q6h2>xmUwiRV|6^0w_!XaI1PV}Md|YXnuIiarmI`0|pHieQc z8RHBE^5f#-;%i7Nm>spY(e+gE+JIwXCQl9@>`@}_j|7odff{z4k9xBcJfi3%T%f-= z&qdtt_gNl5Y6>2~mDhx3b4|59LJ-$NmiL+~T1tKC#~sc<>X_Ri?>F|0Re)mtFo;b9 z?u!^%Df&fsRfvIxu3W(8>Qy;v-4|pFXgmSSdP*;cc@DAoV%J!r-sOHAJ_Q6Eu9aj5 zaAKaqzQIBA3x~?$gvZc+?pI`spGQTv4=4^C70p-~AMok2fiw^8pRj!{i3KNML7mT} z=tBAGI~iz8+v~~jN8POVwRY*@(}Iae?cTFa=a21TXSTkJ$ey2BIs(YL-mVw82&Ji3 zv*-0+hANEQ2%jKKW>eD+k<&ReAAIi=pr87^TR-1jWwGLB0XBidtzGfFFjrcL69U%v z#eU!puwDtI(3VKjqm!v$iWXeCw=^RwE$xoTI{V-sLxXUN_X;vWFv3#|vzC@Gkwhxs zl-j6-p5wCS$P__p{|BhjX^YzP@zMeZy2`=m1sC@qjShJQMf1U?fijdM@TnHm@r4mR1d&Y45TcuH88Tt-R%RCcsGbZlXO zkdLq7ue}T8U{s%Zl=iG&je}MQ)!Lv~!CKmIE56Crm{R4HHRf)qubvrhd#egf_`(Kj z9ScoPVjoU^mD;UjYNvcvW4GEbjeOt$VY^*bRC(_T7yO+4tAqTz0_If)t}N=13_^)& z7fYu-zaK7@SwymJ|8osR7|W6OATF3qC(%8t*ny^{|4X9j!abNX-rZJ(L4+BheoZ16 zjuF2b8ccUdmETdCu+O%7hZWkddGX@=HmH9#)ChdI9rz8-9kVeq3PRL-ac;1%K3k`7 z?J0F2Rmi)2zyS#JdTb#U>Z~avKoz|;d3=yhe|8`J2F&?t&0FGrK&hJ?+1zEwb_YZ) z(^K$lCQWtk7mfKXjE`ki9M>z_K%-2Y+b|-x~-CycP z%BK$N@%maJQXrd-VpA`l2EwlbrZ#a&jbMeruHPFe4|!uaQa6o5SyPP*=>mK5fX>^F zm&8kdrqA?)kZzHWBjV0iHYel0OGT{+qqj)=?}YI zS6t{XnoYC6;po)izn1OO#M!wxZdH7XWmTdPHuCxNrZ&7SBjA_6!~*dO1;nwU&MM#T zg)j!G32_E!M_MSuT}*5;qW?uANWVDMY_#ufpVHd*29U7YY$A4)`_5TOZK~gw(ArP& zcIl{VgUH^ukhU9X1NxLnQLpJX*zq8-V^%UL86a-e0j6RofB8f2#H9y7LK)jF3!3}O zy3!#ApVmWGN)SN8<4@ICe~2?_FOI$ZIK3eMX(01JT^~5JM8$zS5J{{OKI~ZRwLbps z+c%H=S{2}a0=ba}Y80#V%4%rw%KDYD9w-*vU;u^Lk8K6T8bbgw-$a`YxY=d|$1;T! zote;@;)TF&@q*F@C;@0QIkFmnRwmw{>D8$LzM1B?axwJa;iE^hXp$WyTJq-Ue3>M6 z35AI03!l?=vpe#OfsRBAIGu;kw)s)p_|qvpv-DN6nEuWBvp2IymQYQW1r>y74wl<; zZ%O{6w+Vu%BGj)w+IHUZ*N&d~@0ecV%2?|;*0nwAf!a}`~IxVP`%2@*)T>y%@ zzPOk)0Z_qZFhy8?G2SEz9+8;yMMic&oX=-LZtO;Q5n4M)b;Jw0d=hnHC zeYR1-e|~f)xXk0GoW47b#igSX+(v9UVRLdG=0iFU*iG;hZAjtsDQNDz#6nZlH$FM! z7n<=KOZRl2p9|NTXq5#i%p{N@h)P`29Di5=8|Mw!gE4?WteL4a2n6@BEiM#zW!bg( z4$=H(U41sYK#Y`M?Qpus{sV>9&d2L;>uFv>s&Ee1RuR%cE+CTd7vI(&K*Hi9kc~ZL9`H+VIRwG{`9Iy-)Pj$4*g74Ne+|$TuB5$m6g^cH z04*m(9HFbG$Teasy}~ThTt&L1HM*@$gZth0s%~P*_Op1bBS^pX-6}8837Fsr5X1cZ zUN{fLx+Jq52I#7jla3^BQnbbO>)W?V0}Uk_X+N=gG@ix0&d$oR&xhUe^0M{f(Z^t; znOp9ru`=ntM%@Y#^0E(Q6?xwT=_0v@^0e+6JN?R}c(+*KDdj(hj#1c6(xaS}it#s* zlua#I*-g?}M03$j6e2>O!R4*C>}C{{&tY-0a|pX+)?c$t|C>g^iEd7J+zq!#Uy93O z0r>m`BBCl~>JHS?Qmv%p-2$!mTpB?@3 z<#8G+j}>TOIzbP;$a@FRSVotkox$!}BJfD#!8lHOJ>@ve0#?R*%Ifpk`x;{qi zT#ES_DcCi^rX$2>zH$$H*iAeE^*ZFo(8~#QF5$`sz#RE#Z)UNO4WjXaN%|VlYC35< zuGp)&#`d_Foj?FHbUa&5=WKycV`F29fF?)@v_Vi>kFCc*R(%Tl4~ucWrMxl4HQmO+ zSYY+dKF6sS?gS%lxsev2CywF* zNkqZS0ozADJfBXqgX9fh3TM%SXyuY@tW2J=@8rOlKhIkOZAv(|@4KCMg2so-19?G8 z#clr2zgg%DbhT<{)qZMt_z$}IZ!LOYG7dXlNgY8>tJ{dKo#yJ}e~NuiiUxsh)Fnk)%Ctr_UPSR{h5oGPk~deP(X73*Wur&$Ws# zbw}1ExbWmRU)z2@7`f8io>1HU-FZCfljw?zx1Y{3nX;Y_ti7@A{l}u8>-e1*L|AX% zzC9Q*qsey+GmgD<4R5O6K-!IW(YlsHksC=#3SleGLf!|t**!OMXT$FpYeB!|;12Z8 zk(z=rGPw`eL=yOGE+bMizmIENlh`r_!iD$k$qXhCe~Dw?QC3kY(OSH4_1okB-c_T2 zH=3HP(dP{BB>N_MW&j5B^L0fmtGXxZ;>EWUgFK$EwbKr`JKczpz8)SW-hS___m zLswwGJvwHO$loJ64R~*>f5@xavFHZu&%x;J-+@GsL6IkF%0Ihya8VDCIZKf7%R}Ab zfEYxyfgW=JYI97UX80O-;^S9y@JewV2qVu_{P_OAIR3DRub4hS_36B24P}6A!2KGg zXuezeE}!$4FR_YS9iGdkF-gg9{1(t}zZntcbNyx%iLdHX0}w3Zqn5sP&GVVaIJ{b@ zDqPy?O!ob&4%dR_{3i6D42r*X{w*i2XPDNJS&TQ~v0zJKxjF5s>TP(t zFVkG*Nzzv_jFBgo8j60lbNG6y2=@$z1-j^EIiA)mY%!Ba^vbrabBZ5*6YKNFLI0SO zn8HlTOHak!(-<@a6L~L^;huCyuW#|`d`{JQ9q9K9)G|zB;RgE95+oF;ld;7K2KoWK zk!Nb%icqjQB$NmQ(m3E|nJ?N{n}Hyehsb+bCDWE041bvVYm${s1MiBww?!%{fCdV3 zb_T{x=A_S>?Q1{3q^E%xz@E!c9F0OK+(HDiW;$|(FHv@O3CP3v6x!cR5P&g*KYsk6 z2f(@4_!W!1EBL!bO-+=h?^VNYKj%WM&kLMDT!>@$QwTIC{iM9btF`cUDgiH=UXnlp zMtMK%J$6Y(1o;fL%t83_JpG}ja?Iv3&vESO;N}As%*3#u(^4HGv~pvL zrj2#tn#z_nw?T?k){Rt_L)DoJ5Ml}QHD*ibsL{byKKCFXhWEKW0%+HzE>KEodYDDN7gH5_QdX+MhLIMU``1(5D45W!rG^q=e{=8#lNV0v+#**=1~DQMZ!aZN)E;l>kY) z_NTY&40nK+{AV>f>Nnxw>7tHb%ge@p(^IjmG;(HRTh^IP!q#VMUzC@xF^y+&K~*-! zwryd5emK1wX8rs7W1Rg5o;HE`7-UduElV4yt1s<~~x!2yKlIgQM*TOMei9?OR%BVgScuhLua}dBtQXroh2L{1aXWQ!o z!m9&`KzW{KcJ=|Dq0h_ZzyHurzRoEMro@aNqjI09#e8@22hfEZsmHYjr16DG)WtyT zIw4{vTEJI?n@=cpOc}^8;|FAey9l@8GSV26542zfJY`Ay_K?w6*pNzc@=O#|ak^Ap zOF5?I&f^0die7>M?8T{#rp3I2Jg-l|ZCTigb@ARe;PC^Y1vF_6Bs!nL#tp`{mS2>O zxskh-ShS%hsM}0-_Y^G~7b1YmA5gn~1vt@EZ&bJ*tzAf~`=F(Nwn7^7tJ#sRQx{zV ztvWMa0xFC-EUf0`%a?avu56F*`*$BlnB&0Cg)}_y?ivycd#FAUhe$B-J7B+Knk#m= zT6TVqKY#@ja%3z^_seySaqpOe&J$QU^=P1d5UmvQAbv+A3sQaooe_c`jLJQp+8tW> zV6>0mNW>tPASUS5GImR}>e`>* f|KIVCL_SK=i7X_^uC;;(Dj}oGX2=RX=llN!HYHPP diff --git a/umap/static/umap/img/24.svg b/umap/static/umap/img/24.svg index 083830c9..5835faf0 100644 --- a/umap/static/umap/img/24.svg +++ b/umap/static/umap/img/24.svg @@ -13,7 +13,7 @@ height="200" id="svg2" version="1.1" - inkscape:version="0.91 r13725" + inkscape:version="0.92.4 5da689c313, 2019-01-14" sodipodi:docname="24.svg" inkscape:export-filename="/home/ybon/Code/js/Leaflet.Storage/src/img/24.png" inkscape:export-xdpi="89.996864" @@ -27,16 +27,16 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="31.678384" - inkscape:cx="65.861168" - inkscape:cy="104.42429" + inkscape:zoom="15.839192" + inkscape:cx="101.80916" + inkscape:cy="48.17346" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="3840" - inkscape:window-height="2031" + inkscape:window-height="2032" inkscape:window-x="0" - inkscape:window-y="55" + inkscape:window-y="54" inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true"> @@ -50,35 +50,43 @@ + id="guide3084" + inkscape:locked="false" /> + id="guide3086" + inkscape:locked="false" /> + id="guide3088" + inkscape:locked="false" /> + id="guide3090" + inkscape:locked="false" /> + id="guide3512" + inkscape:locked="false" /> + id="guide3872" + inkscape:locked="false" /> + id="guide25561" + inkscape:locked="false" /> + id="guide25563" + inkscape:locked="false" /> @@ -105,15 +113,15 @@ sodipodi:nodetypes="cccccccccccccc" /> + id="tspan4459" + style="font-size:40px;line-height:1.25;font-family:sans-serif">  0 1 + style="font-weight:bold;font-size:8px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;fill-opacity:1">1 - + - + - + - + + style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:4.28879309" + cx="-954.66473" + cy="-272.05554" + r="2.5" /> + d="m 102.3863,987.47517 -8.019138,4.91992 8.139348,5.3224" + style="fill:none;stroke:#464646;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - - + + + + + + diff --git a/umap/static/umap/js/umap.controls.js b/umap/static/umap/js/umap.controls.js index 82425e25..fd05cdb2 100644 --- a/umap/static/umap/js/umap.controls.js +++ b/umap/static/umap/js/umap.controls.js @@ -826,21 +826,63 @@ L.U.LocateControl = L.Control.extend({ position: 'topleft' }, + onFound: function (e) { + this._map._geolocated_circle.setRadius(e.accuracy); + this._map._geolocated_circle.setLatLng(e.latlng); + this._map._geolocated_marker.setLatLng(e.latlng); + this._map.addLayer(this._map._geolocated_circle); + this._map.addLayer(this._map._geolocated_marker); + }, + + onError: function (e) { + this.ui.alert({content: L._('Unable to locate you.'), 'level': 'error'}); + }, + + activate: function () { + this._map.locate({ + setView: true, + enableHighAccuracy: true, + watch: true + }); + this._active = true; + }, + + deactivate: function () { + this._map._geolocated_marker.removeFrom(this._map) + this._map._geolocated_circle.removeFrom(this._map) + this._map.stopLocate(); + this._active = false; + }, + + toggle: function () { + if (!this._active) this.activate(); + else this.deactivate(); + L.DomUtil.classIf(this._container, "active", this._active); + }, + onAdd: function (map) { var container = L.DomUtil.create('div', 'leaflet-control-locate umap-control'), link = L.DomUtil.create('a', '', container); link.href = '#'; link.title = L._('Center map on your location'); - var fn = function () { - map.locate({ - setView: true, - enableHighAccuracy: true - }); - }; + + map._geolocated_circle = L.circle(map.getCenter(), { + radius: 10, + weight: 0, + className: "blinking" + }); + + map._geolocated_marker = L.marker(map.getCenter(), { + icon: L.divIcon({className: 'geolocated blinking', iconAnchor: [4, 7]}), + }); + + map.on("locationerror", this.onError, this); + + map.on("locationfound", this.onFound, this); L.DomEvent .on(link, 'click', L.DomEvent.stop) - .on(link, 'click', fn, map) + .on(link, 'click', this.toggle, this) .on(link, 'dblclick', L.DomEvent.stopPropagation); return container; diff --git a/umap/static/umap/map.css b/umap/static/umap/map.css index 121f2597..18c6d2c5 100644 --- a/umap/static/umap/map.css +++ b/umap/static/umap/map.css @@ -76,7 +76,11 @@ a.umap-control-less { background-position: -122px -82px; } .leaflet-control-locate a { - background-position: -2px -122px; + background-position: -1px -121px; +} +.leaflet-control-locate.active a { + background-position: -80px -161px; + box-shadow: 0 0 4px 0 black inset; } .leaflet-control-search a { background-position: -41px -121px; @@ -1329,6 +1333,26 @@ a.add-datalayer:hover, line-height: 36px; } +/* *********** */ +/* Geolocation */ +/* *********** */ +@keyframes fade { + from { opacity: 0.5; } +} + +.blinking { + animation: fade 1s infinite alternate; +} + +.geolocated { + width: 10px !important; + height: 10px!important; + background-color: #3388ff; + border: 1px solid white; + border-radius: 5px; + box-shadow: 1px 5px 5px black; +} + /* ****** */ /* Mobile */ /* ****** */ From 08b065a16a43af0e18bb1f8df21539b39c8e353d Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Sun, 22 Mar 2020 13:43:21 +0100 Subject: [PATCH 2/2] Remove blinking to geolocation marker --- umap/static/umap/js/umap.controls.js | 5 ++--- umap/static/umap/map.css | 14 +++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/umap/static/umap/js/umap.controls.js b/umap/static/umap/js/umap.controls.js index fd05cdb2..91be2abe 100644 --- a/umap/static/umap/js/umap.controls.js +++ b/umap/static/umap/js/umap.controls.js @@ -868,12 +868,11 @@ L.U.LocateControl = L.Control.extend({ map._geolocated_circle = L.circle(map.getCenter(), { radius: 10, - weight: 0, - className: "blinking" + weight: 0 }); map._geolocated_marker = L.marker(map.getCenter(), { - icon: L.divIcon({className: 'geolocated blinking', iconAnchor: [4, 7]}), + icon: L.divIcon({className: 'geolocated', iconAnchor: [8, 9]}), }); map.on("locationerror", this.onError, this); diff --git a/umap/static/umap/map.css b/umap/static/umap/map.css index 18c6d2c5..b476a4e0 100644 --- a/umap/static/umap/map.css +++ b/umap/static/umap/map.css @@ -1336,20 +1336,12 @@ a.add-datalayer:hover, /* *********** */ /* Geolocation */ /* *********** */ -@keyframes fade { - from { opacity: 0.5; } -} - -.blinking { - animation: fade 1s infinite alternate; -} - .geolocated { - width: 10px !important; - height: 10px!important; + width: 16px !important; + height: 16px!important; background-color: #3388ff; border: 1px solid white; - border-radius: 5px; + border-radius: 8px; box-shadow: 1px 5px 5px black; }