Кастомная карта с кастомными объектами с помощью Jetpack Compose
Всем здравствуйте. Имеется следующая задача: реализовать карту столов для ресторана. Приложение для Андроид, Jetpack Compose. Сразу скажу, что предпринималось: расстановка с помощью GridLayout, вычисление расположения и расстановка с помощью формул для разных экранов... Но все равно это не то (рис. 1)
2 года назад публиковался похожий запрос, но он не получил ответа. В целом, подобное требуется и мне (рис. 2)
После чего возникла мысль использовать механизм создания обычной карты (как Яндекс Map или Google Map), сделать похожее, но собственноручно. Почему карта? Хотелось бы иметь скролл, подробный скроллу карты + маркеры для интерактива с пользователем. Никакой информации по этому поводу я не нашел, можете подсказать хотя бы материалы, направления и т.д для этой идеи?
Ответы (1 шт):
как бывший разработчик карт по типу яндекс и гугла советую туда не лезть.
если же надумаете, то вот в кратце:
сначала вам надо разработать векторные данные. нарисовать эти данные, заполнить их инфой (метаданными).
рисуются они в специальных картографический программах.
затем вам надо развернуть свой специальный картографический сервер и БД к нему.
из популярных (бесплатных) - MapServer или GeoServer
есть еще ArcGisServer, но лицензия стоит дорого (вроде от 10к$). за взломанные ничего сказать не могу.
с помощью этих серверов вы сможете превратить свои данные в карту.
карта может быть двух видов:
WMS (тайловая) - просто картинка. с ней взаимодействовать нельзя.
WFS (векторная) - карта, на которую уже можно тыкнуть и увидеть какую-то информацию.
результат этой работы получается в API.
далее, вам надо как-то подключить это API к вебу. для этого существую следующие библиотеки:
Leaflet, MapBox, Openlayers
в мое время у них не было библиотек под Андроид. только для вэба. (сейчас не знаю как дела обстоят)
поэтому дальше, когда у меня готовый локальный вэб проект, я его подключал в WebView, и писал дополнительные JS-скрипты, чтобы клики с WebVview на нужные мне элементы обрабатывались уже в коде Андроид-приложения.

