В помощь мобильному разработчику

Использование карт в Xamarin Forms

Олександр Будяков

Введение

Каждый разработчик при разработке сталкивается с разными трудностями, не исключение и работа с картами. В этой серии статьей я кратко расскажу о своем опыте, граблях на которые наступал, ну и решение собственно поставленной задачи. В Xamarin Forms имеется готовый контролл  Map Control который хорошо работает на каждой из платформ. Более подробную информацию вы сможете найти по ссылке выше. Но если говорить о преимуществах и недостатках, то окажется что плюсов меньше чем минусов, так как зачастую разработчикам приходится на карту помещать свои маркеры, полигоны и линии а также перемещать их и т.д.

Что же делать в таком случае? У нас есть как минимум два решения в данной ситуации:

  • Кастомизировать готовый контролл своими руками (что есть не очень приятно, долго и зачастую проблематично)
  • Ищем готовое решение

Что касается первого варианта, то тут есть как и плюсы так и минусы, ведь сделать кастомизацию для каждой из платформ не простое задания и к тому же дольше, нежели использовать уже готовый контролл. Что касается плюсов — так это то, что код можно сделать более чистым и данная кастомизация не будет “тяжелой” для системы.

Если же Ваше задание не выходит за рамки возможностей стандартного контролла, то  советую использовать именно его, ведь нет смысла нагружать систему контролом с “большим грузом”.

Второй вариант предусматривает использование готового решения, сделанного другими разработчиками. Одним из хороших примером является контролл Xamarin.Forms.GoogleMaps от разработчика amay077. Постараемся этот контрол разобрать более детально в нескольких статьях.

 

Обзор

Если сравнивать Xamarin.Forms.GoogleMaps со стандартным Map Control, то можно увидеть существенную разницу между контроллами.

Давайте более детально рассмотрим это в таблице:

           Feature X.F.Maps X.F.GoogleMaps
             Map types       Yes              Yes
            Map events          —              Yes
Pannning with animation       Yes              Yes
       Pannning directly          —              Yes
                  Pins       Yes              Yes
            Custom Pins         —              Yes
         Pin drag & drop         —              Yes
              Polygons         —              Yes
                  Lines         —              Yes
                 Circles         —              Yes
        Custom map tiles         —              Yes

Мы видим что стандартные карты которые доступны для Xamarin Forms они достаточно примитивные, что не скажешь о Xamarin.Forms.GoogleMaps. Большой плюс еще то, что данные карты доступны для всех платформ. Для подключения данного контролла необходимо добавить следующий nuget пакет https://www.nuget.org/packages/Xamarin.Forms.GoogleMaps. Использование данного контролла не отличается от использования стандартного Map Control.

Карта Google

Пример внешнего вида

Завершение

Данный контролл доступен в открытом исходном коде на GitHub Xamarin.Forms.GoogleMaps и каждый может посмотреть реализацию и пример использования. Что касается примера, то тут нужно немножко разобраться, так как Вам понадобится ряд действий, в том числе и получения API ключа для GoogleMaps, добавления карты на страницу, а так же инициализация ключей на каждой из платформ. Это мы более подробно разберем в следующей статьи.

Олександр Будяков
Олександр Будяков

.NET Developer. Работаю с Xamarin с 2013 года.

xamarin forms
GPU перерисовка

Написать ответ