Кнопки карты, ссылка на вид и координаты
Кнопки вида карты: начальный вид, ссылка на текущий вид, местоположение, 2D/3D, подложка и масштаб. Внизу — масштабная линейка и координаты под курсором в трёх системах.
Возможности
- «Начальный вид» — вся сеть показанных фрагментов (если охват не известен — центр города).
- «Скопировать ссылку на этот вид карты» — короткая ссылка вида
…/s/7Kp2xQa: откроет карту в том же месте, с тем же масштабом, поворотом, наклоном, фрагментами и слоями. - «Моё местоположение» — карта переходит к вам, красная метка «Вы здесь» видна 5 секунд.
- «2D/3D» — переключение на 3D-вид (Cesium) и обратно, там же «Сеть под землёй».
- «Базовый слой» — подложка: MapTiler (OSM Bright), «Подробная карта улиц», MapTiler Planet v4 (по умолчанию), «Спутниковая карта», OpenStreetMap, 2GIS, Google Maps.
- Масштабная линейка слева внизу; координаты под курсором — в WGS84, местной системе (9998) или координатах десктопа, с копированием в нужном формате.
Как это работает
Адрес страницы помнит вид. При каждом сдвиге карты адрес в строке браузера меняется: #масштаб/широта/долгота[/поворот[/наклон]], а если фрагменты или слои отличаются от умолчаний — ещё &fr= (фрагменты диапазонами, 2-46,54) и &ly= (слои). Широта и долгота — с 5 знаками (около 1 м). Обновить страницу или добавить её в закладки — значит вернуться к тому же виду.
Короткая ссылка. Кнопка ссылки сохраняет вид на сервере (таблица tgid_share_link базы города) и копирует адрес …/s/<код> из 7 знаков без похожих символов (0/O, 1/l/I). Тот же вид даёт тот же код. Ссылка работает только в своём городе. Если сервер недоступен, копируется полный адрес с #….
Координаты. WGS84 считается в браузере. Местная система (SRID 9998) и координаты десктопа (x/y узлов, в сантиметрах) пересчитываются на сервере через PostGIS, когда курсор остановился на 0,25 с. Форматы копирования:
| Формат | Пример | Куда вставлять |
|---|---|---|
| Широта, долгота | 43.249132, 76.944852 |
Яндекс, Google, 2ГИС |
| Долгота широта | 76.944852 43.249132 |
ГИС, GeoJSON |
| Местная система X Y, м | 3 знака после запятой | десктоп, САПР |
| x y десктопа, см | 1 знак после запятой | поля координат узлов десктопа |
Что нужно для работы
- Подложки MapTiler — ключ
NUXT_PUBLIC_MAPTILER_KEYу веба; без него карта работает на OpenStreetMap. - «Моё местоположение» — только по защищённому адресу (https) и с разрешением браузера на геолокацию.
- Короткие ссылки — миграция
20261103_share_links.sqlв базе города (API применяет её сам).
Шаги
Колонка справа внизу: «Начальный вид» (домик), «Скопировать ссылку на этот вид карты», «Моё местоположение», «2D/3D», «Базовый слой» (подложка); ниже — «Приблизить» и «Отдалить».

Кнопка ссылки копирует короткую ссылку на текущий вид: место, масштаб, поворот, фрагменты и слои. Внизу появится «Ссылка на этот вид карты скопирована».

«Базовый слой» открывает список подложек; текущая отмечена галочкой.

Строка координат внизу показывает точку под курсором. Нажмите «WGS84», чтобы выбрать систему: WGS84, местная система (9998) или координаты десктопа. Кнопка справа (или клавиша C над картой) копирует координаты.

Примеры
Отправить коллеге место аварии. Приблизьте камеру 2КОК-13А, включите нужный фрагмент и нажмите кнопку ссылки. В чате окажется ссылка вида https://…/tgid/almaty/s/7Kp2xQa — по ней коллега увидит то же место, тот же масштаб и те же фрагменты.
Координаты для бригады. Наведите курсор на точку, нажмите C — в буфере 43.249132, 76.944852: вставляется в навигатор телефона как есть.
Если не получается
- «Ссылка не найдена — возможно, она из другого города. Откроется карта.» — ссылку сделали в другом городе или она повреждена.
- «Скопируйте ссылку из адресной строки: …» — браузер не дал доступ к буферу обмена.
- «Геолокация работает только в безопасном контексте (HTTPS или localhost)», «Доступ к геолокации запрещён…» — откройте сайт по https и разрешите геолокацию в настройках браузера.
- «Пересчёт недоступен» у местной системы — сервер не ответил; скопируйте координаты в WGS84.
Для администратора
- Подложки:
NUXT_PUBLIC_MAPTILER_KEY; VISICOM —NUXT_PUBLIC_VISICOM_TILES_URLи ключ. Центр и рамка города —NUXT_PUBLIC_MAP_CENTER,NUXT_PUBLIC_CITY_BBOX, фрагменты по умолчанию —NUXT_PUBLIC_DEFAULT_FRAGMENTS. - Короткие ссылки: не больше 500 новых в сутки от одного пользователя («Слишком много новых ссылок за сутки…»).
Для разработчика
- Веб:
components/MapControls.vue,components/CursorCoords.vue,composables/useMapPermalink.ts,utils/mapPermalink.ts(формат и пределы: масштаб ≤ 24, наклон ≤ 85, ≤ 200 фрагментов и слоев),utils/mapScaleControl.ts,composables/useBaseLayers.ts,pages/s/[code].vue. - API:
POST /api/v1/share-links,GET /api/v1/share-links/{code}—database/share_links.py;POST /api/v1/topology/convert-point— пересчёт координат. - Тесты:
tests/utils/mapPermalink.spec.ts,mapScaleControl.spec.ts,pointCrs.spec.ts; API —tests/test_share_links.py.
