WallpaperMachine
The wallpapers you love. A new home on your Mac.
CX Tracks: сглобяване на нов маршрут от записани GPX тракове: дубликати, части, изрязване, износ като .gpx и картина за офлайн.
Translation pending
LifestyleJavaScript · HTMLGitHub @cepreu5OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
*(по-рано „GPX конструктор“; репото вече е cx-tracks, адресът -)* Приложение в браузъра, което сглобява нов маршрут от вече записани GPX тракове.Read the full README ↗
(по-рано „GPX конструктор“; репото вече е cx-tracks, адресът - https://cepreu5.github.io/cx-tracks/)
Приложение в браузъра, което сглобява нов маршрут от вече записани GPX тракове.
Добавяш няколко трака, приложението само намира дублиращите се участъци и слага на всеки маркер по средата му; числото в маркера казва колко застъпени участъка събира едно натискане (от 1.4). Клик върху маркера маха дубликата от маршрута и от картата - а ако на мястото лежат три и повече трака един върху друг, един клик маха всички освен един (от 1.3.1); "Отмени" връща всичко. Копчето "Изчисти преди сглобяване" в панела "Дубликати" (от 1.4) прави наведнъж това, което правят кликовете върху всички маркери, и свързва направо отворените дупки до 1000 м (от 1.9; преди - до 500 м) - пак една стъпка за "Отмени". Прозорец за потвърждение няма: решенията се виждат в панела "Дубликати" (свит по подразбиране), с редовете "Дубликати по картата: N маркера · X км", "Пропуснати дубликати: N участъка · X км" и "Отворени дупки: N · X м". Клик върху сегмент отваря малко меню до него: "Добави в маршрута" го слага като следваща част, "Изтрий участъка" го маха от картата, от трака и от маршрута; пръстенът (точката на разклонение) има свое меню със "Изтрий разклонението". Частите се редуват по цвят (тъмносин и оранжев), за да се вижда къде свършва едната и започва следващата. Готовият маршрут излиза като един цял .gpx файл, който се зарежда в часовник, OsmAnd, Komoot, Locus или GPS устройство.
Дефолтът вече може да е и цяла колекция .json, не само .gpx файл - отмята ли се „Запомни го като дефолт“ при внасяне на колекция, тя се връща пак, когато колекцията е празна.
.json файл се пази в браузъра със своите байтове и при празна колекция се разчита пак - с траковете, маршрутите и запазените картини..gpx..gpx, и .json, дефолтът пази всички тях и ги връща заедно.Дефолтът вече няма поле за име - носи името на файла, който си внесъл.
Изтриването вече пита в прозорец в самото приложение, вместо през въпроса на браузъра - затова работи и в инсталираното приложение на телефона.
Колекция, която искаш да е винаги под ръка, вече се запомня като дефолт - с една отметка в прозореца за внасяне - и се връща сама, когато екранът е празен. А панелът „Записани маршрути“ получи бутон „Изтрий“ за всички маршрути наведнъж.
Началният екран се подрежда като акордеони: „Запазена картина“, „Записани маршрути“, картата „Маршрут“ с числата и профила и дългите указания под тях се сгъват и разгъват с клик върху заглавието - по същия начин като „Части в маршрута“ и „Тракове-източници“, и както там браузърът помни кое е отворено.
„Посока“ и „Север“ вече въртят целия изглед „Картина“ - снимката, линиите, точките и кръгчето заедно, около центъра на екрана.
Следата при загасен екран вече върви по маршрута, вместо да пресича направо през завоите.
Числата върху частите на маршрута вече са квадратни - за да не се бъркат с кръглите числа върху дубликатите.
Един таван вместо три по 500 м. Досега самозатварянето, пръстенът на дупката ("Свържи направо", "Изчисти преди сглобяване") и връзката с "Добавяне" спираха на 500 м всеки поотделно, така че дупка от 855 м оставаше само за ръката. От 1.9 и трите стигат до 1000 м (Core.GAP_CEIL_M); по-дългото си остава за "Затвори с чертаене" и "Удължи/Скъси".
t.hj); до края на другото парче (40 м) двата края се свързват. Редът излиза само ако най-близката линия е до тавана; "Удължи/Скъси" остава под него за всичко останало. Свободният край не се свързва сам, а "Отмени" връща клика.Свободният край на трак вече се влачи с ръка - така се затварят и дупките над 500 м, които никой от досегашните инструменти не затваряше.
Core.openEnds). Затворен кръг няма свободен край и редът не излиза. Панелът "Тракове-източници" остава без меню.t.hj). Върху края на трак (до 40 м от него) - свързване: тракът расте до точно този край и двата стават една линия. На празно - нов край: новият връх става краят, а точката остава на него, за да продължиш. Назад по същия трак - скъсяване: върховете, през които минава, се махат (и заредените), а точката остава на новия край..gpx като всички други, затова таванът от 500 м не важи за ръката (той си остава за връзките с "Добавяне"). Начертаното се пази като такова (t.ext) - дългата права там не е дупка в записа и не става дубликат, когато пада върху друг трак. Изтритото, махнатото, връзките и частите на маршрутите следват новите разстояния; "Отмени" връща всяко пускане.Действията пипат колекцията: четирите режима - "Изрязване", "Добавяне", "Местене", "Махане" - работят върху траковете, а маршрутът се сглобява след тях. В колекцията не остава празно място: всяко махане оставя линията непрекъсната - мястото е покрито от друг трак или двата края се свързват. Изтрит дубликат не оставя празно място.
Core.dupStretch). Двата края на махнатото лягат върху оставащата линия: от края на трака до най-близкото място на другата линия се чертае продължение в цвета на трака (Core.skipEnds). След изтриване нищо не се свързва и не се чертае допълнително; "Отмени" връща всичко. Застъпванията без маркер се чистят както в 1.6 (до 1,5 пъти отклонението).joins при дупка в един трак, links между два трака) и пътува с колекцията; "Отмени" я маха. Без нито един трак "Добавяне" чертае маршрута направо, както досега; "Начертай" при дупка в маршрута също чертае в маршрута.Core.remapper). Клик в "Махане" върху самата връзка я маха и дупката е пак отворена..gpx като върхове в трака. .gpx на трак е една непрекъсната линия: без изтритото, с връзките през дупките и с връзката към съседния трак в началото или в края (Core.trackLine); в .gpx на маршрута връзките са върхове като всички останали.Чиста колекция: преди колекцията да се запише, нито един участък не носи повече от един трак. Трите условия за готова колекция - няма дублирани тракове, няма покрити един върху друг тракове, които не се отчитат като дубликати, и няма незатворени дупки (и след изчистване на дублиране) - се виждат в "Проверка за дубликати" и се изпълняват с "Изчисти преди сглобяване".
Синтетичен Б · 368–1 002 м), какво лежи отдолу и две копчета - "Затвори направо · под него остава трак" и "Затвори с чертане · маха и трака отдолу" (мястото се чертае наново, режимът става "Добавяне"), плюс "Отказ".Core.dupStretch), така че в участъка остава точно един трак и по една точка на разклоняване в краищата му. Махнатото е пак в skips; "Отмени" връща всичко. Второто копче на участъка, "Изтрий и трака под него", остава за случая, в който под участъка лежи друг трак.joins в трака и в колекцията) - след махнат дубликат, махнато разклонение и изтрит участък до прага от "Настройки" (100 м по подразбиране), а при "Изчисти преди сглобяване" до 500 м. Махнат дубликат не е дупка: отдолу стои копието, което остава. Пресичащ трак не покрива дупка..gpx на трака (orig) и в подсказката на реда; "Отмени" връща имената.Целта: файл по файл, преди да се запише колекция, да не остане участък, по който минават повече от един трак. Трите действия за това - махане на дублираните участъци, махане на излишните разклонения и затваряне на малките дупки, останали след тях - са събрани, а "Проверка за дубликати" казва дали е останало нещо.
.gpx, и колекция (.json). Долното "Зареди колекция" в "Тракове-източници" го няма; "Изнеси колекцията" остава.LW в js/app.js..gpx, но не е част (не се брои и няма номер). Съобщението казва колко дупки са затворени. По-дългите дупки остават както досега - с пръстен и с двата бутона. Махнатата с × връзка остава отворена - следващото действие не я затваря пак. Самозатварянето до отклонението (20 м) си остава отделно и важи винаги.gpxk.settings), не в трака и не в колекцията - не пътуват с нея. "Връщане по подразбиране" връща всичко наведнъж..gpx файла наведнъж (копче или пускане на файла върху страницата). След зареждане картата показва целия трак. Лош файл дава ясно съобщение и нищо не се губи. Бутонът "Нов" (последен в реда под "Тракове-източници") маха всички заредени тракове и заедно с тях частите на текущия маршрут, защото част не може без своя трак. Без въпрос "Сигурен ли си?": "Отмени" връща всичко - траковете (с изрезките и решенията им) и маршрута. Записаните маршрути в библиотеката остават. Бутонът е неактивен, когато няма какво да махне.Копчето с глобуса в първия ред на лентата (вдясно от "Имена", преди зъбното колелце) отваря прозореца "Език":
gpxk.tr.<език>), така че при следващо отваряне не се превежда пак. Браузър без преводач (засега той е в Chrome на компютър, от версия 138) вижда реда избледнял и забранен, със съобщение "Браузърът ти не поддържа автоматичен превод"; всичко останало работи.Изборът се помни в браузъра (gpxk.lang: auto, bg, en или tr:<език>, напр. tr:de). Смяната е веднага, без презареждане и без да се губи нещо по картата, и сменя и езика на страницата (lang), за да не се включи отделно превеждането на самата страница от браузъра. Речникът (и преводът) дава всеки видим надпис: копчетата, прозорците, подсказките, съобщенията, числата с мерните единици и датите, надписите върху картата и текста, който се рисува в "Картина" и в изнесения .png. Не се превеждат твоите данни - имената на маршрути, спирки, тракове и файлове (и изнесеният .gpx, който остава точка за точка същият), имената на доставчиците (Esri World Imagery, OpenTopoMap, Nominatim, Open-Meteo, OpenTopoData) и самото "CX Tracks". Маршрут, създаден на английски, получава името по подразбиране на английски ("New route"); съществуващите имена не се пипат при смяна на езика.
Чете се отляво надясно: логото, полето за името на маршрута (до 372 px), "Отклонение" и после бутоните. "Отмени", стрелката надолу, скриването на лентата и "Следене" не са в нея - те са на картата (виж по-долу).
.gpx файлове; същото става и с пускане на файл върху страницата. До 10 файла наведнъж, лош файл дава съобщение и нищо не се губи..png картината за офлайн. Преди да я сглоби казва колко точки излизат и около колко мегабайта, а файлът се казва marshrut-<име>-<дата>.png. Сглобява се в браузъра от плочките и не качва маршрута никъде; ако няма какво да се снима, казва го, вместо да направи празна картина..gpx файл - една линия, със спирките. Преди това пита за името на файла (прозорецът "Име на файла", предложено <име на маршрута>.gpx). Празен маршрут не сваля нищо и не пита, а казва, че клик върху трак слага първата част. Това е файлът за навигация; за архив на цялата работа служи "Изнеси колекцията".<име>.gpx и записва маршрута под същото име в "Записани маршрути" (описан е в "Какво може"). Вижда се при всяка ширина.Горе вляво, отляво надясно:
aria-pressed="true") и го спира на същото място; отделно копче "Стоп" няма. Същото важи и за копчето "Следене" под профила.Трите са в редица, когато се събират в мястото между левия ръб на картата и реда горе вдясно ("Сателит / Топо", "Отмени", "Точки", "Север") с поне 8 px запас; когато не се събират, са надолу в стълбичка, за да не го застъпват. Решава наличното място, не ширината на екрана: пресмята се наново при промяна на размера или завъртане на екрана, при скриване и връщане на лентата, при начало и край на следенето и когато в реда вдясно се появи или скрие "Точки" или "Север". Мери се истинската ширина на "Следене / Стоп". Затова на телефон (360-430 px) групата обикновено е в редица, при 320 px и надолу е в стълбичка, а с "Стоп", "Север" или точки на картата може да слезе в стълбичка и на по-широк екран.
Горе вдясно, отляво надясно: Сателит / Топо (радар и връх с хоризонтали), Отмени (квадратно копче със стрелка, колкото "Сателит / Топо"; връща последното действие и е избледняло, когато няма какво да върне; Ctrl+Z прави същото) и Точки (чавка и пръстен с номер). "Точки" се вижда само докато на картата има чертани точки: при празен маршрут го няма, с първата точка се появява, а щом се махне последната ("Махане", "Нов", "Изтрий" или "Отмени"), пак се скрива. Сложената или махната отметка се помни и не се губи от скриването - при следващата точка копчето излиза в същото състояние. Копчето е само на това място (и при отворена, и при скрита лента). Под тях, при завъртяна карта, копчето "Север". Връща я и цъкане на празно място на картата (в режим "Избор" и при следене), а при първото скриване излиза подсказка как става това.
На тесен екран лентата се събира: при ширина до 1060 пиксела "Картина" и "Изнеси .gpx" се скриват от нея ("Запази" остава), а при ширина до 1200 пиксела от "Добави тракове" остава само "Добави", както и от "Отклонение" - само полето без думата. Същите копчета стоят и под картата, така че нищо не се губи. При ширина до 900 пиксела от логото остава само кръгчето.
Вторият ред на лентата не носи бутони за действия, а режимите "Избор", "Изрязване", "Добавяне", "Местене", "Махане" и търсенето на адрес вдясно. Основата на картата ("Сателит / Топо", с икони), "Отмени" и отметката "Точки" стоят на самата карта, горе вдясно, а приближаването ("+", "−"), "Центрирай" и "Покажи целия маршрут" - долу вдясно, в равна по ширина колона. Кръглата стрелка нагоре е плаващо копче, заковано за екрана, а не за картата: стои на 26 px от долния и 56 px от десния ръб, така че докато картата е на екрана, е в една редица с колоната, вляво от "Покажи целия маршрут". Вижда се винаги - и когато си слязъл към текстовите карти ("Части", "Тракове-източници", "Дубликати", "Записани маршрути") - и с едно натискане връща плавно най-горе, при картата. "Центрирай" е мерник без дума (при задържане излиза "Центрирай върху положението ти от GPS", същото е и името за екранни четци); центрира картата върху положението ти от GPS: при следене връща и автоматичното центриране, и посоката; извън следене ползва последното известно положение, а ако няма такова, пита браузъра веднъж и при отказ казва "Няма сигнал от GPS". Докато тече следене, под лентата се появява редът на следенето: "Следене: <име>", превключвател "Карта / Картина", превключвател "Посока / Север", "Екранът буден" (на телефон само "буден") и "Изнеси .gpx"; режимите тогава се скриват. Следенето се спира със "Стоп" в първия ред на лентата (мястото на "Следене"). "Екранът буден" е включено по подразбиране (оцветено) и изборът се помни: докато следиш, екранът не заспива - ключалката за екрана се иска при тръгване и наново всеки път, когато се върнеш в приложението (браузърът сам я пуска, щом страницата се скрие). Натискането го изключва - тогава екранът може да заспи, а следенето пак продължава. Под съобщението в панела "Следене" ред казва какво става: "Екранът няма да заспива, докато следиш.", "Екранът може да заспи - следенето продължава при събуждане.", а когато браузърът не може или откаже - "Този браузър не може да държи екрана буден..." или "Браузърът не позволи екранът да стои буден (например при пестене на батерия)...". "Стоп" пуска ключалката. При "Посока" (по подразбиране) картата в изгледа "Карта" се върти плавно, така че посоката на движение сочи нагоре; посоката идва от GPS, а когато той не я дава (при стоене или бавно ходене) - от последните две записани точки, и при стоене на място остава последната. При "Север" картата стои север нагоре. Изборът се помни. Горе вдясно, под "Сателит / Топо", стои двурежимно копче със стрелка "С", която показва накъде е север (буквата и надписите по картата остават изправени). Докато картата е завъртяна, то предлага "Север" и я изправя север-нагоре; докато е север-нагоре, а посоката на движение е известна, предлага "Посока" и я завърта обратно по последната известна посока. Работи и при следене, и извън него: копчето и ключът "Посока / Север" в реда на следенето са едно и също и стоят в синхрон, а изборът се помни. Когато посока още не е известна (не е имало следене от отварянето на страницата), копчето предлага само "Север" и се вижда само при завъртяна карта. Дръпнеш ли картата с пръст, тя спира да следва и центъра, и посоката; "Центрирай" връща и двете. След "Стоп" картата не се обръща сама: остава в последната посока, а последната посока се пази - "Север" изправя картата, а после "Посока" я връща. "Изнеси .gpx" сваля изминатото дотук като .gpx (само изминатата линия - един трак с височина и час на всяка точка, без планирания маршрут), без да спира следенето; преди файлът да слезе пита за името му. Докато има по-малко от две записани точки, копчето е избледняло и не прави нищо.
Веднага под картата е редът с числа (Дължина, Изкачване, Спускане, Наклон до, Части, Точки, Пропуснати) и профилът на височината с отметката "Наклон в проценти". Над числата, докато има излишни пръстени, стои редът "Излишни пръстени: n · Прегледай" (отваря списъка, виж по-горе). Под числата са същите копчета като в горната лента - "Изнеси .gpx", "Картина", "Запази", "Следене" - и полето "Отклонение", а после кратко упътване за кликовете на картата. После идват панелите в две колони: вляво "Части в маршрута" и "Точки", вдясно "Тракове-източници" и "Дубликати". Докато тече следене, най-горе стои панелът "Следене" с четири числа (Изминати, Време, Остават, Встрани) и ред със съобщение. След "Стоп" панелът остава с числата, съобщението става "Следенето спря. Изминатият път е записан като отделен маршрут "изминат 1 окт"." и под него излиза копче "Свали изминатото като .gpx" (със същия прозорец за име). Понеже на телефон панелът е под картата, извън екрана, същото копче излиза и върху самата карта, долу: тънък ред "Следенето спря: изминат 1 окт" с "Свали изминалото като .gpx" и ×, който стои, докато не го затвориш с ×. Последното изминато се пази в браузъра: панелът и редът остават и при отваряне на друг маршрут, и след презареждане на страницата, а копчето сваля същия файл и по-късно. Махат се с ново следене или с × в ъгъла на панела. Изминатото става трак "изминат <дата>" в "Тракове-източници" (с отметка "изминат") и отделен запис със същото име в "Записани маршрути" - една част, целият изминат трак; записът се отваря и редактира като всеки друг маршрут, а текущ си остава следеният маршрут.
Докато тече следене, изминатото дотук (ширина, дължина, височина, час и точност на всяка точка) се записва и в браузъра - на всеки 10 секунди и веднага, щом страницата се скрие или затвори. Пази се само едно незавършено следене: ново следене заменя стария запис, а "Стоп" го чисти (изминатото вече е в последното изминато). Ако следенето прекъсне, без да е натиснат "Стоп" (паднала батерия, затворен браузър, презареждане), при следващо отваряне на приложението насред екрана излиза прозорецът "Незавършено следене": разстоянието, броят точки, "Тръгнал 1 окт, 17:42 · следене по „<име на маршрута>“" и "Следенето прекъсна, преди да го спреш. Изминатото е запазено." Копчетата: "Свали .gpx" (записва го и отваря прозореца за име на файла), "Запази" (записва го) и "Изхвърли" (маха го без запис). Записаното влиза точно както след "Стоп" - трак "изминат <дата на тръгване>" и отделен запис в "Записани маршрути", панелът "Следене" и редът върху картата за сваляне излизат както след спиране - и записът в браузъра се чисти. × затваря прозореца, без да пипа записа; той пита пак чак при следващо отваряне на страницата. Прозорецът излиза само при поне 2 записани точки; запис с 0 или 1 точка се изхвърля сам. Ако браузърът не позволява запис (например частен режим), при тръгване на следенето излиза веднъж "Следенето не се пази в браузъра".
Заспал екран. Изгасналият екран (или излизането от приложението) не е край на следенето. При връщане, ако GPS-ът не е дал положение, докато страницата е била скрита (iPhone/Safari тогава спира местоположението изцяло и не го пуска сам), той се пуска наново, а ако до 8 секунди пак няма положение - още веднъж. Докато чака, панелът пише "Чакам сигнал от GPS..." (както при тръгване), а при първото ново положение се връща "По линията си. Точност на GPS: 12 м.". Същият запис, същият часовник, същият маршрут - без "Стоп" и без прозорец "Незавършено следене" (той е само за страница, убита от телефона и заредена наново). Ако и последната точка преди паузата, и първата след нея са върху следения маршрут (до 20 м от линията му), между тях в същия трак се вмъкват точките на маршрута - следата върви по самите му завои, все едно през паузата си се движил по него. Същото става при всяка дупка в GPS, и при буден екран (тунел, изгубен сигнал). Следата върви напред по посоката на маршрута; при затворен кръг - през края му към началото, дори когато назад е по-кратко (ако през паузата си пресякъл началото на кръга, тя може да обиколи почти целия кръг); назад по маршрута върви само при отворен маршрут, когато напред няма такова място. Вмъкнатите точки влизат в изминатото, в дължината на записа, в .gpx и в записа в "Записани маршрути"; всяка има час, разпределен по разстояние между часовете на двете измерени точки, височина от маршрута и празна точност. Височината на вмъкнатата точка се чете в профила на маршрута на нейното място по него - същите числа, които показва профилът под картата и които излизат в изнесения .gpx на самия маршрут (с един знак след запетаята). Ако профил няма (услугата за височини не отговаря или си офлайн, а и файловете нямат височина), се взема височината, записана в самия трак, а ако и тя липсва - по права между височините на двете измерени точки, както преди. Измерените положения не се пипат: те си остават с височината от GPS. Ако някоя от двете точки е встрани от маршрута (над 20 м) или маршрутът е празен, двете се свързват с права отсечка в същия трак и тя се брои в изминатото.
Цветът на дупката. Попълненото при дупка в GPS - и следата по маршрута, и правата отсечка до точка встрани - се чертае кехлибарено (--app-walk-gap) на пунктир, ясно различно от зелената измерена следа и от цветовете на частите. За дупка се брои всеки участък между две поредни положения от GPS, по-дълъг от 40 м по следата (при нормално движение поредните положения са на няколко метра едно от друго). Цветът е навсякъде, където се чертае изминатото: на живата карта при следене, върху запазената картина, на изминатия трак в "Тракове-източници", в частта на записа "изминат <дата>", отворен като маршрут, и в "Картина" (.png) на такъв маршрут. Това е само цвят: няма отделен ред в числата и значка в списъка с части, а в .gpx файла линията си остава една, без цвят. Грешка на GPS, дошла докато страницата е скрита или докато чака сигнал след връщане, не спира следенето. Ограничение за дължината на паузата няма.
Най-долу са "Запазена картина" и "Записани маршрути", а в дъното на страницата - "Версия 1.8.0 · 4 октомври 2026", копче "Тъмна тема" / "Светла тема" и бележка, че данните живеят само в този браузър.
Части в маршрута (вляво, свит панел) - от какво е сглобен маршрутът досега. Заглавието носи брояча и копчето "Изтрий".
Редовете с дупки (под частите) - къде маршрутът е прекъснат.
GAP_BRIDGE_MAX_M в js/core.js). По-дългата не се свързва: остава отворена, а долу излиза "Дупката е 720 м - над 500 м не се свързва направо. Затвори я с чертаене в "Части в маршрута"."; чертаенето е с "Затвори с чертаене" в този ред. Копчето "Свържи направо" в реда си остава без ограничение - то е изричен избор за точно тази дупка. Затворените сами дупки пазят тънката прекъсната линия и знак нямат.Точки (вляво, свит панел) - чертаните точки на маршрута.
Тракове-източници (вдясно, свит панел) - какво е заредено. Заглавието носи брояча и копчетата "Добави тракове" и "Нов".
Дубликати (вдясно, свит панел) - участъци, които вървят по вече приетото трасе.
Запазена картина - картината за този маршрут без връзка.
Записани маршрути (най-долу) - библиотеката в браузъра.
Прозорецът "Импорт на GPX" - отваря се от "Добави тракове" и от "Добави .gpx или колекция" на празния екран на картата (от 1.5 - едно копче вместо двете "Зареди колекция" и "Добави .gpx", които отваряха един и същ прозорец).
Прозорецът "Картина за офлайн" - отваря се от "Картина" или "Направи картина".
marshrut-<име>-<дата>.png. При "Топо" отметката "Надписи" е забранена, защото топографската карта вече носи имената си.Прозорецът "Име на файла" (при "Запази" - "Запис на маршрута", с отметките за изглаждане над името; виж "Запази и записани маршрути") - отваря се от "Изнеси .gpx" в реда на следенето и от "Свали изминатото като .gpx" в панела "Следене" и в реда върху картата след спиране (изминатото), от "Изнеси .gpx" в лентата и под профила и от "GPX" в реда на записан маршрут (маршрутът), и от "Запази".
izminat-<име на следения маршрут>-<дд.мм.гггг>, за маршрута и за "Запази" - с името на маршрута. Enter или "Свали" (при "Запази" - "Запази") потвърждава, Escape или "Отказ" затваря, без да сваля и записва нищо.\ / : * ? " < > |), стават тире.Прозорецът "Точка" - отваря се от копчето "Точка" при следене.
Прозорецът "Запис на изминатото" - излиза след "Стоп", когато има записан път.
<име>.gpx по същия избор, със спирките; "Отказ" и Escape оставят записа суров.Прозорецът "Излишни пръстени (n)" - излиза сам след зареждане, ако има излишни пръстени, които не са задържани, или от реда "Излишни пръстени: n · Прегледай" под картата.
Менюто на разклонение и на участък - малко меню до пръстена или до мястото на клика (виж "Меню на разклонението и на участъка" по-горе). След "Изтрий разклонението" долу излиза "Разклонението е изтрито - тракът се чете цял. "Отмени" го връща.", след "Изтрий участъка" - "Участъкът е изтрит (2,4 км) - няма го на картата, в трака и в маршрута. "Отмени" го връща."
Менюто при докосване на точка на картата.
Лентата "Изрязване" - стои долу на картата, докато си в режим "Изрязване".
Подсказката под курсора (на компютър) казва какво има под мишката и какво прави кликът.
Полето за търсене на адрес - под него се спуска списък с намерените места.
Съобщенията долу на картата - един ред, който изчезва сам (около 3 секунди, грешките - около 6). Потвърждават какво е станало и как се връща.
Предупрежденията стоят по-дълго (около 6-8 секунди) и са в червено.
Празният екран на картата се показва само когато няма нито тракове, нито части: "Тук ще се появи маршрутът" с "Няма заредени тракове. Зареди колекция от файл или добави отделни .gpx." и (от 1.5) едно копче "Добави .gpx или колекция".
Траковете, маршрутите и картините се пазят само в браузъра на устройството (IndexedDB). С колекцията се пазят и изтритите участъци на всеки трак (dels), изтритите разклонения (dropJ) и задържаните излишни пръстени (keptJ) - и в изнесената колекция. Няма сървър, вход и обща база. За да прехвърлиш работата на друго устройство, натисни "Изнеси колекцията" и зареди файла там с "Зареди колекция". Изтриването на данните на браузъра трие и колекцията, затова я изнасяй от време на време.
Сайтът се хоства от GitHub Pages: https://cepreu5.github.io/cx-tracks/. Следенето по GPS иска защитена връзка (https), затова работи от този адрес.
Локално няма какво да се инсталира и да се сглобява. Може да се отвори index.html направо от диска, но за да работят всички части (особено запазването в браузъра и офлайн обвивката), е по-добре през малък локален сървър:
python3 -m http.server 8000
# после отвори http://localhost:8000/
Версията стои в дъното на страницата ("Версия 1.8.0 · 4 октомври 2026") и се пише само на едно място - js/version.js. Същият файл дава името на офлайн кеша в sw.js (gpxk-v31-1.8.0), така че страницата и кешът не могат да се разминат. При всяка промяна, която стига до потребителя, се вдига GPXK_VERSION (и датата GPXK_DATE); браузърът тогава сваля новите файлове и трие стария кеш. Поправка без нова версия вдига само номера пред нея в GPXK_CACHE (gpxk-v28-1.2.0 → gpxk-v29-1.2.0), иначе браузърите пазят старата страница.
Чист HTML, CSS и JavaScript, без външни библиотеки и без стъпка за сглобяване. Скриптовете са класически (не модули), за да вървят и от диска.
index.html страницата
js/version.js версията (дъното на страницата и името на кеша)
js/i18n.js езикът: речникът bg/en по ключове, смяната и автоматичният превод
css/app.css темата (светла и тъмна) и оформлението
js/util.js формат на числата, геометрия, съхранение
js/map.js картата: плочки, местене, приближаване, завъртане, чертане
js/gpx.js четене и писане на GPX
js/core.js ядрото: дубликати, изрязване, части, геометрия на маршрута
js/elev.js височини, изкачване, наклон
js/snapshot.js картината за офлайн
js/follow.js следене по GPS
js/app.js интерфейсът
assets/splash.jpg снимката на началния екран (в офлайн кеша)
sw.js офлайн обвивка (кеш на файловете на приложението)
tests/ проверки на ядрото (node tests/core.test.js), в браузъра (node tests/browser.cjs) и тестови .gpx
„Mountain Biking – Gooseberry Mesa and Hurricane Cliffs“, автор BLM Utah (Bureau of Land Management), Wikimedia Commons, обществено достояние (public domain). Прекомпресирана до 1280×914, около 190 KB, и пазена в assets/splash.jpg - приложението не я тегли отвън.
| За какво | Услуга |
|---|---|
| Сателитни снимки | Esri World Imagery |
| Имена и пътища върху снимките | Esri Reference (World_Boundaries_and_Places, World_Transportation) |
| Топографска карта | OpenTopoMap |
| Търсене на адрес | Nominatim (OpenStreetMap) |
| Надморска височина | Open-Meteo Elevation, резерва OpenTopoData (SRTM 30 м) |
Всички са безплатни и без ключ. Ако някоя не отговори, приложението казва това и продължава да работи.
skipsoverrides.gpx, картината и следенето, но тя не е част: няма номер и не се брои в "Части", а в списъка стои като тънък ред "обща отсечка · X км · минава се веднъж". Където такъв дубликат няма, дупката си остава дупка с "Затвори с чертаене" / "Свържи направо".forks) и се връща, щом отново избереш стария клон. Изборът влиза в "Отмени", в запазеното състояние и в изнесената колекция, затова след презареждане маршрутът минава по същия клон. Където клон за избор няма, дупката си остава с "Затвори с чертаене" / "Свържи направо". От 1.4.2 и вторият пръстен на "близалката" (далечният край на общата отсечка, където обиколката тръгва и се връща) е пълноценно разклонение: участък, който опира с двата си края в една и съща точка, е там два клона - излизащата и връщащата се отсечка, така че изборът на едната не е избор и на другата. Маршрутът се разпознава и там (пръстенът е плътен), менюто предлага само обиколката в обратна посока, а изборът ѝ я обръща и пази частите след нея - не изхвърля продължението. Накъде тръгва маршрутът се сравнява на едно и също разстояние по маршрута и по клоновете (до 80 м, но не повече от половината на най-късия клон и не под 15 м), така че и клон, по-къс от 80 м, се разпознава. От 1.4.3 и там, където един трак минава през себе си, стои пръстен: пресичането на две негови отсечки е разклонение с четири клона, менюто на пръстена предлага двете посоки на другата отсечка ("по посоката на записа" / "срещу посоката на записа"), а изборът продължава маршрута натам и влиза в "Отмени". Прави се само истинско кръстовище: двете отсечки се режат в точката под поне 30° и са в различни приети участъци - плиткото застъпване на GPS шума и пресичането вътре в един участък не дават пръстен. Пресичанията между два различни трака остават както бяха ("без избор", предлагат се за изтриване).<име>.gpx и записва маршрута в "Записани маршрути" под същото име. Текущият маршрут вече е в списъка, затова се преименува той - втори запис не се прави. Вдига и датата на промяна, а списъкът "Записани маршрути" е подреден точно по нея, затова записаният отива най-горе. Съобщението казва и двете: "Свален Моят маршрут.gpx · записан в „Записани маршрути“ като „Моят маршрут“". Празен маршрут се записва, но .gpx не слиза (съобщението го казва). "Отказ" не прави нищо..png): сглобява се в браузъра от плочките, с начало и край, посока, дължина, изкачване, наклон, скала, дата и легенда. Пази се заедно с географския си обхват. При обхват "около маршрута" с числа и легенда панелът стои горе вляво, а маршрутът се събира в свободното място под него (и над скалата) и се центрира там - нищо от линията не ляга под панела; дълга и тясна следа се смалява, колкото е нужно, но не се мести вдясно от панела. "Видимото на картата" пази точно кадъра, който се вижда. Връзките "свързано направо" се чертаят и тук - кехлибарено на пунктир, без надпис..png, в списъка "Точки" (там се преименуват и махат, както точките от "Добавяне"), в изнесения .gpx като <wpt> (спирки) и в записа на изминатото в "Записани маршрути". Пазят се и в незавършеното следене.dropJ), затова пръстенът не се връща при ново пресмятане, след презареждане и в изнесената и заредена колекция.dels); част от друг маршрут, която минава през тях, се маркира като невалидна.keptJ, затова списъкът не изскача пак сам при следващо зареждане). Прозорецът се затваря само с копче; Escape не маха нищо. Ако при зареждането е отворен прозорецът "Импорт на GPX", списъкът излиза, щом той се затвори. Докато има излишни пръстени, най-горе под картата стои ред "Излишни пръстени: 3 · Прегледай", който отваря същия списък.js/i18n.js, плюс автоматичен превод на още езици с вградения в браузъра преводач. Копчето с глобус и кода на езика ("БГ" / "EN", при превод - кодът му, напр. "DE") е в лентата, до "Имена"; на тесен екран лентата се пренася на нов ред и копчето пак е на екрана. Подробно - в "Език" по-долу.