123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382 |
- (function e(t, n, r) {
- function s(o, u) {
- if (!n[o]) {
- if (!t[o]) {
- var a = typeof require == "function" && require;
- if (!u && a) return a(o, !0);
- if (i) return i(o, !0);
- var f = new Error("Cannot find module '" + o + "'");
- throw f.code = "MODULE_NOT_FOUND", f
- }
- var l = n[o] = {
- exports: {}
- };
- t[o][0].call(l.exports, function (e) {
- var n = t[o][1][e];
- return s(n ? n : e)
- }, l, l.exports, e, t, n, r)
- }
- return n[o].exports
- }
- var i = typeof require == "function" && require;
- for (var o = 0; o < r.length; o++) s(r[o]);
- return s
- })({
- 1: [function (_dereq_, module, exports) {
- function corslite(url, callback, cors) {
- var sent = false;
- if (typeof window.XMLHttpRequest === 'undefined') {
- return callback(Error('Browser not supported'));
- }
- if (typeof cors === 'undefined') {
- var m = url.match(/^\s*https?:\/\/[^\/]*/);
- cors = m && (m[0] !== location.protocol + '//' + location.hostname +
- (location.port ? ':' + location.port : ''));
- }
- var x = new window.XMLHttpRequest();
- function isSuccessful(status) {
- return status >= 200 && status < 300 || status === 304;
- }
- if (cors && !('withCredentials' in x)) {
- // IE8-9
- x = new window.XDomainRequest();
- // Ensure callback is never called synchronously, i.e., before
- // x.send() returns (this has been observed in the wild).
- // See https://github.com/mapbox/mapbox.js/issues/472
- var original = callback;
- callback = function () {
- if (sent) {
- original.apply(this, arguments);
- } else {
- var that = this,
- args = arguments;
- setTimeout(function () {
- original.apply(that, args);
- }, 0);
- }
- }
- }
- function loaded() {
- if (
- // XDomainRequest
- x.status === undefined ||
- // modern browsers
- isSuccessful(x.status)) callback.call(x, null, x);
- else callback.call(x, x, null);
- }
- // Both `onreadystatechange` and `onload` can fire. `onreadystatechange`
- // has [been supported for longer](http://stackoverflow.com/a/9181508/229001).
- if ('onload' in x) {
- x.onload = loaded;
- } else {
- x.onreadystatechange = function readystate() {
- if (x.readyState === 4) {
- loaded();
- }
- };
- }
- // Call the callback with the XMLHttpRequest object as an error and prevent
- // it from ever being called again by reassigning it to `noop`
- x.onerror = function error(evt) {
- // XDomainRequest provides no evt parameter
- callback.call(this, evt || true, null);
- callback = function () {};
- };
- // IE9 must have onprogress be set to a unique function.
- x.onprogress = function () {};
- x.ontimeout = function (evt) {
- callback.call(this, evt, null);
- callback = function () {};
- };
- x.onabort = function (evt) {
- callback.call(this, evt, null);
- callback = function () {};
- };
- // GET is the only supported HTTP Verb by XDomainRequest and is the
- // only one supported here.
- x.open('GET', url, true);
- // Send the request. Sending data is not supported.
- x.send(null);
- sent = true;
- return x;
- }
- if (typeof module !== 'undefined') module.exports = corslite;
- }, {}],
- 2: [function (_dereq_, module, exports) {
- module.exports = function (version, language, options) {
- // load instructions
- var instructions = _dereq_('./instructions').get(language);
- if (Object !== instructions.constructor) throw 'instructions must be object';
- if (!instructions[version]) {
- throw 'invalid version ' + version;
- }
- return {
- capitalizeFirstLetter: function (string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
- },
- ordinalize: function (number) {
- // Transform numbers to their translated ordinalized value
- return instructions[version].constants.ordinalize[number.toString()] || '';
- },
- directionFromDegree: function (degree) {
- // Transform degrees to their translated compass direction
- if (!degree && degree !== 0) {
- // step had no bearing_after degree, ignoring
- return '';
- } else if (degree >= 0 && degree <= 20) {
- return instructions[version].constants.direction.north;
- } else if (degree > 20 && degree < 70) {
- return instructions[version].constants.direction.northeast;
- } else if (degree >= 70 && degree < 110) {
- return instructions[version].constants.direction.east;
- } else if (degree >= 110 && degree <= 160) {
- return instructions[version].constants.direction.southeast;
- } else if (degree > 160 && degree <= 200) {
- return instructions[version].constants.direction.south;
- } else if (degree > 200 && degree < 250) {
- return instructions[version].constants.direction.southwest;
- } else if (degree >= 250 && degree <= 290) {
- return instructions[version].constants.direction.west;
- } else if (degree > 290 && degree < 340) {
- return instructions[version].constants.direction.northwest;
- } else if (degree >= 340 && degree <= 360) {
- return instructions[version].constants.direction.north;
- } else {
- throw new Error('Degree ' + degree + ' invalid');
- }
- },
- laneConfig: function (step) {
- // Reduce any lane combination down to a contracted lane diagram
- if (!step.intersections || !step.intersections[0].lanes) throw new Error('No lanes object');
- var config = [];
- var currentLaneValidity = null;
- step.intersections[0].lanes.forEach(function (lane) {
- if (currentLaneValidity === null || currentLaneValidity !== lane.valid) {
- if (lane.valid) {
- config.push('o');
- } else {
- config.push('x');
- }
- currentLaneValidity = lane.valid;
- }
- });
- return config.join('');
- },
- compile: function (step) {
- if (!step.maneuver) throw new Error('No step maneuver provided');
- var type = step.maneuver.type;
- var modifier = step.maneuver.modifier;
- var mode = step.mode;
- if (!type) {
- throw new Error('Missing step maneuver type');
- }
- if (type !== 'depart' && type !== 'arrive' && !modifier) {
- throw new Error('Missing step maneuver modifier');
- }
- if (!instructions[version][type]) {
- // Log for debugging
- //console.log('Encountered unknown instruction type: ' + type); // eslint-disable-line no-//console
- // OSRM specification assumes turn types can be added without
- // major version changes. Unknown types are to be treated as
- // type `turn` by clients
- type = 'turn';
- }
- // Use special instructions if available, otherwise `defaultinstruction`
- var instructionObject;
- if (instructions[version].modes[mode]) {
- instructionObject = instructions[version].modes[mode];
- } else if (instructions[version][type][modifier]) {
- instructionObject = instructions[version][type][modifier];
- } else {
- instructionObject = instructions[version][type].default;
- }
- // Special case handling
- var laneInstruction;
- switch (type) {
- case 'use lane':
- laneInstruction = instructions[version].constants.lanes[this.laneConfig(step)];
- if (!laneInstruction) {
- // If the lane combination is not found, default to continue straight
- instructionObject = instructions[version]['use lane'].no_lanes;
- }
- break;
- case 'rotary':
- case 'roundabout':
- if (step.rotary_name && step.maneuver.exit && instructionObject.name_exit) {
- instructionObject = instructionObject.name_exit;
- } else if (step.rotary_name && instructionObject.name) {
- instructionObject = instructionObject.name;
- } else if (step.maneuver.exit && instructionObject.exit) {
- instructionObject = instructionObject.exit;
- } else {
- instructionObject = instructionObject.default;
- }
- break;
- default:
- // NOOP, since no special logic for that type
- }
- // Decide way_name with special handling for name and ref
- var wayName;
- var name = step.name || '';
- var ref = (step.ref || '').split(';')[0];
- // Remove hacks from Mapbox Directions mixing ref into name
- if (name === step.ref) {
- // if both are the same we assume that there used to be an empty name, with the ref being filled in for it
- // we only need to retain the ref then
- name = '';
- }
- name = name.replace(' (' + step.ref + ')', '');
- if (name && ref && name !== ref) {
- wayName = name + ' (' + ref + ')';
- } else if (!name && ref) {
- wayName = ref;
- } else {
- wayName = name;
- }
- // Decide which instruction string to use
- // Destination takes precedence over name
- var instruction;
- if (step.destinations && instructionObject.destination) {
- instruction = instructionObject.destination;
- } else if (wayName && instructionObject.name) {
- instruction = instructionObject.name;
- } else {
- instruction = instructionObject.default;
- }
- var tokenizedInstructionHook = ((options || {}).hooks || {}).tokenizedInstruction;
- if (tokenizedInstructionHook) {
- instruction = tokenizedInstructionHook(instruction);
- }
- // Replace tokens
- // NOOP if they don't exist
- var nthWaypoint = ''; // TODO, add correct waypoint counting
- instruction = instruction
- .replace('{way_name}', wayName)
- .replace('{destination}', (step.destinations || '').split(',')[0])
- .replace('{exit_number}', this.ordinalize(step.maneuver.exit || 1))
- .replace('{rotary_name}', step.rotary_name)
- .replace('{lane_instruction}', laneInstruction)
- .replace('{modifier}', instructions[version].constants.modifier[modifier])
- .replace('{direction}', this.directionFromDegree(step.maneuver.bearing_after))
- .replace('{nth}', nthWaypoint)
- .replace(/ {2}/g, ' '); // remove excess spaces
- if (instructions.meta.capitalizeFirstLetter) {
- instruction = this.capitalizeFirstLetter(instruction);
- }
- return instruction;
- }
- };
- };
- }, {
- "./instructions": 3
- }],
- 3: [function (_dereq_, module, exports) {
- var instructionsDe = _dereq_('./instructions/de.json');
- var instructionsEn = _dereq_('./instructions/en.json');
- var instructionsFr = _dereq_('./instructions/fr.json');
- var instructionsNl = _dereq_('./instructions/nl.json');
- var instructionsZhHans = _dereq_('./instructions/zh-Hans.json');
- module.exports = {
- get: function (language) {
- switch (language) {
- case 'en':
- return instructionsEn;
- case 'de':
- return instructionsDe;
- case 'fr':
- return instructionsFr;
- case 'nl':
- return instructionsNl;
- case 'zh':
- case 'zh-Hans':
- return instructionsZhHans;
- default:
- throw 'invalid language ' + language;
- }
- }
- };
- }, {
- "./instructions/de.json": 4,
- "./instructions/en.json": 5,
- "./instructions/fr.json": 6,
- "./instructions/nl.json": 7,
- "./instructions/zh-Hans.json": 8
- }],
- 4: [function (_dereq_, module, exports) {
- module.exports = {
- "meta": {
- "capitalizeFirstLetter": true
- },
- "v5": {
- "constants": {
- "ordinalize": {
- "1": "erste",
- "2": "zweite",
- "3": "dritte",
- "4": "vierte",
- "5": "fünfte",
- "6": "sechste",
- "7": "siebente",
- "8": "achte",
- "9": "neunte",
- "10": "zehnte"
- },
- "direction": {
- "north": "Norden",
- "northeast": "Nordosten",
- "east": "Osten",
- "southeast": "Südosten",
- "south": "Süden",
- "southwest": "Südwesten",
- "west": "Westen",
- "northwest": "Nordwesten"
- },
- "modifier": {
- "left": "links",
- "right": "rechts",
- "sharp left": "scharf links",
- "sharp right": "scharf rechts",
- "slight left": "leicht links",
- "slight right": "leicht rechts",
- "straight": "geradeaus",
- "uturn": "180°-Wendung"
- },
- "lanes": {
- "xo": "Rechts halten",
- "ox": "Links halten",
- "xox": "Mittlere Spur nutzen",
- "oxo": "Rechts oder links halten"
- }
- },
- "modes": {
- "ferry": {
- "default": "Fähre nehmen",
- "name": "Fähre nehmen {way_name}",
- "destination": "Fähre nehmen Richtung {destination}"
- }
- },
- "arrive": {
- "default": {
- "default": "Sie haben Ihr {nth} Ziel erreicht"
- },
- "left": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich links von Ihnen"
- },
- "right": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts von Ihnen"
- },
- "sharp left": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich links von Ihnen"
- },
- "sharp right": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts von Ihnen"
- },
- "slight right": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts von Ihnen"
- },
- "slight left": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich links von Ihnen"
- },
- "straight": {
- "default": "Sie haben Ihr {nth} Ziel erreicht, es befindet sich direkt vor Ihnen"
- }
- },
- "continue": {
- "default": {
- "default": "{modifier} weiterfahren",
- "name": "{modifier} weiterfahren auf {way_name}",
- "destination": "{modifier} weiterfahren Richtung {destination}"
- },
- "slight left": {
- "default": "Leicht links weiter",
- "name": "Leicht links weiter auf {way_name}",
- "destination": "Leicht links weiter Richtung {destination}"
- },
- "slight right": {
- "default": "Leicht rechts weiter",
- "name": "Leicht rechts weiter auf {way_name}",
- "destination": "Leicht rechts weiter Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung",
- "name": "180°-Wendung auf {way_name}",
- "destination": "180°-Wendung Richtung {destination}"
- }
- },
- "depart": {
- "default": {
- "default": "Fahren Sie Richtung {direction}",
- "name": "Fahren Sie Richtung {direction} auf {way_name}"
- }
- },
- "end of road": {
- "default": {
- "default": "{modifier} abbiegen",
- "name": "{modifier} abbiegen auf {way_name}",
- "destination": "{modifier} abbiegen Richtung {destination}"
- },
- "straight": {
- "default": "Geradeaus weiterfahren",
- "name": "Geradeaus weiterfahren auf {way_name}",
- "destination": "Geradeaus weiterfahren Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung am Ende der Straße",
- "name": "180°-Wendung auf {way_name} am Ende der Straße",
- "destination": "180°-Wendung Richtung {destination} am Ende der Straße"
- }
- },
- "fork": {
- "default": {
- "default": "{modifier} halten an der Gabelung",
- "name": "{modifier} halten an der Gabelung auf {way_name}",
- "destination": "{modifier} halten an der Gabelung Richtung {destination}"
- },
- "slight left": {
- "default": "Links halten an der Gabelung",
- "name": "Links halten an der Gabelung auf {way_name}",
- "destination": "Links halten an der Gabelung Richtung {destination}"
- },
- "slight right": {
- "default": "Rechts halten an der Gabelung",
- "name": "Rechts halten an der Gabelung auf {way_name}",
- "destination": "Rechts halten an der Gabelung Richtung {destination}"
- },
- "sharp left": {
- "default": "Scharf links abbiegen an der Gabelung",
- "name": "Scharf links abbiegen an der Gabelung auf {way_name}",
- "destination": "Scharf links abbiegen an der Gabelung Richtung {destination}"
- },
- "sharp right": {
- "default": "Scharf rechts abbiegen an der Gabelung",
- "name": "Scharf rechts abbiegen an der Gabelung auf {way_name}",
- "destination": "Scharf rechts abbiegen an der Gabelung Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung",
- "name": "180°-Wendung auf {way_name}",
- "destination": "180°-Wendung Richtung {destination}"
- }
- },
- "merge": {
- "default": {
- "default": "{modifier} auffahren",
- "name": "{modifier} auffahren auf {way_name}",
- "destination": "{modifier} auffahren Richtung {destination}"
- },
- "slight left": {
- "default": "Leicht links auffahren",
- "name": "Leicht links auffahren auf {way_name}",
- "destination": "Leicht links auffahren Richtung {destination}"
- },
- "slight right": {
- "default": "Leicht rechts auffahren",
- "name": "Leicht rechts auffahren auf {way_name}",
- "destination": "Leicht rechts auffahren Richtung {destination}"
- },
- "sharp left": {
- "default": "Scharf links auffahren",
- "name": "Scharf links auffahren auf {way_name}",
- "destination": "Scharf links auffahren Richtung {destination}"
- },
- "sharp right": {
- "default": "Scharf rechts auffahren",
- "name": "Scharf rechts auffahren auf {way_name}",
- "destination": "Scharf rechts auffahren Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung",
- "name": "180°-Wendung auf {way_name}",
- "destination": "180°-Wendung Richtung {destination}"
- }
- },
- "new name": {
- "default": {
- "default": "{modifier} weiterfahren",
- "name": "{modifier} weiterfahren auf {way_name}",
- "destination": "{modifier} weiterfahren Richtung {destination}"
- },
- "sharp left": {
- "default": "Scharf links",
- "name": "Scharf links auf {way_name}",
- "destination": "Scharf links Richtung {destination}"
- },
- "sharp right": {
- "default": "Scharf rechts",
- "name": "Scharf rechts auf {way_name}",
- "destination": "Scharf rechts Richtung {destination}"
- },
- "slight left": {
- "default": "Leicht links weiter",
- "name": "Leicht links weiter auf {way_name}",
- "destination": "Leicht links weiter Richtung {destination}"
- },
- "slight right": {
- "default": "Leicht rechts weiter",
- "name": "Leicht rechts weiter auf {way_name}",
- "destination": "Leicht rechts weiter Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung",
- "name": "180°-Wendung auf {way_name}",
- "destination": "180°-Wendung Richtung {destination}"
- }
- },
- "notification": {
- "default": {
- "default": "{modifier} weiterfahren",
- "name": "{modifier} weiterfahren auf {way_name}",
- "destination": "{modifier} weiterfahren Richtung {destination}"
- },
- "uturn": {
- "default": "180°-Wendung",
- "name": "180°-Wendung auf {way_name}",
- "destination": "180°-Wendung Richtung {destination}"
- }
- },
- "off ramp": {
- "default": {
- "default": "Rampe nehmen",
- "name": "Rampe nehmen auf {way_name}",
- "destination": "Rampe nehmen Richtung {destination}"
- },
- "left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- },
- "sharp left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "sharp right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- },
- "slight left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "slight right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- }
- },
- "on ramp": {
- "default": {
- "default": "Rampe nehmen",
- "name": "Rampe nehmen auf {way_name}",
- "destination": "Rampe nehmen Richtung {destination}"
- },
- "left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- },
- "sharp left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "sharp right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- },
- "slight left": {
- "default": "Rampe auf der linken Seite nehmen",
- "name": "Rampe auf der linken Seite nehmen auf {way_name}",
- "destination": "Rampe auf der linken Seite nehmen Richtung {destination}"
- },
- "slight right": {
- "default": "Rampe auf der rechten Seite nehmen",
- "name": "Rampe auf der rechten Seite nehmen auf {way_name}",
- "destination": "Rampe auf der rechten Seite nehmen Richtung {destination}"
- }
- },
- "rotary": {
- "default": {
- "default": {
- "default": "In den Kreisverkehr fahren",
- "name": "In den Kreisverkehr fahren und auf {way_name} verlassen",
- "destination": "In den Kreisverkehr fahren und Richtung {destination} verlassen"
- },
- "name": {
- "default": "In {rotary_name} fahren",
- "name": "In {rotary_name} fahren und auf {way_name} verlassen",
- "destination": "In {rotary_name} fahren und Richtung {destination} verlassen"
- },
- "exit": {
- "default": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",
- "name": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",
- "destination": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"
- },
- "name_exit": {
- "default": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",
- "name": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",
- "destination": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"
- }
- }
- },
- "roundabout": {
- "default": {
- "exit": {
- "default": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",
- "name": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",
- "destination": "In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"
- },
- "default": {
- "default": "In den Kreisverkehr fahren",
- "name": "In den Kreisverkehr fahren und auf {way_name} verlassen",
- "destination": "In den Kreisverkehr fahren und Richtung {destination} verlassen"
- }
- }
- },
- "roundabout turn": {
- "default": {
- "default": "Am Kreisverkehr {modifier}",
- "name": "Am Kreisverkehr {modifier} auf {way_name}",
- "destination": "Am Kreisverkehr {modifier} Richtung {destination}"
- },
- "left": {
- "default": "Am Kreisverkehr links",
- "name": "Am Kreisverkehr links auf {way_name}",
- "destination": "Am Kreisverkehr links Richtung {destination}"
- },
- "right": {
- "default": "Am Kreisverkehr rechts",
- "name": "Am Kreisverkehr rechts auf {way_name}",
- "destination": "Am Kreisverkehr rechts Richtung {destination}"
- },
- "straight": {
- "default": "Am Kreisverkehr geradeaus weiterfahren",
- "name": "Am Kreisverkehr geradeaus weiterfahren auf {way_name}",
- "destination": "Am Kreisverkehr geradeaus weiterfahren Richtung {destination}"
- }
- },
- "turn": {
- "default": {
- "default": "{modifier} abbiegen",
- "name": "{modifier} abbiegen auf {way_name}",
- "destination": "{modifier} abbiegen Richtung {destination}"
- },
- "left": {
- "default": "Links abbiegen",
- "name": "Links abbiegen auf {way_name}",
- "destination": "Links abbiegen Richtung {destination}"
- },
- "right": {
- "default": "Rechts abbiegen",
- "name": "Rechts abbiegen auf {way_name}",
- "destination": "Rechts abbiegen Richtung {destination}"
- },
- "straight": {
- "default": "Geradeaus weiterfahren",
- "name": "Geradeaus weiterfahren auf {way_name}",
- "destination": "Geradeaus weiterfahren Richtung {destination}"
- }
- },
- "use lane": {
- "no_lanes": {
- "default": "Geradeaus weiterfahren"
- },
- "default": {
- "default": "{lane_instruction}"
- }
- }
- }
- }
- }, {}],
- 5: [function (_dereq_, module, exports) {
- module.exports = {
- "meta": {
- "capitalizeFirstLetter": true
- },
- "v5": {
- "constants": {
- "ordinalize": {
- "1": "1st",
- "2": "2nd",
- "3": "3rd",
- "4": "4th",
- "5": "5th",
- "6": "6th",
- "7": "7th",
- "8": "8th",
- "9": "9th",
- "10": "10th"
- },
- "direction": {
- "north": "north",
- "northeast": "northeast",
- "east": "east",
- "southeast": "southeast",
- "south": "south",
- "southwest": "southwest",
- "west": "west",
- "northwest": "northwest"
- },
- "modifier": {
- "left": "left",
- "right": "right",
- "sharp left": "sharp left",
- "sharp right": "sharp right",
- "slight left": "slight left",
- "slight right": "slight right",
- "straight": "straight",
- "uturn": "U-turn"
- },
- "lanes": {
- "xo": "Keep right",
- "ox": "Keep left",
- "xox": "Keep in the middle",
- "oxo": "Keep left or right"
- }
- },
- "modes": {
- "ferry": {
- "default": "Take the ferry",
- "name": "Take the ferry {way_name}",
- "destination": "Take the ferry towards {destination}"
- }
- },
- "arrive": {
- "default": {
- "default": "You have arrived at your {nth} destination"
- },
- "left": {
- "default": "You have arrived at your {nth} destination, on the left"
- },
- "right": {
- "default": "You have arrived at your {nth} destination, on the right"
- },
- "sharp left": {
- "default": "You have arrived at your {nth} destination, on the left"
- },
- "sharp right": {
- "default": "You have arrived at your {nth} destination, on the right"
- },
- "slight right": {
- "default": "You have arrived at your {nth} destination, on the right"
- },
- "slight left": {
- "default": "You have arrived at your {nth} destination, on the left"
- },
- "straight": {
- "default": "You have arrived at your {nth} destination, straight ahead"
- }
- },
- "continue": {
- "default": {
- "default": "Continue {modifier}",
- "name": "Continue {modifier} onto {way_name}",
- "destination": "Continue {modifier} towards {destination}"
- },
- "slight left": {
- "default": "Continue slightly left",
- "name": "Continue slightly left onto {way_name}",
- "destination": "Continue slightly left towards {destination}"
- },
- "slight right": {
- "default": "Continue slightly right",
- "name": "Continue slightly right onto {way_name}",
- "destination": "Continue slightly right towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn",
- "name": "Make a U-turn onto {way_name}",
- "destination": "Make a U-turn towards {destination}"
- }
- },
- "depart": {
- "default": {
- "default": "Head {direction}",
- "name": "Head {direction} on {way_name}"
- }
- },
- "end of road": {
- "default": {
- "default": "Turn {modifier}",
- "name": "Turn {modifier} onto {way_name}",
- "destination": "Turn {modifier} towards {destination}"
- },
- "straight": {
- "default": "Continue straight",
- "name": "Continue straight onto {way_name}",
- "destination": "Continue straight towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn at the end of the road",
- "name": "Make a U-turn onto {way_name} at the end of the road",
- "destination": "Make a U-turn towards {destination} at the end of the road"
- }
- },
- "fork": {
- "default": {
- "default": "Keep {modifier} at the fork",
- "name": "Keep {modifier} at the fork onto {way_name}",
- "destination": "Keep {modifier} at the fork towards {destination}"
- },
- "slight left": {
- "default": "Keep left at the fork",
- "name": "Keep left at the fork onto {way_name}",
- "destination": "Keep left at the fork towards {destination}"
- },
- "slight right": {
- "default": "Keep right at the fork",
- "name": "Keep right at the fork onto {way_name}",
- "destination": "Keep right at the fork towards {destination}"
- },
- "sharp left": {
- "default": "Take a sharp left at the fork",
- "name": "Take a sharp left at the fork onto {way_name}",
- "destination": "Take a sharp left at the fork towards {destination}"
- },
- "sharp right": {
- "default": "Take a sharp right at the fork",
- "name": "Take a sharp right at the fork onto {way_name}",
- "destination": "Take a sharp right at the fork towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn",
- "name": "Make a U-turn onto {way_name}",
- "destination": "Make a U-turn towards {destination}"
- }
- },
- "merge": {
- "default": {
- "default": "Merge {modifier}",
- "name": "Merge {modifier} onto {way_name}",
- "destination": "Merge {modifier} towards {destination}"
- },
- "slight left": {
- "default": "Merge left",
- "name": "Merge left onto {way_name}",
- "destination": "Merge left towards {destination}"
- },
- "slight right": {
- "default": "Merge right",
- "name": "Merge right onto {way_name}",
- "destination": "Merge right towards {destination}"
- },
- "sharp left": {
- "default": "Merge left",
- "name": "Merge left onto {way_name}",
- "destination": "Merge left towards {destination}"
- },
- "sharp right": {
- "default": "Merge right",
- "name": "Merge right onto {way_name}",
- "destination": "Merge right towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn",
- "name": "Make a U-turn onto {way_name}",
- "destination": "Make a U-turn towards {destination}"
- }
- },
- "new name": {
- "default": {
- "default": "Continue {modifier}",
- "name": "Continue {modifier} onto {way_name}",
- "destination": "Continue {modifier} towards {destination}"
- },
- "sharp left": {
- "default": "Take a sharp left",
- "name": "Take a sharp left onto {way_name}",
- "destination": "Take a sharp left towards {destination}"
- },
- "sharp right": {
- "default": "Take a sharp right",
- "name": "Take a sharp right onto {way_name}",
- "destination": "Take a sharp right towards {destination}"
- },
- "slight left": {
- "default": "Continue slightly left",
- "name": "Continue slightly left onto {way_name}",
- "destination": "Continue slightly left towards {destination}"
- },
- "slight right": {
- "default": "Continue slightly right",
- "name": "Continue slightly right onto {way_name}",
- "destination": "Continue slightly right towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn",
- "name": "Make a U-turn onto {way_name}",
- "destination": "Make a U-turn towards {destination}"
- }
- },
- "notification": {
- "default": {
- "default": "Continue {modifier}",
- "name": "Continue {modifier} onto {way_name}",
- "destination": "Continue {modifier} towards {destination}"
- },
- "uturn": {
- "default": "Make a U-turn",
- "name": "Make a U-turn onto {way_name}",
- "destination": "Make a U-turn towards {destination}"
- }
- },
- "off ramp": {
- "default": {
- "default": "Take the ramp",
- "name": "Take the ramp onto {way_name}",
- "destination": "Take the ramp towards {destination}"
- },
- "left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- },
- "sharp left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "sharp right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- },
- "slight left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "slight right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- }
- },
- "on ramp": {
- "default": {
- "default": "Take the ramp",
- "name": "Take the ramp onto {way_name}",
- "destination": "Take the ramp towards {destination}"
- },
- "left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- },
- "sharp left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "sharp right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- },
- "slight left": {
- "default": "Take the ramp on the left",
- "name": "Take the ramp on the left onto {way_name}",
- "destination": "Take the ramp on the left towards {destination}"
- },
- "slight right": {
- "default": "Take the ramp on the right",
- "name": "Take the ramp on the right onto {way_name}",
- "destination": "Take the ramp on the right towards {destination}"
- }
- },
- "rotary": {
- "default": {
- "default": {
- "default": "Enter the rotary",
- "name": "Enter the rotary and exit onto {way_name}",
- "destination": "Enter the rotary and exit towards {destination}"
- },
- "name": {
- "default": "Enter {rotary_name}",
- "name": "Enter {rotary_name} and exit onto {way_name}",
- "destination": "Enter {rotary_name} and exit towards {destination}"
- },
- "exit": {
- "default": "Enter the rotary and take the {exit_number} exit",
- "name": "Enter the rotary and take the {exit_number} exit onto {way_name}",
- "destination": "Enter the rotary and take the {exit_number} exit towards {destination}"
- },
- "name_exit": {
- "default": "Enter {rotary_name} and take the {exit_number} exit",
- "name": "Enter {rotary_name} and take the {exit_number} exit onto {way_name}",
- "destination": "Enter {rotary_name} and take the {exit_number} exit towards {destination}"
- }
- }
- },
- "roundabout": {
- "default": {
- "exit": {
- "default": "Enter the roundabout and take the {exit_number} exit",
- "name": "Enter the roundabout and take the {exit_number} exit onto {way_name}",
- "destination": "Enter the roundabout and take the {exit_number} exit towards {destination}"
- },
- "default": {
- "default": "Enter the roundabout",
- "name": "Enter the roundabout and exit onto {way_name}",
- "destination": "Enter the roundabout and exit towards {destination}"
- }
- }
- },
- "roundabout turn": {
- "default": {
- "default": "At the roundabout make a {modifier}",
- "name": "At the roundabout make a {modifier} onto {way_name}",
- "destination": "At the roundabout make a {modifier} towards {destination}"
- },
- "left": {
- "default": "At the roundabout turn left",
- "name": "At the roundabout turn left onto {way_name}",
- "destination": "At the roundabout turn left towards {destination}"
- },
- "right": {
- "default": "At the roundabout turn right",
- "name": "At the roundabout turn right onto {way_name}",
- "destination": "At the roundabout turn right towards {destination}"
- },
- "straight": {
- "default": "At the roundabout continue straight",
- "name": "At the roundabout continue straight onto {way_name}",
- "destination": "At the roundabout continue straight towards {destination}"
- }
- },
- "turn": {
- "default": {
- "default": "Make a {modifier}",
- "name": "Make a {modifier} onto {way_name}",
- "destination": "Make a {modifier} towards {destination}"
- },
- "left": {
- "default": "Turn left",
- "name": "Turn left onto {way_name}",
- "destination": "Turn left towards {destination}"
- },
- "right": {
- "default": "Turn right",
- "name": "Turn right onto {way_name}",
- "destination": "Turn right towards {destination}"
- },
- "straight": {
- "default": "Go straight",
- "name": "Go straight onto {way_name}",
- "destination": "Go straight towards {destination}"
- }
- },
- "use lane": {
- "no_lanes": {
- "default": "Continue straight"
- },
- "default": {
- "default": "{lane_instruction}"
- }
- }
- }
- }
- }, {}],
- 6: [function (_dereq_, module, exports) {
- module.exports = {
- "meta": {
- "capitalizeFirstLetter": true
- },
- "v5": {
- "constants": {
- "ordinalize": {
- "1": "première",
- "2": "seconde",
- "3": "troisième",
- "4": "quatrième",
- "5": "cinquième",
- "6": "sixième",
- "7": "setpième",
- "8": "huitième",
- "9": "neuvième",
- "10": "dixième"
- },
- "direction": {
- "north": "le nord",
- "northeast": "le nord-est",
- "east": "l'est",
- "southeast": "le sud-est",
- "south": "le sud",
- "southwest": "le sud-ouest",
- "west": "l'ouest",
- "northwest": "le nord-ouest"
- },
- "modifier": {
- "left": "à gauche",
- "right": "à droite",
- "sharp left": "franchement à gauche",
- "sharp right": "franchement à droite",
- "slight left": "légèrement à gauche",
- "slight right": "légèrement à droite",
- "straight": "tout droit",
- "uturn": "demi-tour"
- },
- "lanes": {
- "xo": "Serrer à droite",
- "ox": "Serrer à gauche",
- "xox": "Rester au milieu",
- "oxo": "Rester à gauche ou à droite"
- }
- },
- "modes": {
- "ferry": {
- "default": "Prendre le ferry",
- "name": "Prendre le ferry {way_name}",
- "destination": "Prendre le ferry en direction de {destination}"
- }
- },
- "arrive": {
- "default": {
- "default": "Vous êtes arrivés à votre {nth} destination"
- },
- "left": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la gauche"
- },
- "right": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la droite"
- },
- "sharp left": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la gauche"
- },
- "sharp right": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la droite"
- },
- "slight right": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la droite"
- },
- "slight left": {
- "default": "Vous êtes arrivés à votre {nth} destination, sur la gauche"
- },
- "straight": {
- "default": "Vous êtes arrivés à votre {nth} destination, droit devant"
- }
- },
- "continue": {
- "default": {
- "default": "Continuer {modifier}",
- "name": "Continuer {modifier} sur {way_name}",
- "destination": "Continuer {modifier} en direction de {destination}"
- },
- "slight left": {
- "default": "Continuer légèrement à gauche",
- "name": "Continuer légèrement à gauche sur {way_name}",
- "destination": "Continuer légèrement à gauche en direction de {destination}"
- },
- "slight right": {
- "default": "Continuer légèrement à droite",
- "name": "Continuer légèrement à droite sur {way_name}",
- "destination": "Continuer légèrement à droite en direction de {destination}"
- },
- "uturn": {
- "default": "Faire demi-tour",
- "name": "Faire demi-tour sur {way_name}",
- "destination": "Faire demi-tour en direction de {destination}"
- }
- },
- "depart": {
- "default": {
- "default": "Rouler vers {direction}",
- "name": "Rouler vers {direction} sur {way_name}"
- }
- },
- "end of road": {
- "default": {
- "default": "Tourner {modifier}",
- "name": "Tourner {modifier} sur {way_name}",
- "destination": "Tourner {modifier} en direction de {destination}"
- },
- "straight": {
- "default": "Continuer tout droit",
- "name": "Continuer tout droit sur {way_name}",
- "destination": "Continuer tout droit en direction de {destination}"
- },
- "uturn": {
- "default": "Faire demi-tour à la fin de la route",
- "name": "Faire demi-tour à la fin de la route {way_name}",
- "destination": "Faire demi-tour à la fin de la route en direction de {destination}"
- }
- },
- "fork": {
- "default": {
- "default": "Rester {modifier} à l'embranchement",
- "name": "Rester {modifier} à l'embranchement sur {way_name}",
- "destination": "Rester {modifier} à l'embranchement en direction de {destination}"
- },
- "slight left": {
- "default": "Rester à gauche à l'embranchement",
- "name": "Rester à gauche à l'embranchement sur {way_name}",
- "destination": "Rester à gauche à l'embranchement en direction de {destination}"
- },
- "slight right": {
- "default": "Rester à droite à l'embranchement",
- "name": "Rester à droite à l'embranchement sur {way_name}",
- "destination": "Rester à droite à l'embranchement en direction de {destination}"
- },
- "sharp left": {
- "default": "Prendre à gauche à l'embranchement",
- "name": "Prendre à gauche à l'embranchement sur {way_name}",
- "destination": "Prendre à gauche à l'embranchement en direction de {destination}"
- },
- "sharp right": {
- "default": "Prendre à droite à l'embranchement",
- "name": "Prendre à droite à l'embranchement sur {way_name}",
- "destination": "Prendre à droite à l'embranchement en direction de {destination}"
- },
- "uturn": {
- "default": "Faire demi-tour",
- "name": "Faire demi-tour sur {way_name}",
- "destination": "Faire demi-tour en direction de {destination}"
- }
- },
- "merge": {
- "default": {
- "default": "Rejoindre {modifier}",
- "name": "Rejoindre {modifier} sur {way_name}",
- "destination": "Rejoindre {modifier} en direction de {destination}"
- },
- "slight left": {
- "default": "Rejoindre légèrement par la gauche",
- "name": "Rejoindre {way_name} légèrement par la gauche",
- "destination": "Rejoindre légèrement par la gauche la route en direction de {destination}"
- },
- "slight right": {
- "default": "Rejoindre légèrement par la droite",
- "name": "Rejoindre {way_name} légèrement par la droite",
- "destination": "Rejoindre légèrement par la droite la route en direction de {destination}"
- },
- "sharp left": {
- "default": "Rejoindre par la gauche",
- "name": "Rejoindre {way_name} par la gauche",
- "destination": "Rejoindre par la gauche la route en direction de {destination}"
- },
- "sharp right": {
- "default": "Rejoindre par la droite",
- "name": "Rejoindre {way_name} par la droite",
- "destination": "Rejoindre par la droite la route en direction de {destination}"
- },
- "uturn": {
- "default": "Fair demi-tour",
- "name": "Fair demi-tour sur {way_name}",
- "destination": "Fair demi-tour en direction de {destination}"
- }
- },
- "new name": {
- "default": {
- "default": "Continuer {modifier}",
- "name": "Continuer {modifier} sur {way_name}",
- "destination": "Continuer {modifier} en direction de {destination}"
- },
- "sharp left": {
- "default": "Prendre à gauche",
- "name": "Prendre à gauche sur {way_name}",
- "destination": "Prendre à gauche en direction de {destination}"
- },
- "sharp right": {
- "default": "Prendre à droite",
- "name": "Prendre à droite sur {way_name}",
- "destination": "Prendre à droite en direction de {destination}"
- },
- "slight left": {
- "default": "Continuer légèrement à gauche",
- "name": "Continuer légèrement à gauche sur {way_name}",
- "destination": "Continuer légèrement à gauche en direction de {destination}"
- },
- "slight right": {
- "default": "Continuer légèrement à droite",
- "name": "Continuer légèrement à droite sur {way_name}",
- "destination": "Continuer légèrement à droite en direction de {destination}"
- },
- "uturn": {
- "default": "Fair demi-tour",
- "name": "Fair demi-tour sur {way_name}",
- "destination": "Fair demi-tour en direction de {destination}"
- }
- },
- "notification": {
- "default": {
- "default": "Continuer {modifier}",
- "name": "Continuer {modifier} sur {way_name}",
- "destination": "Continuer {modifier} en direction de {destination}"
- },
- "uturn": {
- "default": "Fair demi-tour",
- "name": "Fair demi-tour sur {way_name}",
- "destination": "Fair demi-tour en direction de {destination}"
- }
- },
- "off ramp": {
- "default": {
- "default": "Prendre la sortie",
- "name": "Prendre la sortie sur {way_name}",
- "destination": "Prendre la sortie en direction de {destination}"
- },
- "left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- },
- "sharp left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "sharp right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- },
- "slight left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "slight right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- }
- },
- "on ramp": {
- "default": {
- "default": "Prendre la sortie",
- "name": "Prendre la sortie sur {way_name}",
- "destination": "Prendre la sortie en direction de {destination}"
- },
- "left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- },
- "sharp left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "sharp right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- },
- "slight left": {
- "default": "Prendre la sortie à gauche",
- "name": "Prendre la sortie à gauche sur {way_name}",
- "destination": "Prendre la sortie à gauche en direction de {destination}"
- },
- "slight right": {
- "default": "Prendre la sortie à droite",
- "name": "Prendre la sortie à droite sur {way_name}",
- "destination": "Prendre la sortie à droite en direction de {destination}"
- }
- },
- "rotary": {
- "default": {
- "default": {
- "default": "Entrer dans le rond-point",
- "name": "Entrer dans le rond-point et sortir par {way_name}",
- "destination": "Entrer dans le rond-point et sortir en direction de {destination}"
- },
- "name": {
- "default": "Entrer dans le rond-point {rotary_name}",
- "name": "Entrer dans le rond-point {rotary_name} et sortir par {way_name}",
- "destination": "Entrer dans le rond-point {rotary_name} et sortir en direction de {destination}"
- },
- "exit": {
- "default": "Entrer dans le rond-point et prendre la {exit_number} sortie",
- "name": "Entrer dans le rond-point et prendre la {exit_number} sortie sur {way_name}",
- "destination": "Entrer dans le rond-point et prendre la {exit_number} sortie en direction de {destination}"
- },
- "name_exit": {
- "default": "Entrer dans le rond-point {rotary_name} et prendre la {exit_number} sortie",
- "name": "Entrer dans le rond-point {rotary_name} et prendre la {exit_number} sortie sur {way_name}",
- "destination": "Entrer dans le rond-point {rotary_name} et prendre la {exit_number} sortie en direction de {destination}"
- }
- }
- },
- "roundabout": {
- "default": {
- "exit": {
- "default": "Entrer dans le rond-point et prendre la {exit_number} sortie",
- "name": "Entrer dans le rond-point et prendre la {exit_number} sortie sur {way_name}",
- "destination": "Entrer dans le rond-point et prendre la {exit_number} sortie en direction de {destination}"
- },
- "default": {
- "default": "Entrer dans le rond-point",
- "name": "Entrer dans le rond-point et sortir par {way_name}",
- "destination": "Entrer dans le rond-point et sortir en direction de {destination}"
- }
- }
- },
- "roundabout turn": {
- "default": {
- "default": "Au rond-point, tourner {modifier}",
- "name": "Au rond-point, tourner {modifier} sur {way_name}",
- "destination": "Au rond-point, tourner {modifier} en direction de {destination}"
- },
- "left": {
- "default": "Au rond-point, tourner à gauche",
- "name": "Au rond-point, tourner à gauche sur {way_name}",
- "destination": "Au rond-point, tourner à gauche en direction de {destination}"
- },
- "right": {
- "default": "Au rond-point, tourner à droite",
- "name": "Au rond-point, tourner à droite sur {way_name}",
- "destination": "Au rond-point, tourner à droite en direction de {destination}"
- },
- "straight": {
- "default": "Au rond-point, continuer tout droit",
- "name": "Au rond-point, continuer tout droit sur {way_name}",
- "destination": "Au rond-point, continuer tout droit en direction de {destination}"
- }
- },
- "turn": {
- "default": {
- "default": "Tourner {modifier}",
- "name": "Tourner {modifier} sur {way_name}",
- "destination": "Tourner {modifier} en direction de {destination}"
- },
- "left": {
- "default": "Tourner à gauche",
- "name": "Tourner à gauche sur {way_name}",
- "destination": "Tourner à gauche en direction de {destination}"
- },
- "right": {
- "default": "Tourner à droite",
- "name": "Tourner à droite sur {way_name}",
- "destination": "Tourner à droite en direction de {destination}"
- },
- "straight": {
- "default": "Aller tout droit",
- "name": "Aller tout droit sur {way_name}",
- "destination": "Aller tout droit en direction de {destination}"
- }
- },
- "use lane": {
- "no_lanes": {
- "default": "Continuer tout droit"
- },
- "default": {
- "default": "{lane_instruction} pour continuer {modifier}"
- },
- "straight": {
- "default": "{lane_instruction}"
- },
- "left": {
- "default": "{lane_instruction} pour tourner à gauche"
- },
- "right": {
- "default": "{lane_instruction} pour tourner à droite"
- }
- }
- }
- }
- }, {}],
- 7: [function (_dereq_, module, exports) {
- module.exports = {
- "meta": {
- "capitalizeFirstLetter": true
- },
- "v5": {
- "constants": {
- "ordinalize": {
- "1": "eerste",
- "2": "tweede",
- "3": "derde",
- "4": "vierde",
- "5": "vijfde",
- "6": "zesde",
- "7": "zevende",
- "8": "achtste",
- "9": "negende",
- "10": "tiende"
- },
- "direction": {
- "north": "noord",
- "northeast": "noordoost",
- "east": "oost",
- "southeast": "zuidoost",
- "south": "zuid",
- "southwest": "zuidwest",
- "west": "west",
- "northwest": "noordwest"
- },
- "modifier": {
- "left": "links",
- "right": "rechts",
- "sharp left": "linksaf",
- "sharp right": "rechtsaf",
- "slight left": "links",
- "slight right": "rechts",
- "straight": "rechtdoor",
- "uturn": "omkeren"
- },
- "lanes": {
- "xo": "Rechts aanhouden",
- "ox": "Links aanhouden",
- "xox": "In het midden blijven",
- "oxo": "Links of rechts blijven"
- }
- },
- "modes": {
- "ferry": {
- "default": "Neem het veer",
- "name": "Neem het veer {way_name}",
- "destination": "Neem het veer naar {destination}"
- }
- },
- "arrive": {
- "default": {
- "default": "Je bent gearriveerd op de {nth} bestemming."
- },
- "left": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich links."
- },
- "right": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich rechts."
- },
- "sharp left": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich links."
- },
- "sharp right": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich rechts."
- },
- "slight right": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich rechts."
- },
- "slight left": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich links."
- },
- "straight": {
- "default": "Je bent gearriveerd. De {nth} bestemming bevindt zich voor je."
- }
- },
- "continue": {
- "default": {
- "default": "Ga {modifier}",
- "name": "Ga {modifier} naar {way_name}",
- "destination": "Ga {modifier} richting {destination}"
- },
- "slight left": {
- "default": "Links aanhouden",
- "name": "Links aanhouden naar {way_name}",
- "destination": "Links aanhouden richting {destination}"
- },
- "slight right": {
- "default": "Rechts aanhouden",
- "name": "Rechts aanhouden naar {way_name}",
- "destination": "Rechts aanhouden richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "depart": {
- "default": {
- "default": "Vertrek in {direction}elijke richting",
- "name": "Neem {way_name} in {direction}elijke richting"
- }
- },
- "end of road": {
- "default": {
- "default": "Ga {modifier}",
- "name": "Ga {modifier} naar {way_name}",
- "destination": "Ga {modifier} richting {destination}"
- },
- "straight": {
- "default": "Ga in de aangegeven richting",
- "name": "Ga naar {way_name}",
- "destination": "Ga richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "fork": {
- "default": {
- "default": "Ga {modifier} op de splitsing",
- "name": "Ga {modifier} op de splitsing naar {way_name}",
- "destination": "Ga {modifier} op de splitsing richting {destination}"
- },
- "slight left": {
- "default": "Links aanhouden op de splitsing",
- "name": "Links aanhouden op de splitsing naar {way_name}",
- "destination": "Links aanhouden op de splitsing richting {destination}"
- },
- "slight right": {
- "default": "Rechts aanhouden op de splitsing",
- "name": "Rechts aanhouden op de splitsing naar {way_name}",
- "destination": "Rechts aanhouden op de splitsing richting {destination}"
- },
- "sharp left": {
- "default": "Linksaf op de splitsing",
- "name": "Linksaf op de splitsing naar {way_name}",
- "destination": "Linksaf op de splitsing richting {destination}"
- },
- "sharp right": {
- "default": "Rechtsaf op de splitsing",
- "name": "Rechtsaf op de splitsing naar {way_name}",
- "destination": "Rechtsaf op de splitsing richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "merge": {
- "default": {
- "default": "Bij de splitsing {modifier}",
- "name": "Bij de splitsing {modifier} naar {way_name}",
- "destination": "Bij de splitsing {modifier} richting {destination}"
- },
- "slight left": {
- "default": "Bij de splitsing links aanhouden",
- "name": "Bij de splitsing links aanhouden naar {way_name}",
- "destination": "Bij de splitsing links aanhouden richting {destination}"
- },
- "slight right": {
- "default": "Bij de splitsing rechts aanhouden",
- "name": "Bij de splitsing rechts aanhouden naar {way_name}",
- "destination": "Bij de splitsing rechts aanhouden richting {destination}"
- },
- "sharp left": {
- "default": "Bij de splitsing linksaf",
- "name": "Bij de splitsing linksaf naar {way_name}",
- "destination": "Bij de splitsing linksaf richting {destination}"
- },
- "sharp right": {
- "default": "Bij de splitsing rechtsaf",
- "name": "Bij de splitsing rechtsaf naar {way_name}",
- "destination": "Bij de splitsing rechtsaf richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "new name": {
- "default": {
- "default": "Ga {modifier}",
- "name": "Ga {modifier} naar {way_name}",
- "destination": "Ga {modifier} richting {destination}"
- },
- "sharp left": {
- "default": "Linksaf",
- "name": "Linksaf naar {way_name}",
- "destination": "Linksaf richting {destination}"
- },
- "sharp right": {
- "default": "Rechtsaf",
- "name": "Rechtsaf naar {way_name}",
- "destination": "Rechtsaf richting {destination}"
- },
- "slight left": {
- "default": "Links aanhouden",
- "name": "Links aanhouden naar {way_name}",
- "destination": "Links aanhouden richting {destination}"
- },
- "slight right": {
- "default": "Rechts aanhouden",
- "name": "Rechts aanhouden naar {way_name}",
- "destination": "Rechts aanhouden richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "notification": {
- "default": {
- "default": "Ga {modifier}",
- "name": "Ga {modifier} naar {way_name}",
- "destination": "Ga {modifier} richting {destination}"
- },
- "uturn": {
- "default": "Keer om",
- "name": "Keer om naar {way_name}",
- "destination": "Keer om richting {destination}"
- }
- },
- "off ramp": {
- "default": {
- "default": "Neem de afrit",
- "name": "Neem de afrit naar {way_name}",
- "destination": "Neem de afrit richting {destination}"
- },
- "left": {
- "default": "Neem de afrit links",
- "name": "Neem de afrit links naar {way_name}",
- "destination": "Neem de afrit links richting {destination}"
- },
- "right": {
- "default": "Neem de afrit rechts",
- "name": "Neem de afrit rechts naar {way_name}",
- "destination": "Neem de afrit rechts richting {destination}"
- },
- "sharp left": {
- "default": "Neem de afrit links",
- "name": "Neem de afrit links naar {way_name}",
- "destination": "Neem de afrit links richting {destination}"
- },
- "sharp right": {
- "default": "Neem de afrit rechts",
- "name": "Neem de afrit rechts naar {way_name}",
- "destination": "Neem de afrit rechts richting {destination}"
- },
- "slight left": {
- "default": "Neem de afrit links",
- "name": "Neem de afrit links naar {way_name}",
- "destination": "Neem de afrit links richting {destination}"
- },
- "slight right": {
- "default": "Neem de afrit rechts",
- "name": "Neem de afrit rechts naar {way_name}",
- "destination": "Neem de afrit rechts richting {destination}"
- }
- },
- "on ramp": {
- "default": {
- "default": "Neem de oprit",
- "name": "Neem de oprit naar {way_name}",
- "destination": "Neem de oprit richting {destination}"
- },
- "left": {
- "default": "Neem de oprit links",
- "name": "Neem de oprit links naar {way_name}",
- "destination": "Neem de oprit links richting {destination}"
- },
- "right": {
- "default": "Neem de oprit rechts",
- "name": "Neem de oprit rechts naar {way_name}",
- "destination": "Neem de oprit rechts richting {destination}"
- },
- "sharp left": {
- "default": "Neem de oprit links",
- "name": "Neem de oprit links naar {way_name}",
- "destination": "Neem de oprit links richting {destination}"
- },
- "sharp right": {
- "default": "Neem de oprit rechts",
- "name": "Neem de oprit rechts naar {way_name}",
- "destination": "Neem de oprit rechts richting {destination}"
- },
- "slight left": {
- "default": "Neem de oprit links",
- "name": "Neem de oprit links naar {way_name}",
- "destination": "Neem de oprit links richting {destination}"
- },
- "slight right": {
- "default": "Neem de oprit rechts",
- "name": "Neem de oprit rechts naar {way_name}",
- "destination": "Neem de oprit rechts richting {destination}"
- }
- },
- "rotary": {
- "default": {
- "default": {
- "default": "Ga het knooppunt op",
- "name": "Verlaat het knooppunt naar {way_name}",
- "destination": "Verlaat het knooppunt richting {destination}"
- },
- "name": {
- "default": "Ga het knooppunt {rotary_name} op",
- "name": "Verlaat het knooppunt {rotary_name} naar {way_name}",
- "destination": "Verlaat het knooppunt {rotary_name} richting {destination}"
- },
- "exit": {
- "default": "Ga het knooppunt op en neem afslag {exit_number}",
- "name": "Ga het knooppunt op en neem afslag {exit_number} naar {way_name}",
- "destination": "Ga het knooppunt op en neem afslag {exit_number} richting {destination}"
- },
- "name_exit": {
- "default": "Ga het knooppunt {rotary_name} op en neem afslag {exit_number}",
- "name": "Ga het knooppunt {rotary_name} op en neem afslag {exit_number} naar {way_name}",
- "destination": "Ga het knooppunt {rotary_name} op en neem afslag {exit_number} richting {destination}"
- }
- }
- },
- "roundabout": {
- "default": {
- "exit": {
- "default": "Ga de rotonde op en neem afslag {exit_number}",
- "name": "Ga de rotonde op en neem afslag {exit_number} naar {way_name}",
- "destination": "Ga de rotonde op en neem afslag {exit_number} richting {destination}"
- },
- "default": {
- "default": "Ga de rotonde op",
- "name": "Verlaat de rotonde naar {way_name}",
- "destination": "Verlaat de rotonde richting {destination}"
- }
- }
- },
- "roundabout turn": {
- "default": {
- "default": "Ga {modifier} op de rotonde",
- "name": "Ga {modifier} op de rotonde naar {way_name}",
- "destination": "Ga {modifier} op de rotonde richting {destination}"
- },
- "left": {
- "default": "Ga links op de rotonde",
- "name": "Ga links op de rotonde naar {way_name}",
- "destination": "Ga links op de rotonde richting {destination}"
- },
- "right": {
- "default": "Ga rechts op de rotonde",
- "name": "Ga rechts op de rotonde naar {way_name}",
- "destination": "Ga rechts op de rotonde richting {destination}"
- },
- "straight": {
- "default": "Rechtdoor op de rotonde",
- "name": "Rechtdoor op de rotonde naar {way_name}",
- "destination": "Rechtdoor op de rotonde richting {destination}"
- }
- },
- "turn": {
- "default": {
- "default": "Ga {modifier}",
- "name": "Ga {modifier} naar {way_name}",
- "destination": "Ga {modifier} richting {destination}"
- },
- "left": {
- "default": "Ga linksaf",
- "name": "Ga linksaf naar {way_name}",
- "destination": "Ga linksaf richting {destination}"
- },
- "right": {
- "default": "Ga rechtsaf",
- "name": "Ga rechtsaf naar {way_name}",
- "destination": "Ga rechtsaf richting {destination}"
- },
- "straight": {
- "default": "Ga rechtdoor",
- "name": "Ga rechtdoor naar {way_name}",
- "destination": "Ga rechtdoor richting {destination}"
- }
- },
- "use lane": {
- "no_lanes": {
- "default": "Rechtdoor"
- },
- "default": {
- "default": "{lane_instruction} ga {modifier}"
- },
- "straight": {
- "default": "{lane_instruction}"
- },
- "left": {
- "default": "{lane_instruction} om links te gaan"
- },
- "right": {
- "default": "{lane_instruction} om rechts te gaan"
- }
- }
- }
- }
- }, {}],
- 8: [function (_dereq_, module, exports) {
- module.exports = {
- "meta": {
- "capitalizeFirstLetter": false
- },
- "v5": {
- "constants": {
- "ordinalize": {
- "1": "第一",
- "2": "第二",
- "3": "第三",
- "4": "第四",
- "5": "第五",
- "6": "第六",
- "7": "第七",
- "8": "第八",
- "9": "第九",
- "10": "第十"
- },
- "direction": {
- "north": "北",
- "northeast": "东北",
- "east": "东",
- "southeast": "东南",
- "south": "南",
- "southwest": "西南",
- "west": "西",
- "northwest": "西北"
- },
- "modifier": {
- "left": "向左",
- "right": "向右",
- "sharp left": "向左",
- "sharp right": "向右",
- "slight left": "向左",
- "slight right": "向右",
- "straight": "直行",
- "uturn": "调头"
- },
- "lanes": {
- "xo": "靠右直行",
- "ox": "靠左直行",
- "xox": "保持在道路中间直行",
- "oxo": "保持在道路两侧直行"
- }
- },
- "modes": {
- "ferry": {
- "default": "乘坐轮渡",
- "name": "乘坐{way_name}轮渡",
- "destination": "乘坐开往{destination}的轮渡"
- }
- },
- "arrive": {
- "default": {
- "default": "您已经到达您的{nth}个目的地"
- },
- "left": {
- "default": "您已经到达您的{nth}个目的地,在道路左侧"
- },
- "right": {
- "default": "您已经到达您的{nth}个目的地,在道路右侧"
- },
- "sharp left": {
- "default": "您已经到达您的{nth}个目的地,在道路左侧"
- },
- "sharp right": {
- "default": "您已经到达您的{nth}个目的地,在道路右侧"
- },
- "slight right": {
- "default": "您已经到达您的{nth}个目的地,在道路右侧"
- },
- "slight left": {
- "default": "您已经到达您的{nth}个目的地,在道路左侧"
- },
- "straight": {
- "default": "您已经到达您的{nth}个目的地,在您正前方"
- }
- },
- "continue": {
- "default": {
- "default": "继续{modifier}",
- "name": "继续{modifier},上{way_name}",
- "destination": "继续{modifier}行驶,前往{destination}"
- },
- "uturn": {
- "default": "调头",
- "name": "调头上{way_name}",
- "destination": "调头后前往{destination}"
- }
- },
- "depart": {
- "default": {
- "default": "出发向{direction}",
- "name": "出发向{direction},上{way_name}"
- }
- },
- "end of road": {
- "default": {
- "default": "{modifier}行驶",
- "name": "{modifier}行驶,上{way_name}",
- "destination": "{modifier}行驶,前往{destination}"
- },
- "straight": {
- "default": "继续直行",
- "name": "继续直行,上{way_name}",
- "destination": "继续直行,前往{destination}"
- },
- "uturn": {
- "default": "在道路尽头调头",
- "name": "在道路尽头调头上{way_name}",
- "destination": "在道路尽头调头,前往{destination}"
- }
- },
- "fork": {
- "default": {
- "default": "在岔道保持{modifier}",
- "name": "在岔道保持{modifier},上{way_name}",
- "destination": "在岔道保持{modifier},前往{destination}"
- },
- "uturn": {
- "default": "调头",
- "name": "调头,上{way_name}",
- "destination": "调头,前往{destination}"
- }
- },
- "merge": {
- "default": {
- "default": "{modifier}并道",
- "name": "{modifier}并道,上{way_name}",
- "destination": "{modifier}并道,前往{destination}"
- },
- "uturn": {
- "default": "调头",
- "name": "调头,上{way_name}",
- "destination": "调头,前往{destination}"
- }
- },
- "new name": {
- "default": {
- "default": "继续{modifier}",
- "name": "继续{modifier},上{way_name}",
- "destination": "继续{modifier},前往{destination}"
- },
- "uturn": {
- "default": "调头",
- "name": "调头,上{way_name}",
- "destination": "调头,前往{destination}"
- }
- },
- "notification": {
- "default": {
- "default": "继续{modifier}",
- "name": "继续{modifier},上{way_name}",
- "destination": "继续{modifier},前往{destination}"
- },
- "uturn": {
- "default": "调头",
- "name": "调头,上{way_name}",
- "destination": "调头,前往{destination}"
- }
- },
- "off ramp": {
- "default": {
- "default": "上匝道",
- "name": "通过匝道驶入{way_name}",
- "destination": "通过匝道前往{destination}"
- },
- "left": {
- "default": "通过左边的匝道",
- "name": "通过左边的匝道驶入{way_name}",
- "destination": "通过左边的匝道前往{destination}"
- },
- "right": {
- "default": "通过右边的匝道",
- "name": "通过右边的匝道驶入{way_name}",
- "destination": "通过右边的匝道前往{destination}"
- }
- },
- "on ramp": {
- "default": {
- "default": "通过匝道",
- "name": "通过匝道驶入{way_name}",
- "destination": "通过匝道前往{destination}"
- },
- "left": {
- "default": "通过左边的匝道",
- "name": "通过左边的匝道驶入{way_name}",
- "destination": "通过左边的匝道前往{destination}"
- },
- "right": {
- "default": "通过右边的匝道",
- "name": "通过右边的匝道驶入{way_name}",
- "destination": "通过右边的匝道前往{destination}"
- }
- },
- "rotary": {
- "default": {
- "default": {
- "default": "进入环岛",
- "name": "通过环岛后驶入{way_name}",
- "destination": "通过环岛前往{destination}"
- },
- "name": {
- "default": "进入{rotary_name}环岛",
- "name": "通过{rotary_name}环岛后驶入{way_name}",
- "destination": "通过{rotary_name}环岛后前往{destination}"
- },
- "exit": {
- "default": "进入环岛并从{exit_number}出口驶出",
- "name": "进入环岛后从{exit_number}出口驶出进入{way_name}",
- "destination": "进入环岛后从{exit_number}出口驶出前往{destination}"
- },
- "name_exit": {
- "default": "进入{rotary_name}环岛后从{exit_number}出口驶出",
- "name": "进入{rotary_name}环岛后从{exit_number}出口驶出进入{way_name}",
- "destination": "进入{rotary_name}环岛后从{exit_number}出口驶出前往{destination}"
- }
- }
- },
- "roundabout": {
- "default": {
- "exit": {
- "default": "进入环岛后从{exit_number}出口驶出",
- "name": "进入环岛后从{exit_number}出口驶出前往{way_name}",
- "destination": "进入环岛后从{exit_number}出口驶出前往{destination}"
- },
- "default": {
- "default": "进入环岛",
- "name": "通过环岛后驶入{way_name}",
- "destination": "通过环岛后前往{destination}"
- }
- }
- },
- "roundabout turn": {
- "default": {
- "default": "在环岛{modifier}行驶",
- "name": "在环岛{modifier}行驶,上{way_name}",
- "destination": "在环岛{modifier}行驶,前往{destination}"
- },
- "left": {
- "default": "在环岛左转",
- "name": "在环岛左转,上{way_name}",
- "destination": "在环岛左转,前往{destination}"
- },
- "right": {
- "default": "在环岛右转",
- "name": "在环岛右转,上{way_name}",
- "destination": "在环岛右转,前往{destination}"
- },
- "straight": {
- "default": "在环岛继续直行",
- "name": "在环岛继续直行,上{way_name}",
- "destination": "在环岛继续直行,前往{destination}"
- }
- },
- "turn": {
- "default": {
- "default": "{modifier}转弯",
- "name": "{modifier}转弯,上{way_name}",
- "destination": "{modifier}转弯,前往{destination}"
- },
- "left": {
- "default": "左转",
- "name": "左转,上{way_name}",
- "destination": "左转,前往{destination}"
- },
- "right": {
- "default": "右转",
- "name": "右转,上{way_name}",
- "destination": "右转,前往{destination}"
- },
- "straight": {
- "default": "直行",
- "name": "直行,上{way_name}",
- "destination": "直行,前往{destination}"
- }
- },
- "use lane": {
- "no_lanes": {
- "default": "继续直行"
- },
- "default": {
- "default": "{lane_instruction}然后{modifier}"
- },
- "straight": {
- "default": "{lane_instruction}"
- },
- "left": {
- "default": "{lane_instruction}然后左转"
- },
- "right": {
- "default": "{lane_instruction}然后右转"
- }
- }
- }
- }
- }, {}],
- 9: [function (_dereq_, module, exports) {
- 'use strict';
- /**
- * Based off of [the offical Google document](https://developers.google.com/maps/documentation/utilities/polylinealgorithm)
- *
- * Some parts from [this implementation](http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/PolylineEncoder.js)
- * by [Mark McClure](http://facstaff.unca.edu/mcmcclur/)
- *
- * @module polyline
- */
- var polyline = {};
- function encode(coordinate, factor) {
- coordinate = Math.round(coordinate * factor);
- coordinate <<= 1;
- if (coordinate < 0) {
- coordinate = ~coordinate;
- }
- var output = '';
- while (coordinate >= 0x20) {
- output += String.fromCharCode((0x20 | (coordinate & 0x1f)) + 63);
- coordinate >>= 5;
- }
- output += String.fromCharCode(coordinate + 63);
- return output;
- }
- /**
- * Decodes to a [latitude, longitude] coordinates array.
- *
- * This is adapted from the implementation in Project-OSRM.
- *
- * @param {String} str
- * @param {Number} precision
- * @returns {Array}
- *
- * @see https://github.com/Project-OSRM/osrm-frontend/blob/master/WebContent/routing/OSRM.RoutingGeometry.js
- */
- polyline.decode = function (str, precision) {
- var index = 0,
- lat = 0,
- lng = 0,
- coordinates = [],
- shift = 0,
- result = 0,
- byte = null,
- latitude_change,
- longitude_change,
- factor = Math.pow(10, precision || 5);
- // Coordinates have variable length when encoded, so just keep
- // track of whether we've hit the end of the string. In each
- // loop iteration, a single coordinate is decoded.
- while (index < str.length) {
- // Reset shift, result, and byte
- byte = null;
- shift = 0;
- result = 0;
- do {
- byte = str.charCodeAt(index++) - 63;
- result |= (byte & 0x1f) << shift;
- shift += 5;
- } while (byte >= 0x20);
- latitude_change = ((result & 1) ? ~(result >> 1) : (result >> 1));
- shift = result = 0;
- do {
- byte = str.charCodeAt(index++) - 63;
- result |= (byte & 0x1f) << shift;
- shift += 5;
- } while (byte >= 0x20);
- longitude_change = ((result & 1) ? ~(result >> 1) : (result >> 1));
- lat += latitude_change;
- lng += longitude_change;
- coordinates.push([lat / factor, lng / factor]);
- }
- return coordinates;
- };
- /**
- * Encodes the given [latitude, longitude] coordinates array.
- *
- * @param {Array.<Array.<Number>>} coordinates
- * @param {Number} precision
- * @returns {String}
- */
- polyline.encode = function (coordinates, precision) {
- if (!coordinates.length) {
- return '';
- }
- var factor = Math.pow(10, precision || 5),
- output = encode(coordinates[0][0], factor) + encode(coordinates[0][1], factor);
- for (var i = 1; i < coordinates.length; i++) {
- var a = coordinates[i],
- b = coordinates[i - 1];
- output += encode(a[0] - b[0], factor);
- output += encode(a[1] - b[1], factor);
- }
- return output;
- };
- function flipped(coords) {
- var flipped = [];
- for (var i = 0; i < coords.length; i++) {
- flipped.push(coords[i].slice().reverse());
- }
- return flipped;
- }
- /**
- * Encodes a GeoJSON LineString feature/geometry.
- *
- * @param {Object} geojson
- * @param {Number} precision
- * @returns {String}
- */
- polyline.fromGeoJSON = function (geojson, precision) {
- if (geojson && geojson.type === 'Feature') {
- geojson = geojson.geometry;
- }
- if (!geojson || geojson.type !== 'LineString') {
- throw new Error('Input must be a GeoJSON LineString');
- }
- return polyline.encode(flipped(geojson.coordinates), precision);
- };
- /**
- * Decodes to a GeoJSON LineString geometry.
- *
- * @param {String} str
- * @param {Number} precision
- * @returns {Object}
- */
- polyline.toGeoJSON = function (str, precision) {
- var coords = polyline.decode(str, precision);
- return {
- type: 'LineString',
- coordinates: flipped(coords)
- };
- };
- if (typeof module === 'object' && module.exports) {
- module.exports = polyline;
- }
- }, {}],
- 10: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- module.exports = L.Class.extend({
- options: {
- timeout: 500,
- blurTimeout: 100,
- noResultsMessage: 'No results found.'
- },
- initialize: function (elem, callback, context, options) {
- L.setOptions(this, options);
- this._elem = elem;
- this._resultFn = options.resultFn ? L.Util.bind(options.resultFn, options.resultContext) : null;
- this._autocomplete = options.autocompleteFn ? L.Util.bind(options.autocompleteFn, options.autocompleteContext) : null;
- this._selectFn = L.Util.bind(callback, context);
- this._container = L.DomUtil.create('div', 'leaflet-routing-geocoder-result');
- this._resultTable = L.DomUtil.create('table', '', this._container);
- // TODO: looks a bit like a kludge to register same for input and keypress -
- // browsers supporting both will get duplicate events; just registering
- // input will not catch enter, though.
- L.DomEvent.addListener(this._elem, 'input', this._keyPressed, this);
- L.DomEvent.addListener(this._elem, 'keypress', this._keyPressed, this);
- L.DomEvent.addListener(this._elem, 'keydown', this._keyDown, this);
- L.DomEvent.addListener(this._elem, 'blur', function () {
- if (this._isOpen) {
- this.close();
- }
- }, this);
- },
- close: function () {
- L.DomUtil.removeClass(this._container, 'leaflet-routing-geocoder-result-open');
- this._isOpen = false;
- },
- _open: function () {
- var rect = this._elem.getBoundingClientRect();
- if (!this._container.parentElement) {
- // See notes section under https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollX
- // This abomination is required to support all flavors of IE
- var scrollX = (window.pageXOffset !== undefined) ? window.pageXOffset :
- (document.documentElement || document.body.parentNode || document.body).scrollLeft;
- var scrollY = (window.pageYOffset !== undefined) ? window.pageYOffset :
- (document.documentElement || document.body.parentNode || document.body).scrollTop;
- this._container.style.left = (rect.left + scrollX) + 'px';
- this._container.style.top = (rect.bottom + scrollY) + 'px';
- this._container.style.width = (rect.right - rect.left) + 'px';
- //document.body.appendChild(this._container);
- }
- L.DomUtil.addClass(this._container, 'leaflet-routing-geocoder-result-open');
- this._isOpen = true;
- },
- _setResults: function (results) {
- var i,
- tr,
- td,
- text;
- delete this._selection;
- this._results = results;
- while (this._resultTable.firstChild) {
- this._resultTable.removeChild(this._resultTable.firstChild);
- }
- for (i = 0; i < results.length; i++) {
- tr = L.DomUtil.create('tr', '', this._resultTable);
- tr.setAttribute('data-result-index', i);
- td = L.DomUtil.create('td', '', tr);
- text = document.createTextNode(results[i].name);
- //td.appendChild(text);
- // mousedown + click because:
- // http://stackoverflow.com/questions/10652852/jquery-fire-click-before-blur-event
- L.DomEvent.addListener(td, 'mousedown', L.DomEvent.preventDefault);
- L.DomEvent.addListener(td, 'click', this._createClickListener(results[i]));
- }
- if (!i) {
- tr = L.DomUtil.create('tr', '', this._resultTable);
- td = L.DomUtil.create('td', 'leaflet-routing-geocoder-no-results', tr);
- td.innerHTML = this.options.noResultsMessage;
- }
- this._open();
- if (results.length > 0) {
- // Select the first entry
- this._select(1);
- }
- },
- _createClickListener: function (r) {
- var resultSelected = this._resultSelected(r);
- return L.bind(function () {
- this._elem.blur();
- resultSelected();
- }, this);
- },
- _resultSelected: function (r) {
- return L.bind(function () {
- this.close();
- this._elem.value = r.name;
- this._lastCompletedText = r.name;
- this._selectFn(r);
- }, this);
- },
- _keyPressed: function (e) {
- var index;
- if (this._isOpen && e.keyCode === 13 && this._selection) {
- index = parseInt(this._selection.getAttribute('data-result-index'), 10);
- this._resultSelected(this._results[index])();
- L.DomEvent.preventDefault(e);
- return;
- }
- if (e.keyCode === 13) {
- this._complete(this._resultFn, true);
- return;
- }
- if (this._autocomplete && document.activeElement === this._elem) {
- if (this._timer) {
- clearTimeout(this._timer);
- }
- this._timer = setTimeout(L.Util.bind(function () {
- this._complete(this._autocomplete);
- }, this),
- this.options.timeout);
- return;
- }
- this._unselect();
- },
- _select: function (dir) {
- var sel = this._selection;
- if (sel) {
- L.DomUtil.removeClass(sel.firstChild, 'leaflet-routing-geocoder-selected');
- sel = sel[dir > 0 ? 'nextSibling' : 'previousSibling'];
- }
- if (!sel) {
- sel = this._resultTable[dir > 0 ? 'firstChild' : 'lastChild'];
- }
- if (sel) {
- L.DomUtil.addClass(sel.firstChild, 'leaflet-routing-geocoder-selected');
- this._selection = sel;
- }
- },
- _unselect: function () {
- if (this._selection) {
- L.DomUtil.removeClass(this._selection.firstChild, 'leaflet-routing-geocoder-selected');
- }
- delete this._selection;
- },
- _keyDown: function (e) {
- if (this._isOpen) {
- switch (e.keyCode) {
- // Escape
- case 27:
- this.close();
- L.DomEvent.preventDefault(e);
- return;
- // Up
- case 38:
- this._select(-1);
- L.DomEvent.preventDefault(e);
- return;
- // Down
- case 40:
- this._select(1);
- L.DomEvent.preventDefault(e);
- return;
- }
- }
- },
- _complete: function (completeFn, trySelect) {
- var v = this._elem.value;
- function completeResults(results) {
- this._lastCompletedText = v;
- if (trySelect && results.length === 1) {
- this._resultSelected(results[0])();
- } else {
- this._setResults(results);
- }
- }
- if (!v) {
- return;
- }
- if (v !== this._lastCompletedText) {
- completeFn(v, completeResults, this);
- } else if (trySelect) {
- completeResults.call(this, this._results);
- }
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {}],
- 11: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var Itinerary = _dereq_('./itinerary');
- var Line = _dereq_('./line');
- var Plan = _dereq_('./plan');
- var OSRMv1 = _dereq_('./osrm-v1');
- module.exports = Itinerary.extend({
- options: {
- fitSelectedRoutes: 'smart',
- routeLine: function (route, options) {
- return new Line(route, options);
- },
- autoRoute: true,
- routeWhileDragging: false,
- routeDragInterval: 500,
- waypointMode: 'connect',
- showAlternatives: false,
- defaultErrorHandler: function (e) {
- //console.error('Routing error:', e.error);
- }
- },
- initialize: function (options) {
- L.Util.setOptions(this, options);
- this._router = this.options.router || new OSRMv1(options);
- this._plan = this.options.plan || new Plan(this.options.waypoints, options);
- this._requestCount = 0;
- Itinerary.prototype.initialize.call(this, options);
- this.on('routeselected', this._routeSelected, this);
- if (this.options.defaultErrorHandler) {
- this.on('routingerror', this.options.defaultErrorHandler);
- }
- this._plan.on('waypointschanged', this._onWaypointsChanged, this);
- if (options.routeWhileDragging) {
- this._setupRouteDragging();
- }
- if (this.options.autoRoute) {
- this.route();
- }
- },
- _onZoomEnd: function () {
- if (!this._selectedRoute ||
- !this._router.requiresMoreDetail) {
- return;
- }
- var map = this._map;
- if (this._router.requiresMoreDetail(this._selectedRoute,
- map.getZoom(), map.getBounds())) {
- this.route({
- callback: L.bind(function (err, routes) {
- var i;
- if (!err) {
- for (i = 0; i < routes.length; i++) {
- this._routes[i].properties = routes[i].properties;
- }
- this._updateLineCallback(err, routes);
- }
- }, this),
- simplifyGeometry: false,
- geometryOnly: true
- });
- }
- },
- onAdd: function (map) {
- var container = Itinerary.prototype.onAdd.call(this, map);
- this._map = map;
- this._map.addLayer(this._plan);
- this._map.on('zoomend', this._onZoomEnd, this);
- if (this._plan.options.geocoder) {
- container.insertBefore(this._plan.createGeocoders(), container.firstChild);
- }
- return container;
- },
- onRemove: function (map) {
- map.off('zoomend', this._onZoomEnd, this);
- if (this._line) {
- map.removeLayer(this._line);
- }
- map.removeLayer(this._plan);
- if (this._alternatives && this._alternatives.length > 0) {
- for (var i = 0, len = this._alternatives.length; i < len; i++) {
- map.removeLayer(this._alternatives[i]);
- }
- }
- return Itinerary.prototype.onRemove.call(this, map);
- },
- getWaypoints: function () {
- return this._plan.getWaypoints();
- },
- setWaypoints: function (waypoints) {
- this._plan.setWaypoints(waypoints);
- return this;
- },
- spliceWaypoints: function () {
- var removed = this._plan.spliceWaypoints.apply(this._plan, arguments);
- return removed;
- },
- getPlan: function () {
- return this._plan;
- },
- getRouter: function () {
- return this._router;
- },
- _routeSelected: function (e) {
- var route = this._selectedRoute = e.route,
- alternatives = this.options.showAlternatives && e.alternatives,
- fitMode = this.options.fitSelectedRoutes,
- fitBounds =
- (fitMode === 'smart' && !this._waypointsVisible()) ||
- (fitMode !== 'smart' && fitMode);
- this._updateLines({
- route: route,
- alternatives: alternatives
- });
- if (fitBounds) {
- this._map.fitBounds(this._line.getBounds());
- }
- if (this.options.waypointMode === 'snap') {
- this._plan.off('waypointschanged', this._onWaypointsChanged, this);
- this.setWaypoints(route.waypoints);
- this._plan.on('waypointschanged', this._onWaypointsChanged, this);
- }
- },
- _waypointsVisible: function () {
- var wps = this.getWaypoints(),
- mapSize,
- bounds,
- boundsSize,
- i,
- p;
- try {
- mapSize = this._map.getSize();
- for (i = 0; i < wps.length; i++) {
- p = this._map.latLngToLayerPoint(wps[i].latLng);
- if (bounds) {
- bounds.extend(p);
- } else {
- bounds = L.bounds([p]);
- }
- }
- boundsSize = bounds.getSize();
- return (boundsSize.x > mapSize.x / 5 ||
- boundsSize.y > mapSize.y / 5) && this._waypointsInViewport();
- } catch (e) {
- return false;
- }
- },
- _waypointsInViewport: function () {
- var wps = this.getWaypoints(),
- mapBounds,
- i;
- try {
- mapBounds = this._map.getBounds();
- } catch (e) {
- return false;
- }
- for (i = 0; i < wps.length; i++) {
- if (mapBounds.contains(wps[i].latLng)) {
- return true;
- }
- }
- return false;
- },
- _updateLines: function (routes) {
- var addWaypoints = this.options.addWaypoints !== undefined ?
- this.options.addWaypoints : true;
- this._clearLines();
- // add alternatives first so they lie below the main route
- this._alternatives = [];
- if (routes.alternatives) routes.alternatives.forEach(function (alt, i) {
- this._alternatives[i] = this.options.routeLine(alt,
- L.extend({
- isAlternative: true
- }, this.options.altLineOptions || this.options.lineOptions));
- this._alternatives[i].addTo(this._map);
- this._hookAltEvents(this._alternatives[i]);
- }, this);
- this._line = this.options.routeLine(routes.route,
- L.extend({
- addWaypoints: addWaypoints,
- extendToWaypoints: this.options.waypointMode === 'connect'
- }, this.options.lineOptions));
- this._line.addTo(this._map);
- this._hookEvents(this._line);
- },
- _hookEvents: function (l) {
- l.on('linetouched', function (e) {
- this._plan.dragNewWaypoint(e);
- }, this);
- },
- _hookAltEvents: function (l) {
- l.on('linetouched', function (e) {
- var alts = this._routes.slice();
- var selected = alts.splice(e.target._route.routesIndex, 1)[0];
- this.fire('routeselected', {
- route: selected,
- alternatives: alts
- });
- }, this);
- },
- _onWaypointsChanged: function (e) {
- if (this.options.autoRoute) {
- this.route({});
- }
- if (!this._plan.isReady()) {
- this._clearLines();
- this._clearAlts();
- }
- this.fire('waypointschanged', {
- waypoints: e.waypoints
- });
- },
- _setupRouteDragging: function () {
- var timer = 0,
- waypoints;
- this._plan.on('waypointdrag', L.bind(function (e) {
- waypoints = e.waypoints;
- if (!timer) {
- timer = setTimeout(L.bind(function () {
- this.route({
- waypoints: waypoints,
- geometryOnly: true,
- callback: L.bind(this._updateLineCallback, this)
- });
- timer = undefined;
- }, this), this.options.routeDragInterval);
- }
- }, this));
- this._plan.on('waypointdragend', function () {
- if (timer) {
- clearTimeout(timer);
- timer = undefined;
- }
- this.route();
- }, this);
- },
- _updateLineCallback: function (err, routes) {
- if (!err) {
- routes = routes.slice();
- var selected = routes.splice(this._selectedRoute.routesIndex, 1)[0];
- this._updateLines({
- route: selected,
- alternatives: routes
- });
- } else if (err.type !== 'abort') {
- this._clearLines();
- }
- },
- route: function (options) {
- var ts = ++this._requestCount,
- wps;
- if (this._pendingRequest && this._pendingRequest.abort) {
- this._pendingRequest.abort();
- this._pendingRequest = null;
- }
- options = options || {};
- if (this._plan.isReady()) {
- if (this.options.useZoomParameter) {
- options.z = this._map && this._map.getZoom();
- }
- wps = options && options.waypoints || this._plan.getWaypoints();
- this.fire('routingstart', {
- waypoints: wps
- });
- this._pendingRequest = this._router.route(wps, function (err, routes) {
- this._pendingRequest = null;
- if (options.callback) {
- return options.callback.call(this, err, routes);
- }
- // Prevent race among multiple requests,
- // by checking the current request's count
- // against the last request's; ignore result if
- // this isn't the last request.
- if (ts === this._requestCount) {
- this._clearLines();
- this._clearAlts();
- if (err && err.type !== 'abort') {
- this.fire('routingerror', {
- error: err
- });
- return;
- }
- routes.forEach(function (route, i) {
- route.routesIndex = i;
- });
- if (!options.geometryOnly) {
- this.fire('routesfound', {
- waypoints: wps,
- routes: routes
- });
- this.setAlternatives(routes);
- } else {
- var selectedRoute = routes.splice(0, 1)[0];
- this._routeSelected({
- route: selectedRoute,
- alternatives: routes
- });
- }
- }
- }, this, options);
- }
- },
- _clearLines: function () {
- // if (this._line) {
- // this._map.removeLayer(this._line);
- // delete this._line;
- // }
- // if (this._alternatives && this._alternatives.length) {
- // for (var i in this._alternatives) {
- // this._map.removeLayer(this._alternatives[i]);
- // }
- // this._alternatives = [];
- // }
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./itinerary": 17,
- "./line": 18,
- "./osrm-v1": 21,
- "./plan": 22
- }],
- 12: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- module.exports = L.Control.extend({
- options: {
- header: 'Routing error',
- formatMessage: function (error) {
- if (error.status < 0) {
- return 'Calculating the route caused an error. Technical description follows: <code><pre>' +
- error.message + '</pre></code';
- } else {
- return 'The route could not be calculated. ' +
- error.message;
- }
- }
- },
- initialize: function (routingControl, options) {
- L.Control.prototype.initialize.call(this, options);
- routingControl
- .on('routingerror', L.bind(function (e) {
- if (this._element) {
- this._element.children[1].innerHTML = this.options.formatMessage(e.error);
- this._element.style.visibility = 'visible';
- }
- }, this))
- .on('routingstart', L.bind(function () {
- if (this._element) {
- this._element.style.visibility = 'hidden';
- }
- }, this));
- },
- onAdd: function () {
- var header,
- message;
- this._element = L.DomUtil.create('div', 'leaflet-bar leaflet-routing-error');
- this._element.style.visibility = 'hidden';
- header = L.DomUtil.create('h3', null, this._element);
- message = L.DomUtil.create('span', null, this._element);
- header.innerHTML = this.options.header;
- return this._element;
- },
- onRemove: function () {
- delete this._element;
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {}],
- 13: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var Localization = _dereq_('./localization');
- module.exports = L.Class.extend({
- options: {
- units: 'metric',
- unitNames: null,
- language: 'en',
- roundingSensitivity: 1,
- distanceTemplate: '{value} {unit}'
- },
- initialize: function (options) {
- L.setOptions(this, options);
- var langs = L.Util.isArray(this.options.language) ?
- this.options.language : [this.options.language, 'en'];
- this._localization = new Localization(langs);
- },
- formatDistance: function (d /* Number (meters) */ , sensitivity) {
- var un = this.options.unitNames || this._localization.localize('units'),
- simpleRounding = sensitivity <= 0,
- round = simpleRounding ? function (v) {
- return v;
- } : L.bind(this._round, this),
- v,
- yards,
- data,
- pow10;
- if (this.options.units === 'imperial') {
- yards = d / 0.9144;
- if (yards >= 1000) {
- data = {
- value: round(d / 1609.344, sensitivity),
- unit: un.miles
- };
- } else {
- data = {
- value: round(yards, sensitivity),
- unit: un.yards
- };
- }
- } else {
- v = round(d, sensitivity);
- data = {
- value: v >= 1000 ? (v / 1000) : v,
- unit: v >= 1000 ? un.kilometers : un.meters
- };
- }
- if (simpleRounding) {
- data.value = data.value.toFixed(-sensitivity);
- }
- return L.Util.template(this.options.distanceTemplate, data);
- },
- _round: function (d, sensitivity) {
- var s = sensitivity || this.options.roundingSensitivity,
- pow10 = Math.pow(10, (Math.floor(d / s) + '').length - 1),
- r = Math.floor(d / pow10),
- p = (r > 5) ? pow10 : pow10 / 2;
- return Math.round(d / p) * p;
- },
- formatTime: function (t /* Number (seconds) */ ) {
- var un = this.options.unitNames || this._localization.localize('units');
- // More than 30 seconds precision looks ridiculous
- t = Math.round(t / 30) * 30;
- if (t > 86400) {
- return Math.round(t / 3600) + ' ' + un.hours;
- } else if (t > 3600) {
- return Math.floor(t / 3600) + ' ' + un.hours + ' ' +
- Math.round((t % 3600) / 60) + ' ' + un.minutes;
- } else if (t > 300) {
- return Math.round(t / 60) + ' ' + un.minutes;
- } else if (t > 60) {
- return Math.floor(t / 60) + ' ' + un.minutes +
- (t % 60 !== 0 ? ' ' + (t % 60) + ' ' + un.seconds : '');
- } else {
- return t + ' ' + un.seconds;
- }
- },
- formatInstruction: function (instr, i) {
- if (instr.text === undefined) {
- return this.capitalize(L.Util.template(this._getInstructionTemplate(instr, i),
- L.extend({}, instr, {
- exitStr: instr.exit ? this._localization.localize('formatOrder')(instr.exit) : '',
- dir: this._localization.localize(['directions', instr.direction]),
- modifier: this._localization.localize(['directions', instr.modifier])
- })));
- } else {
- return instr.text;
- }
- },
- getIconName: function (instr, i) {
- switch (instr.type) {
- case 'Head':
- if (i === 0) {
- return 'depart';
- }
- break;
- case 'WaypointReached':
- return 'via';
- case 'Roundabout':
- return 'enter-roundabout';
- case 'DestinationReached':
- return 'arrive';
- }
- switch (instr.modifier) {
- case 'Straight':
- return 'continue';
- case 'SlightRight':
- return 'bear-right';
- case 'Right':
- return 'turn-right';
- case 'SharpRight':
- return 'sharp-right';
- case 'TurnAround':
- case 'Uturn':
- return 'u-turn';
- case 'SharpLeft':
- return 'sharp-left';
- case 'Left':
- return 'turn-left';
- case 'SlightLeft':
- return 'bear-left';
- }
- },
- capitalize: function (s) {
- return s.charAt(0).toUpperCase() + s.substring(1);
- },
- _getInstructionTemplate: function (instr, i) {
- var type = instr.type === 'Straight' ? (i === 0 ? 'Head' : 'Continue') : instr.type,
- strings = this._localization.localize(['instructions', type]);
- if (!strings) {
- strings = [
- this._localization.localize(['directions', type]),
- ' ' + this._localization.localize(['instructions', 'Onto'])
- ];
- }
- return strings[0] + (strings.length > 1 && instr.road ? strings[1] : '');
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./localization": 19
- }],
- 14: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var Autocomplete = _dereq_('./autocomplete');
- var Localization = _dereq_('./localization');
- function selectInputText(input) {
- if (input.setSelectionRange) {
- // On iOS, select() doesn't work
- input.setSelectionRange(0, 9999);
- } else {
- // On at least IE8, setSeleectionRange doesn't exist
- input.select();
- }
- }
- module.exports = L.Class.extend({
- includes: L.Mixin.Events,
- options: {
- createGeocoder: function (i, nWps, options) {
- var container = L.DomUtil.create('div', 'leaflet-routing-geocoder'),
- input = L.DomUtil.create('input', '', container),
- remove = options.addWaypoints ? L.DomUtil.create('span', 'leaflet-routing-remove-waypoint', container) : undefined;
- input.disabled = !options.addWaypoints;
- return {
- container: container,
- input: input,
- closeButton: remove
- };
- },
- geocoderPlaceholder: function (i, numberWaypoints, geocoderElement) {
- var l = new Localization(geocoderElement.options.language).localize('ui');
- return i === 0 ?
- l.startPlaceholder :
- (i < numberWaypoints - 1 ?
- L.Util.template(l.viaPlaceholder, {
- viaNumber: i
- }) :
- l.endPlaceholder);
- },
- geocoderClass: function () {
- return '';
- },
- waypointNameFallback: function (latLng) {
- var ns = latLng.lat < 0 ? 'S' : 'N',
- ew = latLng.lng < 0 ? 'W' : 'E',
- lat = (Math.round(Math.abs(latLng.lat) * 10000) / 10000).toString(),
- lng = (Math.round(Math.abs(latLng.lng) * 10000) / 10000).toString();
- return ns + lat + ', ' + ew + lng;
- },
- maxGeocoderTolerance: 200,
- autocompleteOptions: {},
- language: 'en',
- },
- initialize: function (wp, i, nWps, options) {
- L.setOptions(this, options);
- var g = this.options.createGeocoder(i, nWps, this.options),
- closeButton = g.closeButton,
- geocoderInput = g.input;
- geocoderInput.setAttribute('placeholder', this.options.geocoderPlaceholder(i, nWps, this));
- geocoderInput.className = this.options.geocoderClass(i, nWps);
- this._element = g;
- this._waypoint = wp;
- this.update();
- // This has to be here, or geocoder's value will not be properly
- // initialized.
- // TODO: look into why and make _updateWaypointName fix this.
- geocoderInput.value = wp.name;
- L.DomEvent.addListener(geocoderInput, 'click', function () {
- selectInputText(this);
- }, geocoderInput);
- if (closeButton) {
- L.DomEvent.addListener(closeButton, 'click', function () {
- this.fire('delete', {
- waypoint: this._waypoint
- });
- }, this);
- }
- new Autocomplete(geocoderInput, function (r) {
- geocoderInput.value = r.name;
- wp.name = r.name;
- wp.latLng = r.center;
- this.fire('geocoded', {
- waypoint: wp,
- value: r
- });
- }, this, L.extend({
- resultFn: this.options.geocoder.geocode,
- resultContext: this.options.geocoder,
- autocompleteFn: this.options.geocoder.suggest,
- autocompleteContext: this.options.geocoder
- }, this.options.autocompleteOptions));
- },
- getContainer: function () {
- return this._element.container;
- },
- setValue: function (v) {
- this._element.input.value = v;
- },
- update: function (force) {
- var wp = this._waypoint,
- wpCoords;
- wp.name = wp.name || '';
- if (wp.latLng && (force || !wp.name)) {
- wpCoords = this.options.waypointNameFallback(wp.latLng);
- if (this.options.geocoder && this.options.geocoder.reverse) {
- this.options.geocoder.reverse(wp.latLng, 67108864 /* zoom 18 */ , function (rs) {
- if (rs.length > 0 && rs[0].center.distanceTo(wp.latLng) < this.options.maxGeocoderTolerance) {
- wp.name = rs[0].name;
- } else {
- wp.name = wpCoords;
- }
- this._update();
- }, this);
- } else {
- wp.name = wpCoords;
- this._update();
- }
- }
- },
- focus: function () {
- var input = this._element.input;
- input.focus();
- selectInputText(input);
- },
- _update: function () {
- var wp = this._waypoint,
- value = wp && wp.name ? wp.name : '';
- this.setValue(value);
- this.fire('reversegeocoded', {
- waypoint: wp,
- value: value
- });
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./autocomplete": 10,
- "./localization": 19
- }],
- 15: [function (_dereq_, module, exports) {
- (function (global) {
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null),
- Control = _dereq_('./control'),
- Itinerary = _dereq_('./itinerary'),
- Line = _dereq_('./line'),
- OSRMv1 = _dereq_('./osrm-v1'),
- Plan = _dereq_('./plan'),
- Waypoint = _dereq_('./waypoint'),
- Autocomplete = _dereq_('./autocomplete'),
- Formatter = _dereq_('./formatter'),
- GeocoderElement = _dereq_('./geocoder-element'),
- Localization = _dereq_('./localization'),
- ItineraryBuilder = _dereq_('./itinerary-builder'),
- Mapbox = _dereq_('./mapbox'),
- ErrorControl = _dereq_('./error-control');
- L.routing = {
- control: function (options) {
- return new Control(options);
- },
- itinerary: function (options) {
- return Itinerary(options);
- },
- line: function (route, options) {
- return new Line(route, options);
- },
- plan: function (waypoints, options) {
- return new Plan(waypoints, options);
- },
- waypoint: function (latLng, name, options) {
- return new Waypoint(latLng, name, options);
- },
- osrmv1: function (options) {
- return new OSRMv1(options);
- },
- localization: function (options) {
- return new Localization(options);
- },
- formatter: function (options) {
- return new Formatter(options);
- },
- geocoderElement: function (wp, i, nWps, plan) {
- return new L.Routing.GeocoderElement(wp, i, nWps, plan);
- },
- itineraryBuilder: function (options) {
- return new ItineraryBuilder(options);
- },
- mapbox: function (accessToken, options) {
- return new Mapbox(accessToken, options);
- },
- errorControl: function (routingControl, options) {
- return new ErrorControl(routingControl, options);
- },
- autocomplete: function (elem, callback, context, options) {
- return new Autocomplete(elem, callback, context, options);
- }
- };
- module.exports = L.Routing = {
- Control: Control,
- Itinerary: Itinerary,
- Line: Line,
- OSRMv1: OSRMv1,
- Plan: Plan,
- Waypoint: Waypoint,
- Autocomplete: Autocomplete,
- Formatter: Formatter,
- GeocoderElement: GeocoderElement,
- Localization: Localization,
- Formatter: Formatter,
- ItineraryBuilder: ItineraryBuilder,
- // Legacy; remove these in next major release
- control: L.routing.control,
- itinerary: L.routing.itinerary,
- line: L.routing.line,
- plan: L.routing.plan,
- waypoint: L.routing.waypoint,
- osrmv1: L.routing.osrmv1,
- geocoderElement: L.routing.geocoderElement,
- mapbox: L.routing.mapbox,
- errorControl: L.routing.errorControl,
- };
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./autocomplete": 10,
- "./control": 11,
- "./error-control": 12,
- "./formatter": 13,
- "./geocoder-element": 14,
- "./itinerary": 17,
- "./itinerary-builder": 16,
- "./line": 18,
- "./localization": 19,
- "./mapbox": 20,
- "./osrm-v1": 21,
- "./plan": 22,
- "./waypoint": 23
- }],
- 16: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- module.exports = L.Class.extend({
- options: {
- containerClassName: ''
- },
- initialize: function (options) {
- L.setOptions(this, options);
- },
- createContainer: function (className) {
- var table = L.DomUtil.create('table', className || ''),
- colgroup = L.DomUtil.create('colgroup', '', table);
- L.DomUtil.create('col', 'leaflet-routing-instruction-icon', colgroup);
- L.DomUtil.create('col', 'leaflet-routing-instruction-text', colgroup);
- L.DomUtil.create('col', 'leaflet-routing-instruction-distance', colgroup);
- return table;
- },
- createStepsContainer: function () {
- return L.DomUtil.create('tbody', '');
- },
- createStep: function (text, distance, icon, steps) {
- var row = L.DomUtil.create('tr', '', steps),
- span,
- td;
- td = L.DomUtil.create('td', '', row);
- //span = L.DomUtil.create('span', 'leaflet-routing-icon leaflet-routing-icon-' + icon, td);
- ////td.appendChild(span);
- //td = L.DomUtil.create('td', '', row);
- ////td.appendChild(document.createTextNode(text));
- //td = L.DomUtil.create('td', '', row);
- //td.appendChild(document.createTextNode(distance));
- return row;
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {}],
- 17: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var Formatter = _dereq_('./formatter');
- var ItineraryBuilder = _dereq_('./itinerary-builder');
- module.exports = L.Control.extend({
- includes: L.Mixin.Events,
- options: {
- pointMarkerStyle: {
- radius: 5,
- color: '#03f',
- fillColor: 'white',
- opacity: 1,
- fillOpacity: 0.7
- },
- summaryTemplate: '<h2>{name}</h2><h3>{distance}, {time}</h3>',
- timeTemplate: '{time}',
- containerClassName: '',
- alternativeClassName: '',
- minimizedClassName: '',
- itineraryClassName: '',
- totalDistanceRoundingSensitivity: -1,
- show: true,
- collapsible: undefined,
- collapseBtn: function (itinerary) {
- var collapseBtn = L.DomUtil.create('span', itinerary.options.collapseBtnClass);
- L.DomEvent.on(collapseBtn, 'click', itinerary._toggle, itinerary);
- itinerary._container.insertBefore(collapseBtn, itinerary._container.firstChild);
- },
- collapseBtnClass: 'leaflet-routing-collapse-btn'
- },
- initialize: function (options) {
- L.setOptions(this, options);
- this._formatter = this.options.formatter || new Formatter(this.options);
- this._itineraryBuilder = this.options.itineraryBuilder || new ItineraryBuilder({
- containerClassName: this.options.itineraryClassName
- });
- },
- onAdd: function (map) {
- var collapsible = this.options.collapsible;
- collapsible = collapsible || (collapsible === undefined && map.getSize().x <= 640);
- this._container = L.DomUtil.create('div', 'leaflet-routing-container leaflet-bar ' +
- (!this.options.show ? 'leaflet-routing-container-hide ' : '') +
- (collapsible ? 'leaflet-routing-collapsible ' : '') +
- this.options.containerClassName);
- this._altContainer = this.createAlternativesContainer();
- //this._container.appendChild(this._altContainer);
- L.DomEvent.disableClickPropagation(this._container);
- L.DomEvent.addListener(this._container, 'mousewheel', function (e) {
- L.DomEvent.stopPropagation(e);
- });
- if (collapsible) {
- this.options.collapseBtn(this);
- }
- return this._container;
- },
- onRemove: function () {},
- createAlternativesContainer: function () {
- return L.DomUtil.create('div', 'leaflet-routing-alternatives-container');
- },
- setAlternatives: function (routes) {
- var i,
- alt,
- altDiv;
- this._clearAlts();
- this._routes = routes;
- for (i = 0; i < this._routes.length; i++) {
- alt = this._routes[i];
- altDiv = this._createAlternative(alt, i);
- //this._altContainer.appendChild(altDiv);
- this._altElements.push(altDiv);
- }
- this._selectRoute({
- route: this._routes[0],
- alternatives: this._routes.slice(1)
- });
- return this;
- },
- show: function () {
- L.DomUtil.removeClass(this._container, 'leaflet-routing-container-hide');
- },
- hide: function () {
- L.DomUtil.addClass(this._container, 'leaflet-routing-container-hide');
- },
- _toggle: function () {
- var collapsed = L.DomUtil.hasClass(this._container, 'leaflet-routing-container-hide');
- this[collapsed ? 'show' : 'hide']();
- },
- _createAlternative: function (alt, i) {
- var altDiv = L.DomUtil.create('div', 'leaflet-routing-alt ' +
- this.options.alternativeClassName +
- (i > 0 ? ' leaflet-routing-alt-minimized ' + this.options.minimizedClassName : '')),
- template = this.options.summaryTemplate,
- data = L.extend({
- name: alt.name,
- distance: this._formatter.formatDistance(alt.summary.totalDistance, this.options.totalDistanceRoundingSensitivity),
- time: this._formatter.formatTime(alt.summary.totalTime)
- }, alt);
- altDiv.innerHTML = typeof (template) === 'function' ? template(data) : L.Util.template(template, data);
- L.DomEvent.addListener(altDiv, 'click', this._onAltClicked, this);
- this.on('routeselected', this._selectAlt, this);
- //altDiv.appendChild(this._createItineraryContainer(alt));
- return altDiv;
- },
- _clearAlts: function () {
- var el = this._altContainer;
- while (el && el.firstChild) {
- el.removeChild(el.firstChild);
- }
- this._altElements = [];
- },
- _createItineraryContainer: function (r) {
- var container = this._itineraryBuilder.createContainer(),
- steps = this._itineraryBuilder.createStepsContainer(),
- i,
- instr,
- step,
- distance,
- text,
- icon;
- //container.appendChild(steps);
- for (i = 0; i < r.instructions.length; i++) {
- instr = r.instructions[i];
- text = this._formatter.formatInstruction(instr, i);
- distance = this._formatter.formatDistance(instr.distance);
- icon = this._formatter.getIconName(instr, i);
- step = this._itineraryBuilder.createStep(text, distance, icon, steps);
- this._addRowListeners(step, r.coordinates[instr.index]);
- }
- return container;
- },
- _addRowListeners: function (row, coordinate) {
- L.DomEvent.addListener(row, 'mouseover', function () {
- this._marker = L.circleMarker(coordinate,
- this.options.pointMarkerStyle).addTo(this._map);
- }, this);
- L.DomEvent.addListener(row, 'mouseout', function () {
- if (this._marker) {
- this._map.removeLayer(this._marker);
- delete this._marker;
- }
- }, this);
- L.DomEvent.addListener(row, 'click', function (e) {
- this._map.panTo(coordinate);
- L.DomEvent.stopPropagation(e);
- }, this);
- },
- _onAltClicked: function (e) {
- var altElem = e.target || window.event.srcElement;
- while (!L.DomUtil.hasClass(altElem, 'leaflet-routing-alt')) {
- altElem = altElem.parentElement;
- }
- var j = this._altElements.indexOf(altElem);
- var alts = this._routes.slice();
- var route = alts.splice(j, 1)[0];
- this.fire('routeselected', {
- route: route,
- alternatives: alts
- });
- },
- _selectAlt: function (e) {
- var altElem,
- j,
- n,
- classFn;
- altElem = this._altElements[e.route.routesIndex];
- if (L.DomUtil.hasClass(altElem, 'leaflet-routing-alt-minimized')) {
- for (j = 0; j < this._altElements.length; j++) {
- n = this._altElements[j];
- classFn = j === e.route.routesIndex ? 'removeClass' : 'addClass';
- L.DomUtil[classFn](n, 'leaflet-routing-alt-minimized');
- if (this.options.minimizedClassName) {
- L.DomUtil[classFn](n, this.options.minimizedClassName);
- }
- if (j !== e.route.routesIndex) n.scrollTop = 0;
- }
- }
- L.DomEvent.stop(e);
- },
- _selectRoute: function (routes) {
- if (this._marker) {
- this._map.removeLayer(this._marker);
- delete this._marker;
- }
- this.fire('routeselected', routes);
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./formatter": 13,
- "./itinerary-builder": 16
- }],
- 18: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- module.exports = L.LayerGroup.extend({
- includes: L.Mixin.Events,
- options: {
- styles: [{
- color: 'black',
- opacity: 0.15,
- weight: 9
- },
- {
- color: 'white',
- opacity: 0.8,
- weight: 6
- },
- {
- color: 'red',
- opacity: 1,
- weight: 2
- }
- ],
- missingRouteStyles: [{
- color: 'black',
- opacity: 0.15,
- weight: 7
- },
- {
- color: 'white',
- opacity: 0.6,
- weight: 4
- },
- {
- color: 'gray',
- opacity: 0.8,
- weight: 2,
- dashArray: '7,12'
- }
- ],
- addWaypoints: true,
- extendToWaypoints: true,
- missingRouteTolerance: 10
- },
- initialize: function (route, options) {
- L.setOptions(this, options);
- L.LayerGroup.prototype.initialize.call(this, options);
- this._route = route;
- if (this.options.extendToWaypoints) {
- this._extendToWaypoints();
- }
- this._addSegment(
- route.coordinates,
- this.options.styles,
- this.options.addWaypoints);
- },
- getBounds: function () {
- return L.latLngBounds(this._route.coordinates);
- },
- _findWaypointIndices: function () {
- var wps = this._route.inputWaypoints,
- indices = [],
- i;
- for (i = 0; i < wps.length; i++) {
- indices.push(this._findClosestRoutePoint(wps[i].latLng));
- }
- return indices;
- },
- _findClosestRoutePoint: function (latlng) {
- var minDist = Number.MAX_VALUE,
- minIndex,
- i,
- d;
- for (i = this._route.coordinates.length - 1; i >= 0; i--) {
- // TODO: maybe do this in pixel space instead?
- d = latlng.distanceTo(this._route.coordinates[i]);
- if (d < minDist) {
- minIndex = i;
- minDist = d;
- }
- }
- return minIndex;
- },
- _extendToWaypoints: function () {
- var wps = this._route.inputWaypoints,
- wpIndices = this._getWaypointIndices(),
- i,
- wpLatLng,
- routeCoord;
- for (i = 0; i < wps.length; i++) {
- wpLatLng = wps[i].latLng;
- routeCoord = L.latLng(this._route.coordinates[wpIndices[i]]);
- if (wpLatLng.distanceTo(routeCoord) >
- this.options.missingRouteTolerance) {
- this._addSegment([wpLatLng, routeCoord],
- this.options.missingRouteStyles);
- }
- }
- },
- _addSegment: function (coords, styles, mouselistener) {
- var i,
- pl;
- for (i = 0; i < styles.length; i++) {
- pl = L.polyline(coords, styles[i]);
- this.addLayer(pl);
- if (mouselistener) {
- pl.on('mousedown', this._onLineTouched, this);
- }
- }
- },
- _findNearestWpBefore: function (i) {
- var wpIndices = this._getWaypointIndices(),
- j = wpIndices.length - 1;
- while (j >= 0 && wpIndices[j] > i) {
- j--;
- }
- return j;
- },
- _onLineTouched: function (e) {
- var afterIndex = this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng));
- this.fire('linetouched', {
- afterIndex: afterIndex,
- latlng: e.latlng
- });
- },
- _getWaypointIndices: function () {
- if (!this._wpIndices) {
- this._wpIndices = this._route.waypointIndices || this._findWaypointIndices();
- }
- return this._wpIndices;
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {}],
- 19: [function (_dereq_, module, exports) {
- (function () {
- 'use strict';
- var spanish = {
- directions: {
- N: 'norte',
- NE: 'noreste',
- E: 'este',
- SE: 'sureste',
- S: 'sur',
- SW: 'suroeste',
- W: 'oeste',
- NW: 'noroeste',
- SlightRight: 'leve giro a la derecha',
- Right: 'derecha',
- SharpRight: 'giro pronunciado a la derecha',
- SlightLeft: 'leve giro a la izquierda',
- Left: 'izquierda',
- SharpLeft: 'giro pronunciado a la izquierda',
- Uturn: 'media vuelta'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Derecho {dir}', ' sobre {road}'],
- 'Continue': ['Continuar {dir}', ' en {road}'],
- 'TurnAround': ['Dar vuelta'],
- 'WaypointReached': ['Llegó a un punto del camino'],
- 'Roundabout': ['Tomar {exitStr} salida en la rotonda', ' en {road}'],
- 'DestinationReached': ['Llegada a destino'],
- 'Fork': ['En el cruce gira a {modifier}', ' hacia {road}'],
- 'Merge': ['Incorpórate {modifier}', ' hacia {road}'],
- 'OnRamp': ['Gira {modifier} en la salida', ' hacia {road}'],
- 'OffRamp': ['Toma la salida {modifier}', ' hacia {road}'],
- 'EndOfRoad': ['Gira {modifier} al final de la carretera', ' hacia {road}'],
- 'Onto': 'hacia {road}'
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Inicio',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'Destino'
- },
- units: {
- meters: 'm',
- kilometers: 'km',
- yards: 'yd',
- miles: 'mi',
- hours: 'h',
- minutes: 'min',
- seconds: 's'
- }
- };
- L.Routing = L.Routing || {};
- var Localization = L.Class.extend({
- initialize: function (langs) {
- this._langs = L.Util.isArray(langs) ? langs : [langs, 'en'];
- for (var i = 0, l = this._langs.length; i < l; i++) {
- if (!Localization[this._langs[i]]) {
- throw new Error('No localization for language "' + this._langs[i] + '".');
- }
- }
- },
- localize: function (keys) {
- var dict,
- key,
- value;
- keys = L.Util.isArray(keys) ? keys : [keys];
- for (var i = 0, l = this._langs.length; i < l; i++) {
- dict = Localization[this._langs[i]];
- for (var j = 0, nKeys = keys.length; dict && j < nKeys; j++) {
- key = keys[j];
- value = dict[key];
- dict = value;
- }
- if (value) {
- return value;
- }
- }
- }
- });
- module.exports = L.extend(Localization, {
- 'en': {
- directions: {
- N: 'north',
- NE: 'northeast',
- E: 'east',
- SE: 'southeast',
- S: 'south',
- SW: 'southwest',
- W: 'west',
- NW: 'northwest',
- SlightRight: 'slight right',
- Right: 'right',
- SharpRight: 'sharp right',
- SlightLeft: 'slight left',
- Left: 'left',
- SharpLeft: 'sharp left',
- Uturn: 'Turn around'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Head {dir}', ' on {road}'],
- 'Continue': ['Continue {dir}'],
- 'TurnAround': ['Turn around'],
- 'WaypointReached': ['Waypoint reached'],
- 'Roundabout': ['Take the {exitStr} exit in the roundabout', ' onto {road}'],
- 'DestinationReached': ['Destination reached'],
- 'Fork': ['At the fork, turn {modifier}', ' onto {road}'],
- 'Merge': ['Merge {modifier}', ' onto {road}'],
- 'OnRamp': ['Turn {modifier} on the ramp', ' onto {road}'],
- 'OffRamp': ['Take the ramp on the {modifier}', ' onto {road}'],
- 'EndOfRoad': ['Turn {modifier} at the end of the road', ' onto {road}'],
- 'Onto': 'onto {road}'
- },
- formatOrder: function (n) {
- var i = n % 10 - 1,
- suffix = ['st', 'nd', 'rd'];
- return suffix[i] ? n + suffix[i] : n + 'th';
- },
- ui: {
- startPlaceholder: 'Start',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'End'
- },
- units: {
- meters: 'm',
- kilometers: 'km',
- yards: 'yd',
- miles: 'mi',
- hours: 'h',
- minutes: 'min',
- seconds: 's'
- }
- },
- 'de': {
- directions: {
- N: 'Norden',
- NE: 'Nordosten',
- E: 'Osten',
- SE: 'Südosten',
- S: 'Süden',
- SW: 'Südwesten',
- W: 'Westen',
- NW: 'Nordwesten',
- SlightRight: 'leicht rechts',
- Right: 'rechts',
- SharpRight: 'scharf rechts',
- SlightLeft: 'leicht links',
- Left: 'links',
- SharpLeft: 'scharf links',
- Uturn: 'Wenden'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Richtung {dir}', ' auf {road}'],
- 'Continue': ['Geradeaus Richtung {dir}', ' auf {road}'],
- 'SlightRight': ['Leicht rechts abbiegen', ' auf {road}'],
- 'Right': ['Rechts abbiegen', ' auf {road}'],
- 'SharpRight': ['Scharf rechts abbiegen', ' auf {road}'],
- 'TurnAround': ['Wenden'],
- 'SharpLeft': ['Scharf links abbiegen', ' auf {road}'],
- 'Left': ['Links abbiegen', ' auf {road}'],
- 'SlightLeft': ['Leicht links abbiegen', ' auf {road}'],
- 'WaypointReached': ['Zwischenhalt erreicht'],
- 'Roundabout': ['Nehmen Sie die {exitStr} Ausfahrt im Kreisverkehr', ' auf {road}'],
- 'DestinationReached': ['Sie haben ihr Ziel erreicht'],
- 'Fork': ['An der Kreuzung {modifier}', ' auf {road}'],
- 'Merge': ['Fahren Sie {modifier} weiter', ' auf {road}'],
- 'OnRamp': ['Fahren Sie {modifier} auf die Auffahrt', ' auf {road}'],
- 'OffRamp': ['Nehmen Sie die Ausfahrt {modifier}', ' auf {road}'],
- 'EndOfRoad': ['Fahren Sie {modifier} am Ende der Straße', ' auf {road}'],
- 'Onto': 'auf {road}'
- },
- formatOrder: function (n) {
- return n + '.';
- },
- ui: {
- startPlaceholder: 'Start',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'Ziel'
- }
- },
- 'sv': {
- directions: {
- N: 'norr',
- NE: 'nordost',
- E: 'öst',
- SE: 'sydost',
- S: 'syd',
- SW: 'sydväst',
- W: 'väst',
- NW: 'nordväst',
- SlightRight: 'svagt höger',
- Right: 'höger',
- SharpRight: 'skarpt höger',
- SlightLeft: 'svagt vänster',
- Left: 'vänster',
- SharpLeft: 'skarpt vänster',
- Uturn: 'Vänd'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Åk åt {dir}', ' till {road}'],
- 'Continue': ['Fortsätt {dir}'],
- 'SlightRight': ['Svagt höger', ' till {road}'],
- 'Right': ['Sväng höger', ' till {road}'],
- 'SharpRight': ['Skarpt höger', ' till {road}'],
- 'TurnAround': ['Vänd'],
- 'SharpLeft': ['Skarpt vänster', ' till {road}'],
- 'Left': ['Sväng vänster', ' till {road}'],
- 'SlightLeft': ['Svagt vänster', ' till {road}'],
- 'WaypointReached': ['Viapunkt nådd'],
- 'Roundabout': ['Tag {exitStr} avfarten i rondellen', ' till {road}'],
- 'DestinationReached': ['Framme vid resans mål'],
- 'Fork': ['Tag av {modifier}', ' till {road}'],
- 'Merge': ['Anslut {modifier} ', ' till {road}'],
- 'OnRamp': ['Tag påfarten {modifier}', ' till {road}'],
- 'OffRamp': ['Tag avfarten {modifier}', ' till {road}'],
- 'EndOfRoad': ['Sväng {modifier} vid vägens slut', ' till {road}'],
- 'Onto': 'till {road}'
- },
- formatOrder: function (n) {
- return ['första', 'andra', 'tredje', 'fjärde', 'femte',
- 'sjätte', 'sjunde', 'åttonde', 'nionde', 'tionde'
- /* Can't possibly be more than ten exits, can there? */
- ][n - 1];
- },
- ui: {
- startPlaceholder: 'Från',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'Till'
- }
- },
- 'es': spanish,
- 'sp': spanish,
- 'nl': {
- directions: {
- N: 'noordelijke',
- NE: 'noordoostelijke',
- E: 'oostelijke',
- SE: 'zuidoostelijke',
- S: 'zuidelijke',
- SW: 'zuidewestelijke',
- W: 'westelijke',
- NW: 'noordwestelijke'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Vertrek in {dir} richting', ' de {road} op'],
- 'Continue': ['Ga in {dir} richting', ' de {road} op'],
- 'SlightRight': ['Volg de weg naar rechts', ' de {road} op'],
- 'Right': ['Ga rechtsaf', ' de {road} op'],
- 'SharpRight': ['Ga scherpe bocht naar rechts', ' de {road} op'],
- 'TurnAround': ['Keer om'],
- 'SharpLeft': ['Ga scherpe bocht naar links', ' de {road} op'],
- 'Left': ['Ga linksaf', ' de {road} op'],
- 'SlightLeft': ['Volg de weg naar links', ' de {road} op'],
- 'WaypointReached': ['Aangekomen bij tussenpunt'],
- 'Roundabout': ['Neem de {exitStr} afslag op de rotonde', ' de {road} op'],
- 'DestinationReached': ['Aangekomen op eindpunt'],
- },
- formatOrder: function (n) {
- if (n === 1 || n >= 20) {
- return n + 'ste';
- } else {
- return n + 'de';
- }
- },
- ui: {
- startPlaceholder: 'Vertrekpunt',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'Bestemming'
- }
- },
- 'fr': {
- directions: {
- N: 'nord',
- NE: 'nord-est',
- E: 'est',
- SE: 'sud-est',
- S: 'sud',
- SW: 'sud-ouest',
- W: 'ouest',
- NW: 'nord-ouest'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Tout droit au {dir}', ' sur {road}'],
- 'Continue': ['Continuer au {dir}', ' sur {road}'],
- 'SlightRight': ['Légèrement à droite', ' sur {road}'],
- 'Right': ['A droite', ' sur {road}'],
- 'SharpRight': ['Complètement à droite', ' sur {road}'],
- 'TurnAround': ['Faire demi-tour'],
- 'SharpLeft': ['Complètement à gauche', ' sur {road}'],
- 'Left': ['A gauche', ' sur {road}'],
- 'SlightLeft': ['Légèrement à gauche', ' sur {road}'],
- 'WaypointReached': ['Point d\'étape atteint'],
- 'Roundabout': ['Au rond-point, prenez la {exitStr} sortie', ' sur {road}'],
- 'DestinationReached': ['Destination atteinte'],
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Départ',
- viaPlaceholder: 'Intermédiaire {viaNumber}',
- endPlaceholder: 'Arrivée'
- }
- },
- 'it': {
- directions: {
- N: 'nord',
- NE: 'nord-est',
- E: 'est',
- SE: 'sud-est',
- S: 'sud',
- SW: 'sud-ovest',
- W: 'ovest',
- NW: 'nord-ovest'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Dritto verso {dir}', ' su {road}'],
- 'Continue': ['Continuare verso {dir}', ' su {road}'],
- 'SlightRight': ['Mantenere la destra', ' su {road}'],
- 'Right': ['A destra', ' su {road}'],
- 'SharpRight': ['Strettamente a destra', ' su {road}'],
- 'TurnAround': ['Fare inversione di marcia'],
- 'SharpLeft': ['Strettamente a sinistra', ' su {road}'],
- 'Left': ['A sinistra', ' sur {road}'],
- 'SlightLeft': ['Mantenere la sinistra', ' su {road}'],
- 'WaypointReached': ['Punto di passaggio raggiunto'],
- 'Roundabout': ['Alla rotonda, prendere la {exitStr} uscita'],
- 'DestinationReached': ['Destinazione raggiunta'],
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Partenza',
- viaPlaceholder: 'Intermedia {viaNumber}',
- endPlaceholder: 'Destinazione'
- }
- },
- 'pt': {
- directions: {
- N: 'norte',
- NE: 'nordeste',
- E: 'leste',
- SE: 'sudeste',
- S: 'sul',
- SW: 'sudoeste',
- W: 'oeste',
- NW: 'noroeste',
- SlightRight: 'curva ligeira a direita',
- Right: 'direita',
- SharpRight: 'curva fechada a direita',
- SlightLeft: 'ligeira a esquerda',
- Left: 'esquerda',
- SharpLeft: 'curva fechada a esquerda',
- Uturn: 'Meia volta'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Siga {dir}', ' na {road}'],
- 'Continue': ['Continue {dir}', ' na {road}'],
- 'SlightRight': ['Curva ligeira a direita', ' na {road}'],
- 'Right': ['Curva a direita', ' na {road}'],
- 'SharpRight': ['Curva fechada a direita', ' na {road}'],
- 'TurnAround': ['Retorne'],
- 'SharpLeft': ['Curva fechada a esquerda', ' na {road}'],
- 'Left': ['Curva a esquerda', ' na {road}'],
- 'SlightLeft': ['Curva ligueira a esquerda', ' na {road}'],
- 'WaypointReached': ['Ponto de interesse atingido'],
- 'Roundabout': ['Pegue a {exitStr} saída na rotatória', ' na {road}'],
- 'DestinationReached': ['Destino atingido'],
- 'Fork': ['Na encruzilhada, vire a {modifier}', ' na {road}'],
- 'Merge': ['Entre à {modifier}', ' na {road}'],
- 'OnRamp': ['Vire {modifier} na rampa', ' na {road}'],
- 'OffRamp': ['Entre na rampa na {modifier}', ' na {road}'],
- 'EndOfRoad': ['Vire {modifier} no fim da rua', ' na {road}'],
- 'Onto': 'na {road}'
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Origem',
- viaPlaceholder: 'Intermédio {viaNumber}',
- endPlaceholder: 'Destino'
- }
- },
- 'sk': {
- directions: {
- N: 'sever',
- NE: 'serverovýchod',
- E: 'východ',
- SE: 'juhovýchod',
- S: 'juh',
- SW: 'juhozápad',
- W: 'západ',
- NW: 'serverozápad'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Mierte na {dir}', ' na {road}'],
- 'Continue': ['Pokračujte na {dir}', ' na {road}'],
- 'SlightRight': ['Mierne doprava', ' na {road}'],
- 'Right': ['Doprava', ' na {road}'],
- 'SharpRight': ['Prudko doprava', ' na {road}'],
- 'TurnAround': ['Otočte sa'],
- 'SharpLeft': ['Prudko doľava', ' na {road}'],
- 'Left': ['Doľava', ' na {road}'],
- 'SlightLeft': ['Mierne doľava', ' na {road}'],
- 'WaypointReached': ['Ste v prejazdovom bode.'],
- 'Roundabout': ['Odbočte na {exitStr} výjazde', ' na {road}'],
- 'DestinationReached': ['Prišli ste do cieľa.'],
- },
- formatOrder: function (n) {
- var i = n % 10 - 1,
- suffix = ['.', '.', '.'];
- return suffix[i] ? n + suffix[i] : n + '.';
- },
- ui: {
- startPlaceholder: 'Začiatok',
- viaPlaceholder: 'Cez {viaNumber}',
- endPlaceholder: 'Koniec'
- }
- },
- 'el': {
- directions: {
- N: 'βόρεια',
- NE: 'βορειοανατολικά',
- E: 'ανατολικά',
- SE: 'νοτιοανατολικά',
- S: 'νότια',
- SW: 'νοτιοδυτικά',
- W: 'δυτικά',
- NW: 'βορειοδυτικά'
- },
- instructions: {
- // instruction, postfix if the road is named
- 'Head': ['Κατευθυνθείτε {dir}', ' στην {road}'],
- 'Continue': ['Συνεχίστε {dir}', ' στην {road}'],
- 'SlightRight': ['Ελαφρώς δεξιά', ' στην {road}'],
- 'Right': ['Δεξιά', ' στην {road}'],
- 'SharpRight': ['Απότομη δεξιά στροφή', ' στην {road}'],
- 'TurnAround': ['Κάντε αναστροφή'],
- 'SharpLeft': ['Απότομη αριστερή στροφή', ' στην {road}'],
- 'Left': ['Αριστερά', ' στην {road}'],
- 'SlightLeft': ['Ελαφρώς αριστερά', ' στην {road}'],
- 'WaypointReached': ['Φτάσατε στο σημείο αναφοράς'],
- 'Roundabout': ['Ακολουθήστε την {exitStr} έξοδο στο κυκλικό κόμβο', ' στην {road}'],
- 'DestinationReached': ['Φτάσατε στον προορισμό σας'],
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Αφετηρία',
- viaPlaceholder: 'μέσω {viaNumber}',
- endPlaceholder: 'Προορισμός'
- }
- },
- 'ca': {
- directions: {
- N: 'nord',
- NE: 'nord-est',
- E: 'est',
- SE: 'sud-est',
- S: 'sud',
- SW: 'sud-oest',
- W: 'oest',
- NW: 'nord-oest',
- SlightRight: 'lleu gir a la dreta',
- Right: 'dreta',
- SharpRight: 'gir pronunciat a la dreta',
- SlightLeft: 'gir pronunciat a l\'esquerra',
- Left: 'esquerra',
- SharpLeft: 'lleu gir a l\'esquerra',
- Uturn: 'mitja volta'
- },
- instructions: {
- 'Head': ['Recte {dir}', ' sobre {road}'],
- 'Continue': ['Continuar {dir}'],
- 'TurnAround': ['Donar la volta'],
- 'WaypointReached': ['Ha arribat a un punt del camí'],
- 'Roundabout': ['Agafar {exitStr} sortida a la rotonda', ' a {road}'],
- 'DestinationReached': ['Arribada al destí'],
- 'Fork': ['A la cruïlla gira a la {modifier}', ' cap a {road}'],
- 'Merge': ['Incorpora\'t {modifier}', ' a {road}'],
- 'OnRamp': ['Gira {modifier} a la sortida', ' cap a {road}'],
- 'OffRamp': ['Pren la sortida {modifier}', ' cap a {road}'],
- 'EndOfRoad': ['Gira {modifier} al final de la carretera', ' cap a {road}'],
- 'Onto': 'cap a {road}'
- },
- formatOrder: function (n) {
- return n + 'º';
- },
- ui: {
- startPlaceholder: 'Origen',
- viaPlaceholder: 'Via {viaNumber}',
- endPlaceholder: 'Destí'
- },
- units: {
- meters: 'm',
- kilometers: 'km',
- yards: 'yd',
- miles: 'mi',
- hours: 'h',
- minutes: 'min',
- seconds: 's'
- }
- },
- 'ru': {
- directions: {
- N: 'север',
- NE: 'северовосток',
- E: 'восток',
- SE: 'юговосток',
- S: 'юг',
- SW: 'югозапад',
- W: 'запад',
- NW: 'северозапад',
- SlightRight: 'плавно направо',
- Right: 'направо',
- SharpRight: 'резко направо',
- SlightLeft: 'плавно налево',
- Left: 'налево',
- SharpLeft: 'резко налево',
- Uturn: 'развернуться'
- },
- instructions: {
- 'Head': ['Начать движение на {dir}', ' по {road}'],
- 'Continue': ['Продолжать движение на {dir}', ' по {road}'],
- 'SlightRight': ['Плавный поворот направо', ' на {road}'],
- 'Right': ['Направо', ' на {road}'],
- 'SharpRight': ['Резкий поворот направо', ' на {road}'],
- 'TurnAround': ['Развернуться'],
- 'SharpLeft': ['Резкий поворот налево', ' на {road}'],
- 'Left': ['Поворот налево', ' на {road}'],
- 'SlightLeft': ['Плавный поворот налево', ' на {road}'],
- 'WaypointReached': ['Точка достигнута'],
- 'Roundabout': ['{exitStr} съезд с кольца', ' на {road}'],
- 'DestinationReached': ['Окончание маршрута'],
- 'Fork': ['На развилке поверните {modifier}', ' на {road}'],
- 'Merge': ['Перестройтесь {modifier}', ' на {road}'],
- 'OnRamp': ['Поверните {modifier} на съезд', ' на {road}'],
- 'OffRamp': ['Съезжайте на {modifier}', ' на {road}'],
- 'EndOfRoad': ['Поверните {modifier} в конце дороги', ' на {road}'],
- 'Onto': 'на {road}'
- },
- formatOrder: function (n) {
- return n + '-й';
- },
- ui: {
- startPlaceholder: 'Начало',
- viaPlaceholder: 'Через {viaNumber}',
- endPlaceholder: 'Конец'
- },
- units: {
- meters: 'м',
- kilometers: 'км',
- yards: 'ярд',
- miles: 'ми',
- hours: 'ч',
- minutes: 'м',
- seconds: 'с'
- }
- }
- });
- })();
- }, {}],
- 20: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var OSRMv1 = _dereq_('./osrm-v1');
- /**
- * Works against OSRM's new API in version 5.0; this has
- * the API version v1.
- */
- module.exports = OSRMv1.extend({
- options: {
- serviceUrl: 'https://api.mapbox.com/directions/v5',
- profile: 'mapbox/driving',
- useHints: false
- },
- initialize: function (accessToken, options) {
- L.Routing.OSRMv1.prototype.initialize.call(this, options);
- this.options.requestParameters = this.options.requestParameters || {};
- /* jshint camelcase: false */
- this.options.requestParameters.access_token = accessToken;
- /* jshint camelcase: true */
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./osrm-v1": 21
- }],
- 21: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null),
- corslite = _dereq_('corslite'),
- polyline = _dereq_('polyline'),
- osrmTextInstructions = _dereq_('osrm-text-instructions');
- // Ignore camelcase naming for this file, since OSRM's API uses
- // underscores.
- /* jshint camelcase: false */
- var Waypoint = _dereq_('./waypoint');
- /**
- * Works against OSRM's new API in version 5.0; this has
- * the API version v1.
- */
- module.exports = L.Class.extend({
- options: {
- //serviceUrl: 'https://router.project-osrm.org/route/v1',
- serviceUrl: onemapUrlConfigNetwork.routeSearchDataUrl,
- profile: 'driving',
- timeout: 30 * 1000,
- routingOptions: {
- alternatives: true,
- steps: true
- },
- polylinePrecision: 5,
- useHints: true,
- suppressDemoServerWarning: false,
- language: 'zh'
- },
- initialize: function (options) {
- L.Util.setOptions(this, options);
- this._hints = {
- locations: {}
- };
-
- },
- route: function (waypoints, callback, context, options) {
- var timedOut = false,
- wps = [],
- url,
- timer,
- wp,
- i,
- xhr;
- options = L.extend({}, this.options.routingOptions, options);
- url = this.buildRouteUrl(waypoints, options);
- if (this.options.requestParameters) {
- url += L.Util.getParamString(this.options.requestParameters, url);
- }
- timer = setTimeout(function () {
- timedOut = true;
- callback.call(context || callback, {
- status: -1,
- message: 'OSRM request timed out.'
- });
- }, this.options.timeout);
- // Create a copy of the waypoints, since they
- // might otherwise be asynchronously modified while
- // the request is being processed.
- for (i = 0; i < waypoints.length; i++) {
- wp = waypoints[i];
- wps.push(new Waypoint(wp.latLng, wp.name, wp.options));
- }
- return xhr = corslite(url, L.bind(function (err, resp) {
- var data,
- error = {};
- clearTimeout(timer);
- if (!timedOut) {
- if (!err) {
- try {
- data = JSON.parse(resp.responseText);
- try {
- return this._routeDone(data, wps, options, callback, context);
- } catch (ex) {
- error.status = -3;
- error.message = ex.toString();
- }
- } catch (ex) {
- error.status = -2;
- error.message = 'Error parsing OSRM response: ' + ex.toString();
- }
- } else {
- error.message = 'HTTP request failed: ' + err.type +
- (err.target && err.target.status ? ' HTTP ' + err.target.status + ': ' + err.target.statusText : '');
- error.url = url;
- error.status = -1;
- error.target = err;
- }
- callback.call(context || callback, error);
- } else {
- xhr.abort();
- }
- }, this));
- },
- requiresMoreDetail: function (route, zoom, bounds) {
- if (!route.properties.isSimplified) {
- return false;
- }
- var waypoints = route.inputWaypoints,
- i;
- for (i = 0; i < waypoints.length; ++i) {
- if (!bounds.contains(waypoints[i].latLng)) {
- return true;
- }
- }
- return false;
- },
- _routeDone: function (response, inputWaypoints, options, callback, context) {
- var alts = [],
- actualWaypoints,
- i,
- route;
- context = context || callback;
- if (response.code !== 'Ok') {
- callback.call(context, {
- status: response.code
- });
- return;
- }
- actualWaypoints = this._toWaypoints(inputWaypoints, response.waypoints);
- for (i = 0; i < response.routes.length; i++) {
- route = this._convertRoute(response.routes[i]);
- route.inputWaypoints = inputWaypoints;
- route.waypoints = actualWaypoints;
- route.properties = {
- isSimplified: !options || !options.geometryOnly || options.simplifyGeometry
- };
- alts.push(route);
- }
- this._saveHintData(response.waypoints, inputWaypoints);
- routingControl.options.callback(alts);
- //delete routingControl;
- //callback.call(context, null, alts);
- },
- _convertRoute: function (responseRoute) {
- var result = {
- name: '',
- coordinates: [],
- instructions: [],
- summary: {
- totalDistance: responseRoute.distance,
- totalTime: responseRoute.duration
- }
- },
- legNames = [],
- waypointIndices = [],
- index = 0,
- legCount = responseRoute.legs.length,
- hasSteps = responseRoute.legs[0].steps.length > 0,
- i,
- j,
- leg,
- step,
- geometry,
- type,
- modifier,
- text,
- stepToText;
- if (this.options.stepToText) {
- stepToText = this.options.stepToText;
- } else {
- var textInstructions = osrmTextInstructions('v5', this.options.language);
- stepToText = textInstructions.compile.bind(textInstructions);
- }
- for (i = 0; i < legCount; i++) {
- leg = responseRoute.legs[i];
- legNames.push(leg.summary && leg.summary.charAt(0).toUpperCase() + leg.summary.substring(1));
- for (j = 0; j < leg.steps.length; j++) {
- step = leg.steps[j];
- geometry = this._decodePolyline(step.geometry);
- result.coordinates.push.apply(result.coordinates, geometry);
- type = this._maneuverToInstructionType(step.maneuver, i === legCount - 1);
- modifier = this._maneuverToModifier(step.maneuver);
- text = stepToText(step);
- if (type) {
- if ((i == 0 && step.maneuver.type == 'depart') || step.maneuver.type == 'arrive') {
- waypointIndices.push(index);
- }
- result.instructions.push({
- type: type,
- distance: step.distance,
- time: step.duration,
- road: step.name,
- direction: this._bearingToDirection(step.maneuver.bearing_after),
- exit: step.maneuver.exit,
- index: index,
- mode: step.mode,
- modifier: modifier,
- text: text
- });
- }
- index += geometry.length;
- }
- }
- result.name = legNames.join(', ');
- if (!hasSteps) {
- result.coordinates = this._decodePolyline(responseRoute.geometry);
- } else {
- result.waypointIndices = waypointIndices;
- }
- return result;
- },
- _bearingToDirection: function (bearing) {
- var oct = Math.round(bearing / 45) % 8;
- return ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'][oct];
- },
- _maneuverToInstructionType: function (maneuver, lastLeg) {
- switch (maneuver.type) {
- case 'new name':
- return 'Continue';
- case 'depart':
- return 'Head';
- case 'arrive':
- return lastLeg ? 'DestinationReached' : 'WaypointReached';
- case 'roundabout':
- case 'rotary':
- return 'Roundabout';
- case 'merge':
- case 'fork':
- case 'on ramp':
- case 'off ramp':
- case 'end of road':
- return this._camelCase(maneuver.type);
- // These are all reduced to the same instruction in the current model
- //case 'turn':
- //case 'ramp': // deprecated in v5.1
- default:
- return this._camelCase(maneuver.modifier);
- }
- },
- _maneuverToModifier: function (maneuver) {
- var modifier = maneuver.modifier;
- switch (maneuver.type) {
- case 'merge':
- case 'fork':
- case 'on ramp':
- case 'off ramp':
- case 'end of road':
- modifier = this._leftOrRight(modifier);
- }
- return modifier && this._camelCase(modifier);
- },
- _camelCase: function (s) {
- var words = s.split(' '),
- result = '';
- for (var i = 0, l = words.length; i < l; i++) {
- result += words[i].charAt(0).toUpperCase() + words[i].substring(1);
- }
- return result;
- },
- _leftOrRight: function (d) {
- return d.indexOf('left') >= 0 ? 'Left' : 'Right';
- },
- _decodePolyline: function (routeGeometry) {
- var cs = polyline.decode(routeGeometry, this.options.polylinePrecision),
- result = new Array(cs.length),
- i;
- for (i = cs.length - 1; i >= 0; i--) {
- result[i] = L.latLng(cs[i]);
- }
- return result;
- },
- _toWaypoints: function (inputWaypoints, vias) {
- var wps = [],
- i,
- viaLoc;
- for (i = 0; i < vias.length; i++) {
- viaLoc = vias[i].location;
- wps.push(new Waypoint(L.latLng(viaLoc[1], viaLoc[0]),
- inputWaypoints[i].name,
- inputWaypoints[i].options));
- }
- return wps;
- },
- buildRouteUrl: function (waypoints, options) {
- var locs = [],
- hints = [],
- wp,
- latLng,
- computeInstructions,
- computeAlternative = true;
- for (var i = 0; i < waypoints.length; i++) {
- wp = waypoints[i];
- latLng = wp.latLng;
- locs.push(latLng.lng + ',' + latLng.lat);
- hints.push(this._hints.locations[this._locationKey(latLng)] || '');
- }
- computeInstructions =
- true;
- return this.options.serviceUrl + '/' + this.options.profile + '/' +
- locs.join(';') + '?' +
- (options.geometryOnly ? (options.simplifyGeometry ? '' : 'overview=full') : 'overview=false') +
- '&alternatives=' + computeAlternative.toString() +
- '&steps=' + computeInstructions.toString() +
- (this.options.useHints ? '&hints=' + hints.join(';') : '') +
- (options.allowUTurns ? '&continue_straight=' + !options.allowUTurns : '');
- },
- _locationKey: function (location) {
- return location.lat + ',' + location.lng;
- },
- _saveHintData: function (actualWaypoints, waypoints) {
- var loc;
- this._hints = {
- locations: {}
- };
- for (var i = actualWaypoints.length - 1; i >= 0; i--) {
- loc = waypoints[i].latLng;
- this._hints.locations[this._locationKey(loc)] = actualWaypoints[i].hint;
- }
- },
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./waypoint": 23,
- "corslite": 1,
- "osrm-text-instructions": 2,
- "polyline": 9
- }],
- 22: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- var GeocoderElement = _dereq_('./geocoder-element');
- var Waypoint = _dereq_('./waypoint');
- module.exports = (L.Layer || L.Class).extend({
- includes: L.Mixin.Events,
- options: {
- dragStyles: [{
- color: 'black',
- opacity: 0.15,
- weight: 9
- },
- {
- color: 'white',
- opacity: 0.8,
- weight: 6
- },
- {
- color: 'red',
- opacity: 1,
- weight: 2,
- dashArray: '7,12'
- }
- ],
- draggableWaypoints: true,
- routeWhileDragging: false,
- addWaypoints: true,
- reverseWaypoints: false,
- addButtonClassName: '',
- language: 'en',
- createGeocoderElement: function (wp, i, nWps, plan) {
- return new GeocoderElement(wp, i, nWps, plan);
- },
- createMarker: function (i, wp, wl) {
- var options = {
- draggable: this.draggableWaypoints
- };
- if (i == 0) {
- options.icon = L.icon({
- iconUrl: L.DefaultImagePath + '/ico_p_2.png',
- iconSize: [25, 25],
- iconAnchor: [12, 25],
- popupAnchor: [0, -25]
- });
- } else if (i !== (wl - 1)) {
- options.icon = L.icon({
- iconUrl: L.DefaultImagePath + '/ico_p_4.png',
- iconSize: [25, 25],
- iconAnchor: [12, 25],
- popupAnchor: [0, -25]
- });
- } else {
- options.icon = L.icon({
- iconUrl: L.DefaultImagePath + '/ico_p_1.png',
- iconSize: [25, 25],
- iconAnchor: [12, 25],
- popupAnchor: [0, -25]
- });
- }
- var marker = L.marker(wp.latLng, options);
- marker.bindPopup('<p>' + wp.latLng.lng + '<br/>' + wp.latLng.lat + '</p>')
- return marker;
- },
- geocodersClassName: ''
- },
- initialize: function (waypoints, options) {
- L.Util.setOptions(this, options);
- this._waypoints = [];
- this.setWaypoints(waypoints);
- },
- isReady: function () {
- var i;
- for (i = 0; i < this._waypoints.length; i++) {
- if (!this._waypoints[i].latLng) {
- return false;
- }
- }
- return true;
- },
- getWaypoints: function () {
- var i,
- wps = [];
- for (i = 0; i < this._waypoints.length; i++) {
- wps.push(this._waypoints[i]);
- }
- return wps;
- },
- setWaypoints: function (waypoints) {
- var args = [0, this._waypoints.length].concat(waypoints);
- this.spliceWaypoints.apply(this, args);
- return this;
- },
- spliceWaypoints: function () {
- var args = [arguments[0], arguments[1]],
- i;
- for (i = 2; i < arguments.length; i++) {
- args.push(arguments[i] && arguments[i].hasOwnProperty('latLng') ? arguments[i] : new Waypoint(arguments[i]));
- }
- [].splice.apply(this._waypoints, args);
- // Make sure there's always at least two waypoints
- while (this._waypoints.length < 2) {
- this.spliceWaypoints(this._waypoints.length, 0, null);
- }
- this._updateMarkers();
- this._fireChanged.apply(this, args);
- },
- onAdd: function (map) {
- this._map = map;
- this._updateMarkers();
- },
- onRemove: function () {
- var i;
- this._removeMarkers();
- if (this._newWp) {
- for (i = 0; i < this._newWp.lines.length; i++) {
- this._map.removeLayer(this._newWp.lines[i]);
- }
- }
- delete this._map;
- },
- createGeocoders: function () {
- var container = L.DomUtil.create('div', 'leaflet-routing-geocoders ' + this.options.geocodersClassName),
- waypoints = this._waypoints,
- addWpBtn,
- reverseBtn;
- this._geocoderContainer = container;
- this._geocoderElems = [];
- if (this.options.addWaypoints) {
- addWpBtn = L.DomUtil.create('button', 'leaflet-routing-add-waypoint ' + this.options.addButtonClassName, container);
- addWpBtn.setAttribute('type', 'button');
- L.DomEvent.addListener(addWpBtn, 'click', function () {
- this.spliceWaypoints(waypoints.length, 0, null);
- }, this);
- }
- if (this.options.reverseWaypoints) {
- reverseBtn = L.DomUtil.create('button', 'leaflet-routing-reverse-waypoints', container);
- reverseBtn.setAttribute('type', 'button');
- L.DomEvent.addListener(reverseBtn, 'click', function () {
- this._waypoints.reverse();
- this.setWaypoints(this._waypoints);
- }, this);
- }
- this._updateGeocoders();
- this.on('waypointsspliced', this._updateGeocoders);
- return container;
- },
- _createGeocoder: function (i) {
- var geocoder = this.options.createGeocoderElement(this._waypoints[i], i, this._waypoints.length, this.options);
- geocoder
- .on('delete', function () {
- if (i > 0 || this._waypoints.length > 2) {
- this.spliceWaypoints(i, 1);
- } else {
- this.spliceWaypoints(i, 1, new Waypoint());
- }
- }, this)
- .on('geocoded', function (e) {
- this._updateMarkers();
- this._fireChanged();
- this._focusGeocoder(i + 1);
- this.fire('waypointgeocoded', {
- waypointIndex: i,
- waypoint: e.waypoint
- });
- }, this)
- .on('reversegeocoded', function (e) {
- this.fire('waypointgeocoded', {
- waypointIndex: i,
- waypoint: e.waypoint
- });
- }, this);
- return geocoder;
- },
- _updateGeocoders: function () {
- var elems = [],
- i,
- geocoderElem;
- for (i = 0; i < this._geocoderElems.length; i++) {
- this._geocoderContainer.removeChild(this._geocoderElems[i].getContainer());
- }
- for (i = this._waypoints.length - 1; i >= 0; i--) {
- geocoderElem = this._createGeocoder(i);
- this._geocoderContainer.insertBefore(geocoderElem.getContainer(), this._geocoderContainer.firstChild);
- elems.push(geocoderElem);
- }
- this._geocoderElems = elems.reverse();
- },
- _removeMarkers: function () {
- var i;
- if (this._markers) {
- for (i = 0; i < this._markers.length; i++) {
- if (this._markers[i]) {
- this._map.removeLayer(this._markers[i]);
- }
- }
- }
- this._markers = [];
- },
- _updateMarkers: function () {
- var i,
- m;
- if (!this._map) {
- return;
- }
- this._removeMarkers();
- for (i = 0; i < this._waypoints.length; i++) {
- if (this._waypoints[i].latLng) {
- m = this.options.createMarker(i, this._waypoints[i], this._waypoints.length);
- if (m) {
- m.addTo(this._map);
- if (this.options.draggableWaypoints) {
- this._hookWaypointEvents(m, i);
- }
- }
- } else {
- m = null;
- }
- this._markers.push(m);
- }
- },
- _fireChanged: function () {
- this.fire('waypointschanged', {
- waypoints: this.getWaypoints()
- });
- if (arguments.length >= 2) {
- this.fire('waypointsspliced', {
- index: Array.prototype.shift.call(arguments),
- nRemoved: Array.prototype.shift.call(arguments),
- added: arguments
- });
- }
- },
- _hookWaypointEvents: function (m, i, trackMouseMove) {
- var eventLatLng = function (e) {
- return trackMouseMove ? e.latlng : e.target.getLatLng();
- },
- dragStart = L.bind(function (e) {
- this.fire('waypointdragstart', {
- index: i,
- latlng: eventLatLng(e)
- });
- }, this),
- drag = L.bind(function (e) {
- this._waypoints[i].latLng = eventLatLng(e);
- this.fire('waypointdrag', {
- index: i,
- latlng: eventLatLng(e)
- });
- }, this),
- dragEnd = L.bind(function (e) {
- this._waypoints[i].latLng = eventLatLng(e);
- this._waypoints[i].name = '';
- if (this._geocoderElems) {
- this._geocoderElems[i].update(true);
- }
- this.fire('waypointdragend', {
- index: i,
- latlng: eventLatLng(e)
- });
- this._fireChanged();
- }, this),
- mouseMove,
- mouseUp;
- if (trackMouseMove) {
- mouseMove = L.bind(function (e) {
- this._markers[i].setLatLng(e.latlng);
- drag(e);
- }, this);
- mouseUp = L.bind(function (e) {
- this._map.dragging.enable();
- this._map.off('mouseup', mouseUp);
- this._map.off('mousemove', mouseMove);
- dragEnd(e);
- }, this);
- this._map.dragging.disable();
- this._map.on('mousemove', mouseMove);
- this._map.on('mouseup', mouseUp);
- dragStart({
- latlng: this._waypoints[i].latLng
- });
- } else {
- m.on('dragstart', dragStart);
- m.on('drag', drag);
- m.on('dragend', dragEnd);
- }
- },
- dragNewWaypoint: function (e) {
- var newWpIndex = e.afterIndex + 1;
- if (this.options.routeWhileDragging) {
- this.spliceWaypoints(newWpIndex, 0, e.latlng);
- this._hookWaypointEvents(this._markers[newWpIndex], newWpIndex, true);
- } else {
- this._dragNewWaypoint(newWpIndex, e.latlng);
- }
- },
- _dragNewWaypoint: function (newWpIndex, initialLatLng) {
- var wp = new Waypoint(initialLatLng),
- prevWp = this._waypoints[newWpIndex - 1],
- nextWp = this._waypoints[newWpIndex],
- marker = this.options.createMarker(newWpIndex, wp, this._waypoints.length + 1),
- lines = [],
- draggingEnabled = this._map.dragging.enabled(),
- mouseMove = L.bind(function (e) {
- var i,
- latLngs;
- if (marker) {
- marker.setLatLng(e.latlng);
- }
- for (i = 0; i < lines.length; i++) {
- latLngs = lines[i].getLatLngs();
- latLngs.splice(1, 1, e.latlng);
- lines[i].setLatLngs(latLngs);
- }
- L.DomEvent.stop(e);
- }, this),
- mouseUp = L.bind(function (e) {
- var i;
- if (marker) {
- this._map.removeLayer(marker);
- }
- for (i = 0; i < lines.length; i++) {
- this._map.removeLayer(lines[i]);
- }
- this._map.off('mousemove', mouseMove);
- this._map.off('mouseup', mouseUp);
- this.spliceWaypoints(newWpIndex, 0, e.latlng);
- if (draggingEnabled) {
- this._map.dragging.enable();
- }
- }, this),
- i;
- if (marker) {
- marker.addTo(this._map);
- }
- for (i = 0; i < this.options.dragStyles.length; i++) {
- lines.push(L.polyline([prevWp.latLng, initialLatLng, nextWp.latLng],
- this.options.dragStyles[i]).addTo(this._map));
- }
- if (draggingEnabled) {
- this._map.dragging.disable();
- }
- this._map.on('mousemove', mouseMove);
- this._map.on('mouseup', mouseUp);
- },
- _focusGeocoder: function (i) {
- if (this._geocoderElems[i]) {
- this._geocoderElems[i].focus();
- } else {
- document.activeElement.blur();
- }
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {
- "./geocoder-element": 14,
- "./waypoint": 23
- }],
- 23: [function (_dereq_, module, exports) {
- (function (global) {
- (function () {
- 'use strict';
- var L = (typeof window !== "undefined" ? window.L : typeof global !== "undefined" ? global.L : null);
- module.exports = L.Class.extend({
- options: {
- allowUTurn: false,
- },
- initialize: function (latLng, name, options) {
- L.Util.setOptions(this, options);
- this.latLng = L.latLng(latLng);
- this.name = name;
- }
- });
- })();
- }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
- }, {}]
- }, {}, [15]);
|