Введение
Каждый разработчик при разработке сталкивается с разными трудностями, не исключение и работа с картами. В этой серии статьей я кратко расскажу о своем опыте, граблях на которые наступал, ну и решение собственно поставленной задачи. В 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.
Завершение
Данный контролл доступен в открытом исходном коде на GitHub Xamarin.Forms.GoogleMaps и каждый может посмотреть реализацию и пример использования. Что касается примера, то тут нужно немножко разобраться, так как Вам понадобится ряд действий, в том числе и получения API ключа для GoogleMaps, добавления карты на страницу, а так же инициализация ключей на каждой из платформ. Это мы более подробно разберем в следующей статьи.
Написать ответ