Closed ancrane closed 5 years ago
Только не через url-параметры, через параметры закодированные в хеше (часть после #), как и всё остальное.
Сделать, конечно, можно, но я пока не понимаю, что улучшится по сравнению со сценарием:
Внятного автообновления отображения при изменении содержимого файла (то, что хотел @slazav) мы так всё равно не полуичим, это более масштабная задача.
Да, я как раз такое хотел,. https://nakarte.tk?url=mysite.com/trek.xml Насчет масштабности задачи я, видимо, не очень понимаю, как все устроено. Мое наивное понимание примерно такое:
С другой стороны, для простых задач меня вполне устраивает то, как сейчас все устроено. А для сложных (например, автоматически генерить ссылку на nakarte, либо с со ссылкой на свой url с треком, либо с хэшем) я пока не добрался - хотя и собираюсь когда-нибудь.
- Открываем сайт.
- Загружаем трек с диска / по ссылке
- Получаем ссылку на трек, расшариваем её.
Обнаружил недавно, что ссылка на трек, созданная таким образом, через какое-то время перестаёт показывать сам трек, а лишь только область на карте вокруг него. Я так понимаю, сайт NaKarte не сохраняет треки. Если же трек лежал бы на стороннем ресурсе, то ссылка была бы постоянной.
Также непонятно, в чём причина невозможности автообновления: при каждом вызове сайт просто должен заново обращаться по указанному URL и считывать оттуда файл трека. В чём тут глобальность?
Польза от подобной возможности была бы в том, что пользователям можно было бы очень удобно опубликовывать (визуализировать) треки, заливая их на свои сервера и создавая обычную ссылку для вставки на форумах, в почте и т.п. По такой ссылке адресат мог бы легко увидеть сам трек на карте.
Как есть сейчас: Треки передаются в виде кода в значении параметра nktl в хеше. По сути это значение почти что ссылка на трек, т.е. при ссылке https://nakarte.tk/#m=13/54.86268/37.15267&l=O&nktl=1nVLQk_zsNlYXtZGnJgE8g на сервер уходит запрос https://tracks.nakarte.tk/track/1nVLQk_zsNlYXtZGnJgE8g. После загрузки трека параметр nktl из текущего адреса страницы удаляется. В принципе, можно было бы добавить ещё какой-нибудь параметр и передавать в нём ссылки на сторонние сайты. И так же надо будет удалять ссылку на этот трек из хеша.
Проблема со сценарием @slazav: После обновления содержимого файла надо будет очень внятно говорить пользователям, что надо именно заново открыть ссылку, а не просто обновить страницу в браузере (т.к. в хеше ссылки уже нет и при перезагрузке достанется версия из localStorage). Это не стандартно для веба и поэтому, подозреваю, будет много недопониманий, почему "ничего не обновилось", к тому же ещё и старая версия трека будет оставаться в списке, причём с тем же именем, что и новая. Поэтому я и говорю, что не вижу внятного способа, т.е. такого, чтобы пользователям было понятно.
Почему надо удалять ссылки из хеша (и вообще из текущего адреса):
Решением могло бы быть введение новой сущности "неизменяемый трек", т.е. отмена п.2, но мне это делать не хочется, причём именно с точки зрения придумывания интерфейса.
@ancrane, если треки перестают грузиться, то это страшный баг, дайте пожалуйста примеры таких неработающих ссылок. Сайт как раз хранит треки и пропадать они не должны.
Польза от подобной возможности была бы в том, что пользователям можно было бы очень удобно опубликовывать (визуализировать) треки, заливая их на свои сервера и создавая обычную ссылку для вставки на форумах, в почте и т.п. По такой ссылке адресат мог бы легко увидеть сам трек на карте.
Если задачи автообновления нет, то в принципе и сейчас вроде неплохо (как в сценарии из первого комента), всё равно перед публикацией нужно выбрать слой и область карты и зум, а для этого всё равно надо открывать сайт.
А в чем url отличается о хэша? И там и там надо получить информацию, загрузить трек и удалить параметр из url. И там и там трек потом можно потом редактировать. А откуда он изначально взялся - не важно.
Я про это же и пишу -- добавить можно, непонятно зачем
Посмотрел внимательнее, исчезновение трека из ссылки вызвано некорректной передачей ссылки пользователем.
Расширю вопрос @slazav: а каков алгоритм создания параметра nktl в хэше? Как я понимаю, "короткую" ссылку может сгенерировать лишь сайт NaKarte. То есть пользователю в любом случае нужно заходить сюда и открывать тут свой трек... А если передавать URL, то этого делать не потребуется. Что касается других необходимых параметров отображения трека, по почему их тоже нельзя передать по ссылке? У каждого слоя и каждого зума же есть свой id, область карты характеризуется координатами центра...
Задача - не делать руками в интерфейсе, а делать ссылку скриптом. При загрузке она будет загружать актуальный файл, что потом с ним будет делать пользователь - не важно. Всегда можно будет повторить загрузку исходной ссылки, если надо.
Но, действительно, через url не передашь центровку, масштаб, слои карты и т.п., это, и правда, кажется аргументом за то, что такая опция будет не слишком полезна. Так что, видимо, все равно в скрипте придется учиться делать правильные хэши, вместо того, чтобы передавать url.
Еще, видимо, у нас разные методы работы: я вообще не забочусь о localStorage (пока его нельзя сохранять в файл, читать из файла и т.п. - мне он не интересен), мне важнее источники: этот трек прочитать оттуда, этот отсюда, потом что-то поредактировать и результат сохранить куда-то. Когда я открываю nakarte я всегда начинаю с удаления всего мусора, который остался с прошлого раза.
Но, действительно, через url не передашь центровку, масштаб, слои карты и т.п., это, и правда, кажется аргументом за то, что такая опция будет не слишком полезна. Так что, видимо, все равно в скрипте придется учиться делать правильные хэши, вместо того, чтобы передавать url.
Почему же не передашь? Для передачи этих данных надо объявить специальные параметры и правила их задания.
для расшаривания ссылки на nakarte с треком всё равно надо отцентровать и зазумить карту, выбрать слои -- это всё равно надо делать руками в интерфейсе, заодно можно и трек загрузить через контрол и сгенерировать "короткую" ссылку.
Что касается других необходимых параметров отображения трека, по почему их тоже нельзя передать по ссылке? У каждого слоя и каждого зума же есть свой id, область карты характеризуется координатами центра...
Я всё ещё не понимаю, для чего это нужно: если делать ссылку руками, то не нужно. Или это для какого-то автоматического генерирования?
Про создание коротких ссылок: их может генерировать кто угодно, но сейчас генерирует только nakarte. Если интересно, то примерно так:
Еще, видимо, у нас разные методы работы: я вообще не забочусь о localStorage
А о нём и не надо заботиться :) Он в первую очередь используется чтобы не потерять треки при случайной перезагрузке или закрытии страницы.
Я всё ещё не понимаю, для чего это нужно: если делать ссылку руками, то не нужно. Или это для какого-то автоматического генерирования?
Да, имеется желание делать такое автоматическое генерирование для своего проекта.
Про создание коротких ссылок: их может генерировать кто угодно, но сейчас генерирует только nakarte. Если интересно, то примерно так:
- Tрек, точки и настройки отображения сериализуются в протобуф
- Полученные байты кодируются в base64.
- Считаем md5 от полученной строки, берём его двоичное представление и кодируем в web-safe base64.
- Загружаем строку из п.2 на сервер
- Показываем пользователю ссылку, в которой nktl= строке из п.3
В целом ясно. Если понадобится, можно ли будет отдельно обратиться за примером реализации подобного алгоритма?
В общем, я подумаю, и возможно всё-таки добавлю. Вроде выяснили, что никто не ожидает автообновления, но нужна автогенерация.
Вспомнил ещё один аргумент против внешних ссылок -- треки по "коротким" ссылкам будут рабочими пока жив проект nakarte. A по внешним файлы имеют свойство исчезать.
Про воспроизведение алгоритма -- не уверен, что это хорошая идея, может лучше маленький сервис для этого написать. В любом случае всё есть в коде
Частично сделал, будет примерно так, если есть идеи, комментируйте
Ключи словаря трека:
При наличии ключа u
ключи p
и t
игнорируются. Т.е. в описании трека должен быть либо url, либо данные.
Описание точек: список из словарей, ключи:
Описание треков: список сегментов. Каждый сегмент -- список точек. Каждая точка -- список из двух элементов [широта, долгота].
В ссылке могут быть все параметры вместе, а так же nktk и nktl. Треки можно загрузить как при открытии страницы по ссылке, так и вставив ссылку в поле ввода над списком треков.
Пример описания треков для параметра trk:
[
{
n: "Track name",
p: [{n: 'Point1', lt: 24.56, ln: 34.56}],
t: [[[56.24, 45.67], [57.24, 46.67]]]
},
{
n: "Another track",
c: 3,
v: false,
m: true,
u: 'https://www.strava.com/activities/1989612737'
}
]
Дополнительная фича: если в ссылке нет параметра m
(позиция карты и зум), то позиция и зум будут установлены так, чтобы все загруженные треки и точки помещались на экране.
- Простой способ сделать одну точку: pt=LAT/LON/NAME. Имя опционально, если не указано, то будет "Point". Имя трека такое же, как имя точки. Цвет назначается автоматически, показ трека включён.
То есть это сделает возможным поставить точку по координатам #72, хотя бы без интерфейса.
Это немного geeky-way, но да. Я надеюсь, что #72 я сделаю следующей.
Это и #157 вполне закрывает...
- Простой способ загрузить трек: параметр url, значение -- заурленкоженный URL. URL может быть на файл, включая zip или на сервис типа gpsies или strava. Можно передать несколько заурлэнкоженных URL-ов, соединённых прямым слешем. Цвет трека назначается автоматически, показ трека включён, отметки расстояния выключены.
Прошу прощения за возобновление вопроса, только сейчас добрался, чтобы посмотреть, как это работает. И ничего не понял( Я ввожу в браузере запрос с передаваемым хеш-параметром url в urlencoded виде: https://nakarte.me/#url=http%3A%2F%2Fvelotrex.ru%2Ffiles%2F1545821256_5c235c4824f4b.xml Но ничего не происходит, трек в nakarte.me не загружается. Что я делаю не так? Нельзя ли привести пример полного запроса для загрузки трека на основе URL?
@ancrane, да параметры немного поменялись. Объявление о релизе: http://about.nakarte.me/2018/12/movescount-gpslib.html Документация: https://docs.nakarte.me/hashParams.html
Спасибо! Заработало)
Добрый день!
Обнаружил такой глюк: проставка километража вдоль трека сбивается несколько раз, начинается набор заново с нуля. Вот здесь это проявляется: https://nakarte.me/#m=12/52.14476/37.15250&l=O&nktl=bOpEGVs0-CjAVwFBFEPNdw Подозреваю, что дело в многосегментном треке. Но общий километраж же считается правильно!
Воскресенье, 30 декабря 2018, 18:11 +02:00 от Sergej Orlov notifications@github.com:
@ancrane , да параметры немного поменялись. Объявление о релизе: http://about.nakarte.me/2018/12/movescount-gpslib.html Доскументация: https://docs.nakarte.me/hashParams.html — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .
-- Антон Журавлёв
Километраж для каждого сегмента отдельно проставляется, так что тут все by design.
Ну тогда как минимум нелогично, что общий километраж считается суммарный, а на треке возникают обнуления. Простому юзверю невдомёк, что это из-за того, что у него трек из нескольких сегментов состоит. Ему это видится как баг. Предлагаю всё же это поправить.
Вторник, 30 июля 2019, 21:43 +02:00 от Nikolay Korotkiy notifications@github.com:
Километраж для каждого сегмента отдельно проставляется, так что тут все by design. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .
-- Антон Журавлёв
Ну тогда как минимум нелогично, что общий километраж считается суммарный, а на треке возникают обнуления.
На то он и "суммарный". А трек на сегменты например часто намеренно разбиваю, чтобы видеть километровые отметки отдельно для каждого сегмента. Как раз таки логично.
Простому юзверю невдомёк, что это из-за того, что у него трек из нескольких сегментов состоит. Ему это видится как баг. Предлагаю всё же это поправить.
А смысл ориентироваться на условного "простого юзверя"? Он может просто не использовать сегменты.
Если честно, не вижу задач, когда может понадобиться принудительная разбивка на сегменты с отображением километража каждого сегмента... В этом случае проще сделать несколько треков, ИМХО. И каждый из них настраивать уже по-своему... А вот когда на одном треке внезапно обнуляется километраж - это по меньшей мере странно. Тогда уж надо предусмотреть возможность настраивания отображения таких треков посегментно, если продолжать логику.
Вторник, 30 июля 2019, 22:17 +02:00 от Nikolay Korotkiy notifications@github.com:
Ну тогда как минимум нелогично, что общий километраж считается суммарный, а на треке возникают обнуления. На то он и "суммарный". А трек на сегменты например часто намеренно разбиваю, чтобы видеть километровые отметки отдельно для каждого сегмента. Как раз таки логично. Простому юзверю невдомёк, что это из-за того, что у него трек из нескольких сегментов состоит. Ему это видится как баг. Предлагаю всё же это поправить. А смысл ориентироваться на условного "простого юзверя"? Он может просто не использовать сегменты. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .
-- Антон Журавлёв
И, раз уж зашёл разговор: проверил исходный трек ДО загрузки на nakarte.me - он был моносегментным. Т.е. сегменты по какой-то причине возникли на Nakarte.me
Вот ссылка на исходный трек: http://velotrex.ru/get_gpx.php?file=1563822553_5d3609d97bf90
Вторник, 30 июля 2019, 22:24 +02:00 от Антон Журавлёв cybercrane@mail.ru:
Если честно, не вижу задач, когда может понадобиться принудительная разбивка на сегменты с отображением километража каждого сегмента... В этом случае проще сделать несколько треков, ИМХО. И каждый из них настраивать уже по-своему... А вот когда на одном треке внезапно обнуляется километраж - это по меньшей мере странно. Тогда уж надо предусмотреть возможность настраивания отображения таких треков посегментно, если продолжать логику.
Вторник, 30 июля 2019, 22:17 +02:00 от Nikolay Korotkiy < notifications@github.com >:
Ну тогда как минимум нелогично, что общий километраж считается суммарный, а на треке возникают обнуления. На то он и "суммарный". А трек на сегменты например часто намеренно разбиваю, чтобы видеть километровые отметки отдельно для каждого сегмента. Как раз таки логично. Простому юзверю невдомёк, что это из-за того, что у него трек из нескольких сегментов состоит. Ему это видится как баг. Предлагаю всё же это поправить. А смысл ориентироваться на условного "простого юзверя"? Он может просто не использовать сегменты. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .
-- Антон Журавлёв
-- Антон Журавлёв
Если честно, не вижу задач, когда может понадобиться принудительная разбивка на сегменты с отображением километража каждого сегмента... В этом случае проще сделать несколько треков, ИМХО. И каждый из них настраивать уже по-своему...
Например есть у нас трек похода дней на 10, я всегда разбиваю каждый день - отдельный сегмент, делать 10 треков вместо этого не логично (все дни - суть одно мероприятие) и не удобно (нельзя загрузить одним файлом), к тому же тогда общий километраж вообще не будет виден. С другой стороны километровые маркеры интересуют в большей степени для каждого дня с нуля, а не глобальные на весь поход.
Вот ссылка на исходный трек: http://velotrex.ru/get_gpx.php?file=1563822553_5d3609d97bf90
Проверил, у меня все корректно оборажается, один сегмент, маркеры не обнуляются.
Вот это и странно - у меня тоже один сегмент... Видимо, тот первый трек был изначально мультисегментным, а потом уже преобразован в односегментный, после заливки на Nakarte.me.
Ладно, вроде бы разобрались, спасибо)
Вторник, 30 июля 2019, 22:39 +02:00 от Nikolay Korotkiy notifications@github.com:
Вот ссылка на исходный трек: http://velotrex.ru/get_gpx.php?file=1563822553_5d3609d97bf90 Проверил, у меня все корректно оборажается, один сегмент, маркеры не обнуляются. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .
-- Антон Журавлёв
Можно, например, отображать оба числа как segment (total)
. E.g. 11км (120км)
делать 10 треков вместо этого не логично (все дни - суть одно мероприятие) и не удобно (нельзя загрузить одним файлом)
Если верить схеме GPX (https://www.topografix.com/gpx/1/1/gpx.xsd), то вполне логично.
Узел trkseg:
A Track Segment holds a list of Track Points which are logically connected in order. To represent a single GPS track where GPS reception was lost, or the GPS receiver was turned off, start a new Track Segment for each continuous span of track data.
Узел trk:
A list of tracks.
См. также #248.
Я предлагаю визуально как-то размечать сегменты, как на карте, так и на профиле.
Про сегменты у меня есть две явно разные задачи:
Мне было бы удобно, если бы километраж по сегментам считался отдельно, как сейчас, но была бы возможность объединить все сегменты трека (как отдельный пункт меню). В большинстве случаев реальный трек удобно склеить в один сегмент.
Если сегментов много, то склеивать их вручную долго.
Just in case, I use gpxtools for that:
$ gpxcat --help
Usage: gpxcat [OPTION].. [FILE]
Concat the track segments in a GPX-file.
-?, --help display this help and exit
--version display version and exit
-d, --distance=METRES concat only if both segments are less than METRES apart
Concatenate the track segments in a GPX-file and display the resulting GPX-file on standard output.
Ну, локально я и сам умею. И фильтровать лишние точки тоже. Хочется разделять треки "для хранения", с высотами, временами и т.п. и "для показа" в nakarte.me. Делать и хранить у себя локально еще одну версию "для показа" не очень хочется.
Предлагаю реализовать возможность передачи URL сайту через параметры, передаваемые при вызове сайта, например, методом GET: https://nakarte.tk?url=mysite.com/trek.xml