на яндекс?
Мне нужно бует добавлять в приложение Яндекс Карты. Там уже есть гугл.
Хотел бы посмотреть на такие приложения.
В чем проблема 2 карты добавить?
самый легкий способ это два фрагмента(яндекс и гугл) с общим интерфейсом общения с картой
ну, как минимум, в том, что ViewModelы уже сильно заточены под гугл
вот о таком и подумываю
не вижу вообще никакой проблемы использовать его под другую карту. Как он вообще может влиять, если это всего лишь слой архитектуры
самое главное не сделать в одной разметке допустим на одной активности два контейнера и гугл и яндекс и в зависимости какую карту отображать- скрывать хайдить visible той или иной контейнет- так точно делать не надо
ну, например, функция drawMarker: LiveData<Marker> экспоузит объект, заточенный под гугл.
ну сделайте 2 фрагмента и 1 viewModel, и отображайте разные карты и т.д
перегружайте методы, в любом случае будет проверка какой тип карты используется яндекс или гугл или осм, потому что маркеры(полигоны, какието оверлеи) юзаються под конкретный тип карт
вот да. пока так и подумываю. просто изначально VM полностью подстраивалась под объекты Google Maps. Я не знаю, на сколько это косяк моей архитектуры, но Google Maps – это же целый фрэймворк, а не просто вьюшка, поэтому все вью модельки дастаточно зависимы от него.
угу, понимаю, спасибо. Я вот только ни одного приложения пока такого не видел в маркете)
смотрите такие приложения сложно увидеть потому что переключение карт обычно делает бекенд, а приложенько обычно юзают ту или иную карту в зависимости от бекенда, даже если вы найжете апу такую она вам ничего не даст, тока если исходники на гите и то врядле.
не понял, что именно делает бэк? даёт ссылки на тайлы?
Я делал такие приложения. В чем проблема делаешь 2 фрагмента у одного гугл у второго яндекс. В настройках запоминаешь и грузишь то что надо тебе. Крутишь вертишь как угодно
выбор яндекса или гугла не юзер в приложение делает, а этот тип карты шлет бекенд, может у вас сам пользователь может выбирать тип карты это тоже вероятно
у меня там и маркеры, и полигоны, и кластеризация. т.е. в vm будут дублироваться все методы. например, нарисоватьМаркерДляГуглКарты() и нарисоватьМаркерДляЯндексКарты(). и так для вссех компонентов карты. Я вот больше думаю над тем, как это абстрагировать всё и т.д. У меня в принципе приложение очень завязано с картой.
пользователь выбирает
Там же по разному рисуется. Но ответ от сервера же одинаковый или тоже разный? Если разный, то ты сам должен понимать что надо разделять причем на старте.
Вы можете сделать модельки, который не зависят от конкретных карт (свой Marker, Polygon,..). И потом вьюшки уже будут маппить в нужные им модельки из либ
ответ от моего сервера всегда одинаковый. там объекты, которые надо нарисовать на карте. в нарисовать входит много всего: маркеры, кружки всякие около них, линии, кластеризация. меня немного смущает, что в VM надо будет дублировать каждый метод для яндекса. + ещё учитывать, (копировать списки) какие маркеры, линиии нарисованы и тд
думал о таком, да. тогда очень сильно расширится вьюшка. т.е. как будто во вьюшке будет много кода, который именно бизнес логика
Тут просто не будет
мне кажется, что тут будет и не сложно, просто добавится много ifoв и тд
копипаст будет в начальной версии 100%, потом подумайте что вынести в абстракцию , может какие то методы, там по любому будут when if никуда не дется от этого в начале
Почему? Делаешь через делегирование: interface Map { fun drawMarker(marker: MyMarker) ... } class GoogleMap(val googleMapView) : Map { override fun drawMarker(marker: MyMarker) { // Map MyMarker to GoogleMarker, draw } } `` И потом во вьюшке юзаешь нужную реализацию
Обсуждают сегодня