использование яндекс карт в своем приложении
«Яндекс» разрешил сторонним разработчикам добавлять офлайн-карты в свои приложения Статьи редакции
Компания выпустила обновлённый Yandex MapKit.
«Яндекс» представил обновлённую версию инструмента Yandex MapKit, с помощью которого сторонние разработчики смогут встраивать в свои приложения «Яндекс.Карты». Об этом vc.ru сообщили в компании.
Теперь кроме самих карт разработчики могут добавить возможность строить пешие и автомаршруты с учётом пробок, поиск организаций и адресов, просмотр панорам. Кроме того, в обновлённом Yandex MapKit карты поддерживают работу в офлайн-режиме. Разработчики также могут настроить внешний вид карт — например, сделать так, чтобы их цвет менялся в зависимости от времени суток.
Банку Yandex MapKit поможет отобразить на карте ближайший к клиенту банкомат и построить до него маршрут. Компания со штатом торговых представителей может создать приложение, которое будет показывать каждому сотруднику, за какой район он отвечает и куда должен отправиться прямо сейчас.
Разработчики могут использовать Yandex MapKit бесплатно или на коммерческой основе. Лицензию можно оформить на год. «Яндекс» предлагает два типа лицензии: стандартный и расширенный. Их стоимость зависит от назначения приложения, его возможностей и количества запросов к нему.
Расширенную лицензию «Яндекс» рекомендует разработчикам корпоративных и платных приложений, а также сервисов с ограниченным доступом по приглашениям. Стоимость такой лицензии оговаривается в индивидуальном порядке.
Стоимость стандартной лицензии зависит от количества запросов к приложению в сутки. Годовая лицензия для сервиса, который получает до 1000 запросов в сутки, обойдётся в 120 тысяч рублей, а каждая тысяча запросов сверх лимита — в 120 рублей. Лицензия для приложения с 10 тысячами запросов в сутки будет стоить 360 тысяч рублей в год, с 50 тысячами — 850 тысяч рублей.
По данным «Яндекса», Yandex MapKit используют «сотни» сторонних сервисов. Точную статистику по количеству клиентов и приобретению лицензий компания не раскрывает.
Интеграция карт в ваше Android-приложение
Есть много разных идей, для реализации которых могут понадобиться карты на мобильных устройствах.
Возможности таких устройств позволяют довольно оперативно получать информацию о местоположении, графические данные и графические преобразования для отображения объёма ландшафта.
Начнём с отечественного производителя.
Yandex
Библиотеку Yandex MapKit можно скачать с GitHub’а, там же есть версия и для iOS.
Но прежде чем начать использовать, нам надо получить API-key, для этого идём на почту и пишем письмо в support@mobmaps.yandex.ru, указав в заголовке «Map Kit запрос API-ключа». В ответ вам пришлют письмо с указанием дополнительных ссылок на документацию, на правила использования и собственно с самим ключом в теле письма (а могут и не прислать, кстати).
Пока ждём письмо, берём библиотеку и прикрепляем её к проекту.
После долгого ожидания с кружкой кофе, знакомимся с содержимым письма и информации по ссылкам, берём ключик и пишем в вашем layout’е приложения следующий код:
где заместо «you are key» вставляем полученный ключ. Всё, карта есть.
Далее код показывает, как перемещать карту на заданную координату и использовать зум:
Для использования Google Maps надо совершить куда более изощрённые действия. Я расскажу, как получить debug-key для использования карт, но процесс получения release версии похоже несколько замороченней, но я release ещё не получал.
Для получения debug-key, надо найти ваше хранилище ключей, для отладки.
По-умолчанию, путь будет выглядеть примерно так:
Затем открываем командную строку, переходим в каталог, куда установлена Java:
где путь_до_хранилища_ключей — свой путь до debug.keystore (осторожно, возможны проблемы с пробелами в пути).
После чего в том же окне будет выведен md5-ключ после «Certificate fingerprint (MD5)».
Идём по ссылке и регистрируем код.
После чего Google сгенерирует с нужным кодом для layout и встроенным кодом, берём его и вставляем к себе в layout.
Далее нам, надо наш Activity представить в примерно следующем виде:
Замечу, что Activity наследован должен быть от MapActivity хранящийся в com.google.android.maps.MapActivity.
А в манифесте прописать между тегами вставить:
И не забыть, про разрешение доступа в интернет для приложения:
В остальном функционал GoogleMaps и YandexMapKit весьма схож:
Как можно видеть, процесс интеграции карт в приложения довольно простой, а спектр использования довольно широк.
Более подробно можно ознакомиться ниже.
Определение собственной позиции
Чтобы немного расширить пример, приложу кусок кода:
Но для использования этого кода, в манифесте следует указать следующее разрешение:
Условия использования сервиса Яндекс.Карты
1. Общие положения
1.1. ООО «ЯНДЕКС» (далее — «Яндекс») предлагает пользователю сети Интернет (далее — Пользователь) — использовать сервис Яндекс.Карты, доступный по адресу: https://maps.yandex.ru (далее — «Сервис»).
1.2. Настоящие Условия представляют собой дополнение к Пользовательскому соглашению сервисов Яндекса относительно порядка использования Сервиса. Во всем, что не предусмотрено настоящими Условиями, отношения между Яндексом и Пользователем в связи с использованием Сервиса регулируются Пользовательским соглашением сервисов Яндекса (https://yandex.by/legal/rules), а также Лицензией на использование поисковой системы Яндекса (https://yandex.by/legal/termsofuse), Политикой конфиденциальности (https://yandex.by/legal/confidential).
1.3. Начиная использовать Сервис/его отдельные функции, Пользователь считается принявшим настоящие Условия, а также условия всех указанных выше документов, в полном объеме, без всяких оговорок и исключений. В случае несогласия Пользователя с какими-либо из положений указанных документов, Пользователь не вправе использовать Сервис.
1.4. Настоящие Условия могут быть изменены Яндексом без какого-либо специального уведомления, новая редакция Условий вступает в силу с момента ее размещения в сети Интернет по указанному в настоящем абзаце адресу, если иное не предусмотрено новой редакцией Условий. Действующая редакция Условий всегда находится на странице по адресу: https://yandex.by/legal/maps_termsofuse.
1.5. В случае если Яндексом были внесены какие-либо изменения в настоящие Условия, в порядке, предусмотренном п. 1.4. настоящих Условий, с которыми Пользователь не согласен, он обязан прекратить использование Сервиса.
1.6. Сервис предлагает Пользователю возможность бесплатного доступа к актуальной картографической и иной справочной информации. Все существующие на данный момент функции Сервиса, а также любое их развитие и/или добавление новых является предметом настоящих Условий.
1.7. Используя Сервис, Пользователь дает свое согласие на получение сообщений информационного и рекламного характера. Пользователь вправе отказаться от получения сообщений рекламного характера путем использования соответствующего функционала Сервиса или следуя инструкциям, указанным в полученном сообщении рекламного характера.
2. Использование Сервиса. Отдельные функции Сервиса
2.1. Сервис предоставляет Пользователю функциональную возможность самостоятельно и по своему выбору добавлять на карты пользовательскую информацию, в том числе знаки, метки, текстовые подписи, сообщения и т.п. (далее — «Пользовательские объекты»). Нанесение Пользовательских объектов не модифицирует исходные данные и допускается исключительно для удобства использования Пользователем Сервиса. Пользователь вправе создавать, сохранять, размещать в свободном доступе в сети Интернет ссылки на Пользовательские объекты. Ссылки на Пользовательские объекты могут также распространяться другими пользователями Сервиса.
2.2. Пользователь самостоятельно и всецело несёт все риски и ответственность за выбор местоположения Пользовательских объектов, соответствие законодательству, содержание, полноту, корректность и достоверность описания добавленных Пользовательских объектов. Яндекс не несет никакой ответственности за обозначение и описание любого Пользовательского объекта, не подтверждает и не опровергает соответствие законодательству, корректность и достоверность описания любого Пользовательского объекта. Яндекс оставляет за собой право без предупреждения и по своему усмотрению удалить любой Пользовательский объект или набор Пользовательских объектов в случае, если содержащаяся в его описании информация противоречит законодательству РФ, содержит ненормативную лексику, а также в иных случаях, когда обозначение и/или описание Пользовательских объектов и/или распространение ссылки на Пользовательские объекты нарушает настоящие Условия, условия использования других сервисов Яндекса или положения документов, указанных в п. 1.2. настоящих Условий, а также в целях защиты интересов Яндекса, пользователей сервисов, иных третьих лиц.
2.3. Сервис предоставляет пользователю функциональную возможность получить код карты в состоянии на момент получения кода, для вставки в свой сайт, блог, мобильное приложение. Данная функция может использоваться Пользователем только в рамках сайтов или мобильных приложений, доступных для бесплатного открытого использования неограниченным кругом лиц. Функция не может использоваться для проектов, требующих оплаты, или иным образом ограничивающих доступ к ним третьих лиц. Необходимость зарегистрироваться не считается ограничением доступа в рамках настоящего пункта.
2.4. Сервис предоставляет Пользователю функциональную возможность автоматического построения маршрутов на картах, указывающих на вариант пути от точки отправления до точки назначения, указанных Пользователем (Далее — «Маршрут»). Построение Маршрутов не модифицирует исходные данные и допускается исключительно для удобства использования Пользователем Сервиса.
Пользователь самостоятельно и всецело несёт все риски и ответственность за выбор Маршрута и следование выбранным Маршрутом. Яндекс не гарантирует правильность, оптимальность, актуальность и/или соответствие Маршрутов правилам дорожного движения и не несет ответственности за выбор Пользователем Маршрута и последствий следования ему. Пользователь должен предпринимать все меры внимательности и осмотрительности перед выбором Маршрута и в ходе его использования.
2.5. Сервис может содержать в себе информацию о текущем уровне загруженности дорог, краткосрочный прогноз загруженности, а также информацию о средней загруженности дорог в течение суток (далее – Сервис Яндекс.Пробки).
Информация, доступная в Сервисе Яндекс.Пробки получена на основание анализа обезличенных данных и носит справочный характер.
Используемое в Сервисе цветовое отображение уровня загруженности дорог не является указанием на статус дороги, возможности ее свободного использования, фактического функционирования и проходимости, и является исключительно показателем примерной степени ее загруженности в текущий период времени (зеленый – свободный, желтый – средней загруженности, красный – высокой загруженности).
2.6. Сервис может предоставлять Пользователю функциональную возможность поиска и просмотра информации о движении общественного транспорта (далее – Режим «Транспорт») на карте определенной местности. Информация, отображаемая при использовании Режима «Транспорт», предоставлена партнерами Сервиса и/или получена из открытых публичных источников и носит справочный характер, Яндекс не несет ответственность за точность, актуальность и достоверность предоставляемой информации, включая маршруты и направления движения общественного транспорта, расписание транспорта, а также нахождение общественного транспорта на определенной точке на карте.
2.7. В Сервисе используются объекты интеллектуальной собственности, права на которую принадлежат соответствующим правообладателям, а также информация, предоставленная её обладателями. Полный перечень правообладателей и обладателей информации перечислен в п. 5 настоящих Условий.
2.8. Сервис может предоставлять Пользователю возможность осуществлениябронирования услуг организации при условии наличия формы бронирования длясоответствующей организации в Сервисе.
Осуществление бронирования производится путем заполнения Пользователемформы бронирования и указания необходимых сведений.
Заполняя и отправляя форму бронирования, Пользователь выражает согласие наобработку указанных в форме данных Яндексом на условиях Политикиконфиденциальности (https://yandex.ru/legal/confidential), а также на передачу данныхорганизации, в отношении услуг которой запрашивается бронирование, в целяхпредварительного бронирования услуг и осуществления обратной связи по вопросамбронирования и оказания услуг Пользователю, а также в целях обратной связиорганизации с Пользователем по вопросам оказания ею услуг/реализации товаров.
2.9. Пользователь имеет возможность осуществления бронирования услуг, оказываемых организацией, с использованием сервиса Yclients, предоставляемого партнером Сервиса на условиях, опубликованных по адресу: https://www.yclients.com/info/user-agreement. При заполнении формы бронирования и осуществлении брони с ее использованием Пользователь выражает согласие с направлением указанных в форме данных ООО «УАЙКЛАЕНТС» (ОГРН: 5157746100716), а также представителям организации, в отношении услуг которой запрашивается бронирование, в целях предварительного бронирования услуг и осуществления обратной связи по вопросам планирования и оказания услуг Пользователю.
3. Использование функции Яндекс.Бизнес
3.1. Сервис предоставляет Пользователю функциональную возможность размещения, просмотра и поиска информации об организациях, расположенных по адресам, отображаемым в Сервисе (далее — Яндекс.Бизнес), включая сведения об адресе, наименовании, контактных данных, режиме работы, информацию об оказываемых услугах/реализуемых товарах и отзывы Пользователей. Использование Яндекс.Бизнеса и его разделов осуществляется на Условиях использования сервиса Яндекс.Бизнес, опубликованных по адресу: https://yandex.ru/legal/clients_termsofuse.
Функциональность Яндекс.Бизнеса может различаться в зависимости от региона/страны местонахождения Пользователя.
3.2.-3.9. Утратили силу (пункты в новой редакции опубликованы по адресу, указанному в п. 3.1.Условий).
4. Иные положения
4.1. Яндекс не гарантирует сохранность информации, представленной в Сервисе (включая Пользовательские объекты и информацию сервиса Яндекс.Бизнес, Яндекс.Пробки и др.) в каком-либо объеме и/или в течение какого-либо срока, в том числе в случае изменения данных в связи с развитием или изменением Сервиса.
4.2. Информация Сервиса может быть использована Яндексом в иных сервисах и приложениях Яндекса, а также в рекламных или маркетинговых материалах, размещаемых на ресурсах Яндекса в сети Интернет для привлечения внимания других пользователей к содержанию Сервиса, к Сервису в целом или к иным приложениям и сервисам Яндекса, товарам, работам и услугам третьих лиц, как с указанием автора информации (в качестве имени автора при этом будет указываться имя (псевдоним) Пользователя, которое он указал при регистрации или в настройках своих данных в соответствующем разделе Сервиса), так и без этого, без необходимости получения специального разрешения Пользователя и без выплаты авторского вознаграждения, с правом Яндекса предоставить права использования информации третьим лицам для использования в указанных рекламных или маркетинговых материалах. При этом Пользователь признает и соглашается, что Яндекс не обязан просматривать размещенную Пользователями информацию в Сервисе. В случае если Пользователь не вправе предоставить Яндексу право использования какой-либо информации подобным способом, он обязан воздержаться от размещения такой информации.
4.3. Яндекс оставляет за собой право на свое усмотрение ограничить доступ Пользователя к Сервису (или к определенным функциям Сервиса, при наличии технологической возможности) с использованием его учетной записи или полностью заблокировать учетную запись Пользователя при неоднократном нарушении настоящих Условий, либо применить к Пользователю иные меры с целью соблюдения требований законодательства или прав и законных интересов третьих лиц.
4.4. Используя Сервис, Пользователь может сообщить о неточности информации, размещенной в Сервисе (неверное название, положение на карте, неактуальность данных, необходимость удаления объекта), указав соответствующие сведения в специальной форме связи Сервиса. Содержание сообщения, направленного Пользователем при использовании данной функциональной возможности, является общедоступным и открыто размещается в сервисе Яндекс.Народная карта (https://n.maps.yandex.ru) в целях получения оценки зарегистрированных пользователей такого сервиса на предмет достоверности и актуальности сообщенной информации. Направляя сообщение, Пользователь выражает согласие на опубликование заполненной им формы сообщения. Пользователь обязуется не указывать в сообщении информацию, относимую законодательством Российской Федерации к информации ограниченного доступа, в том числе личные персональные данные, персональные данные третьих лиц, а также информацию, распространение которой запрещено.
4.5. Любая информация, используемая в Сервисе, предназначена исключительно для личного некоммерческого использования. При этом любое копирование Данных, их воспроизведение, переработка, распространение, доведение до всеобщего сведения (опубликование) в сети Интернет, любое использование в средствах массовой информации и/или в коммерческих целях без предварительного письменного разрешения правообладателя запрещается, за исключением случаев, прямо предусмотренных функциональными возможностями сервиса, настоящими Условиями, условиями использования других сервисов Яндекса или документами, указанными в п. 1.2. настоящих Условий.
4.6. Представленная в Сервисе информация носит справочный характер. Яндекс не гарантирует, что Сервис, качество какого-либо продукта, услуги, информации, полученных с использованием Сервиса, соответствует/будет соответствовать требованиям Пользователя, а также что функции Сервиса будут предоставляться непрерывно, быстро, надежно и без ошибок.
Яндекс не гарантирует точность, актуальность, полноту, достоверность информации, которая может быть получена с использованием Сервиса. Информация Сервиса не предназначена для использования для каких-либо целей или в каком-либо качестве (например, для установления и/или подтверждения каких-либо фактов, в качестве доказательств при вынесении юридически значимых решений, для предоставления справок и проведения точных расчетов, исследований, получения точных координат и информации об официальных наименованиях, определения позиции относительно статуса объектов или территорий и т.д.).
Какими картами лучше пользоваться при разработке мобильного приложения
Сейчас я занимаюсь подготовкой к разработке приложения под iOS. В приложении будет активно использоваться карта местности.
Хочу задать несколько вопросов тем, кто на практике использует в своих приложениях различные карты:
Отвечает Иван Чумак, основатель мобильного приложения гиперлокальных новостей Meanwhile
Как обычно, очень многое зависит от конкретных пользовательских кейсов — для чего именно вам нужны карты, и, самое главное, какая предполагается география использования вашего приложения.
Это будет Россия или, например, США? Если Россия, то планируете вы покрыть только Москву и Петербург, или же фокус будет лежать на небольших городах, или даже сёлах и ПГТ? Если вы планируете запускать ваше приложение в мелких городах России, то тут бесспорный лидер — «Яндекс.Карты». Там, где у Google Maps просто серые пятна и невнятные линии, у «Яндекс.Карт» подписанные улицы и подъезды. Если вы планируете стартовать в крупных городах, то стоит всё-таки использовать Google Maps по той простой причине, что у многих пользователей они уже стоят, а значит, процесс загрузки вашего приложения будет происходить быстрее.
Кроме того, на Android (а рано или поздно вы начнете делать приложение и для Android) Google Maps стоят уже по умолчанию. Это нативные («родные») карты, которые идеально заточены под Android — это позволит вашим пользователям загружать все быстрее, а ваши разработчики потратят меньше времени на интеграцию. C iOS Google Maps также замечательно работают. И, как мне кажется, они очень красивые, изящные, легко настраиваются, не перегружены никакой лишней информацией и просто удобны.
Конечно же, плох тот стартапер, который не мечтает покорить мир. С выходом на запад использование «Яндекс.Карт» станет весьма неудобным из-за очень плохого покрытия. Так что имеет смысл изначально брать именно Google Maps.
В 90% случаев этот выбор себя оправдает С ценами и лицензиями на Google Maps можно ознакомиться на их же портале. Пока вы не достигли размеров «Вконтакте» — всё бесплатно.
Почему не стоит использовать open-source проекты? Именно из-за их открытости. Они хоть и бесплатные, но у вас никогда не будет гарантии, что эти карты будут совместимы с последними (или устаревшими) версиями мобильных ОС, что информация на них будет объективна и верна, что они в принципе поддерживают и адаптированы под мобильное использование.
Коммерческие карты изначально более проработаны и более удобны для разработчиков. У крупных корпораций есть деньги на самых лучших дизайнеров, топографов, разработчиков. В итоге, вы получаете продукт, который по всем параметрам превосходит любительский, пусть и сделанный от чистого сердца.
Это как коммунизм — идея неплохая, но на практике не очень срабатывает.
Чтобы задать свой вопрос читателям или экспертам, заполните форму заявки на странице.
Карты на стол: как выбрать поставщика географических карт для мобильного приложения
У вас есть отличная идея для мобильного приложения. Дизайнеры уже продумывают элементы интерфейса, вы мысленно читаете положительные отзывы на популярных сайтах, в уме прикидываете статью на Хабре. Будущее прекрасно и пестрит как минимум 4,5 звездами в Google Play и AppStore. Ах да, осталась мелочь: выбрать поставщика карт. Но когда начнете вертеть эту мелочь и так, и эдак, то станет понятно, что монетка не упала орлом или решкой, а стала на ребро.
От чего зависит выбор картографического сервиса? Кажется, что все просто: приложение для России? Берем карты Яндекса. Направляем взгляд на Запад? Google maps в помощь. Или так: для Android подойдут гугловские карты, так как все равно на эти смартфоны предустанавливают (пока) продукты Google. Проще? Да. Выгоднее и логичнее? Нет.
Чтобы определиться с провайдером карт, нужно учесть много параметров. И хотя переменных выходит предостаточно, попробуем вывести несколько правил, на базе которых сделать выбор проще.
1. Ваше приложение
В первую очередь смотрите на свой продукт, а не на предложения геосервисов.
О чем вы
Самый важный пункт – функциональность, которую вы собираетесь реализовывать. Что будет делать приложение? Для чего ему карта? Просто отметить адреса магазинов или указать проезд к салону красоты это одно. А если все действия пользователя завязаны на маршрутах и поиске по координатам – совсем другой разговор.
Например
В питерском Институте дизайна и урбанистики захотели гулять интересно, а не кратчайшим путем, и разработали сервис Sight Safari. Мобильное приложение пока что на стадии разработки. А вот история появления веб-сервиса наглядно поясняет, почему карты от Google и Яндекса не их метод и как бороться с недочетами карт с открытым кодом.
Далеко не все сервисы поддерживают работу в офлайн-режиме и роутинг. Не все позволяют наносить на свои карты пользовательские данные. Наконец, у кого-то карты растровые, а кто-то предлагает векторные с большим потенциалом для масштабирования.
Сюда же можно отнести вопрос о смартфоне: на каких аппаратах будет установлено ваше приложение? Если не слишком мощных, то возможно вам стоит обратить внимание не на гигантов с обширными функциями (например, карты от Google могут загружаться дольше, чем сможет выдержать без нервов владелец простого телефона с небольшой памятью), а на что-то более специфичное.
Также стоит помнить, что если ваша функциональность строится на базе карт, то в лице провайдера лучше найти партнера, а не мелкую побочную детальку. Чтоб в один непрекрасный день весь контроль над критичной частью инфраструктуры не пошел в туман вместе с изменениями в условиях использования API карт.
Где вы
«А сегодня мы попробуем завоевать мир» – говорила лабораторная мышь Брейн в сериале о себе, любимой, и не такой амбициозной мышке Пинки. Если вас одолевают те же мысли, то переходите к просмотру карт вживую: какая детализация по странам? А на каких языках названия? Если приложение установят на iPhone в Колумбии, то сможет пользователь найти нужный дом в Арауке, а в Сан-Андреасе кликнуть на маркер, вызвать окошко с информацией и прочитать описание на креольском?
Вполне вероятно, что ваша география упирается не в страны, а в города или даже поселки городского типа. Тогда стоит сравнить один и тот же пункт с точки зрения разных картографов. Возможно, у кого-то в селе Новые Балуйки прописаны улицы, а кто-то грешит серыми областями, но у вас ведь приложение для покупок в новобалуйских магазинах.
Например
Польский веб-сервис по поиску лекарств в аптеках GdziePoLek работал на Google Maps, стабильно и без вопросов. Но в июне 2018 года владельцы получили письмо от Google, где их уведомляли об изменениях на платформе и в условиях использования. Новые реалии GdziePoLek не устроили. Пришлось искать другого поставщика карт. На удивление, альтернатива не такая плохая: аптека в небольшом городке Констанцине (23 тысячи жителей на 2006 год) выглядит достойно не только у Google.
(Источник: блог стартапа)
Проверьте, какие карты предпочитают пользователи в нужных вам ареалах. Привычка — страшная вещь: вы можете сделать наикрутейшую маршрутизацию, красочные слои с кучей информации, а пользователям будет неудобно перестраиваться. И вот уже идут отказы от приложения.
Сколько у вас денег
Впрочем, здесь есть один щекотливый момент: если у вашего приложения много загрузок, количество пользователей растет не по дням, а по часам, а денег на оплату карт нет — что вы сделали не так в своей маркетинговой стратегии?
Сколько вы берете денег
Если ваше приложение можно свободно скачивать и кто угодно может в нем зарегистрироваться – поздравляем, вы прекрасны и получаете карты бесплатно от любого провайдера, даже от ведущих игроков. В противном случае (например, если у вас платное приложение для бухгалтеров) придется использовать коммерческую лицензию. И здесь стоит четко понимать, какую долю в вашей функциональности занимают карты и сколько обращений к ним со стороны пользователя будет в месяц.
У вас нативное или гибридное приложение
Карты – это функциональность, которая реализуется на стороне смартфона. Поэтому если у вас нативное приложение для одной или обеих платформ, то вам нужны специалисты по Java/Kotlin и/или Objective-C/Swift. Если же в планах выпустить на рынок гибрид, то привлекать знатоков нативных языков не потребуется.
Большинство провайдеров поддерживают как iOS, так и Android, и стараются создавать подробные гайды для разработчиков. Так что достать API карт для желаемой платформы не проблема.
2. Ваш провайдер
Google Maps
Ты не ты, когда не прочитал документацию от Google. Примеры кода, библиотеки, SDK – найти можно все. Разработчикам предлагается воспользоваться инструментом для подбора API, на случай, если вы не уверены, какой интерфейс для проекта нужен.
Несмотря на путаницу в тарифах и не всем приглянувшиеся обновления платформа постоянно развивается, встраивает в карты что-то новое. Например, на конференции в мае 2018-го анонсировали режим дополненной реальности: наводишь камеру на улицу и видишь карточки мест, расположенных рядом, названия собственно улицы, строишь маршрут прямо на асфальте. Разработчики добавили в презентацию, как говорится, for fun помощника – лисицу, которая показывает, куда идти.
(Источник: Jeff Chiu / AP / Scanpix / LETA)
Обратите внимание
С 11 июня для доступа к услугам Google Maps Platform разработчикам требуется действующий ключ API и платежный аккаунт на Google Cloud Platform. Даже если вам многого не надо и все ваши действия вписываются в кредит на 200 долларов.
Яндекс.Карты
Не в противовес Google Maps Platform, но близко к тому Яндекс показывает Yandex MapKit. Сервис позволяет интегрировать карты в мобильные приложения для Android и iOS. Карты будут работать как в онлайн-режиме, так и в офлайне.
Это многофункциональный и прозрачный в части оплаты инструмент: даёт возможность встроить в приложение практически любую функцию «Яндекс.Карт», от поиска адресов до прокладки маршрута с учетом строящихся домов. Полный прайс здесь.
Обратите внимание
Yandex MapKit можно использовать бесплатно или на коммерческой основе. Общее число запросов к геокодеру, маршрутизатору и панорамам в сутки не должно превышать 25 тысяч для бесплатного использования.
(Источник: Яндекс)
Платных версий две: стандартная и расширенная. Лицензия дается на год, а ее стоимость зависит от назначения приложения, его возможностей и количества запросов к приложению в сутки.
OpenStreetMap
Набирающий все большую популярность сервис с открытым кодом, «Википедия карт». Данные создаются и вносятся силами участников сообщества. Прогремел по СМИ как отличный вариант «crisis mapping», когда в 2010 году после землетрясения на Гаити тысячи пользователей занялись актуальной картой региона с учетом изменившегося рельефа и нанесением точек, где пострадавшие могут получить помощь.
Основная цель сообщества мапперов OSM — это не столько отрисовка карты, сколько создание базы данных на ее основе и наполнение точек информацией. Поэтому на базе OSM можно создать множество интересных карт: велосипедные маршруты, карты курортов с достопримечательностями и так далее.
Эти карты бесплатные, но есть свои тонкости технического характера (например, ограничение на количество запросов геокодирования в секунду к серверу OSM). Плюс неудобство могут доставить все «прелести» сетевого проекта.
Например
Тег highway=unclassified в OSM означает не «дорога неизвестного типа», а конкретный тип дороги по европейской классификации. У него предполагается наличие пешеходной обочины или тротуара. Но многие пользователи присваивают этот тег любой неизвестной дороге, в результате приложения с навигацией на основе OSM строят здесь пешие маршруты. А дорога-то может быть только для авто.
Mapbox
Этот сервис можно назвать своеобразной «оберткой» над OSM, что дает отличную детализацию картам. К тому же Mapbox в новостных сводках часто называют наиболее энергично развивающимся картографическим сервисом.
Например
Компания Urbica выпустила AR-приложение: можно посмотреть 3D-версии знаковых зданий Санкт-Петербурга в дополненной реальности. За базу взяли карты от Mapbox из-за активного развития SDK для Unity (платформа для разработки 3D-игр).
CEO Mapbox Эрик Гундерсен в одном из интервью сказал: «Если делаешь технологии для машин, то плотно общайся с автомобильными инженерами. По сути, мы делаем карты не для людей, а для роботов. Они спроектированы с учетом возможностей автомобильных сенсоров, радаров и других систем.»
Геолокационная платформа, основанная Nokia (сейчас принадлежит консорциуму, в который входят компании Audi AG, BMW Group, Daimler AG, Intel, Navinfo, NVIDIA, Pioneer, Bosh, Continental). Покрытие удовлетворительное, в том числе в России. Но карты в нашей стране, однако, не страдают подробностями: вы можете проложить маршрут, увидеть номера домов, однако POI (point of interest, достопримечательности, магазины, офисы, заправки и так далее) часто оказываются неактуальными. Поэтому если ваше приложение будет ориентировано на пешеходов или поиск организаций (особенно в небольших городах), Here в России не ваш провайдер.
А вот для водителей и логистических сервисов Here может стать хорошим решением. Карты Here есть в авто от Audi, BMW, Daimler. Да и покупали автопроизводители Here как базу для работы над системами автопилотирования, что вылилось в проект HD Live Map. В блоге компании на Medium, в частности, рассказывается, как при помощи API для маршрутизации грузовиков максимально упрощать путь автомобильного парка.
Если вы планируете сделать свое приложение платным, то — сюрприз! — Here позволяет делать это на freemium-тарифе. Yes, that’s fine with us — написано в FAQ. А вот за что придется платить, подробно можно узнать здесь.
Обратите внимание
Если ваша задача — точный поиск по адресам в ЕС, изучите Here: детализация карт в Европе на высоте.
Отечественный картографический сервис с детализацией до заборов. Открытый код как и у OSM, и та же JS-библиотека Leaflet в основе. Подробная база данных по России и не только. Особенно радуют сведения из справочников 2ГИС по местным компаниям, поэтому платформа пригодится тем, кто ориентирует приложения на пешеходов или каталоги фирм: ваши пользователи смогут легко найти нужный офис или достопримечательность на карте. Однако тут стоит быть внимательным — проверьте заранее, актуальна ли в нужном городе справочная информация, все ли POI нанесены на карту.
Сервис условно-бесплатный — всё то же использование API только для свободно скачиваемых открытых приложений.
Обратите внимание
2ГИС сотрудничает с компанией Apple: в приложение Карты на iOS были встроены данные об организациях в 290 городах, фотографии заведений и отзывы на них. Возможно, это поможет российским поклонникам Apple не попасть в ситуацию как в анекдоте, кочующем по форумам картографов на Западе:
A priest, a rabbi and a monk using Apple Maps walk into a bar, maybe it’s a restaurant, or possibly a gas station. (Священник, раввин и монах, используя карты Apple, зашли в бар. Или ресторан. Или, возможно, это заправка.)
TomTom
TomTom — компания из Нидерландов, которая прочно обосновалась на рынке навигаторов в странах Евросоюза и Северной Америки. Благодаря покупке в 2008 году поставщика навигационных карт Tele Atlas имеет отличное покрытие.
Обратите внимание
TomTom отметилась в сотрудничестве с Apple: «яблочная компания» выбрала карты TomTom для навигационного приложения собственной разработки на iOS 6. И продлевает соглашения по сей день. Угадайте, чьи карты таким образом были заменены в далеком 2012 году? Верно – Google.
Mapfit
Этот провайдер от имени его CEO обещает более точные карты, чем у тех же Mapbox и OSM. И стоимость ниже, чем у Google до введения новой системы оплаты.
Обратите внимание
На сайте Mapfit в разделе FAQ есть пункт о миграции с карт любого другого провайдера, где обещают инструкцию на GitHub. На момент написания этого материала ссылка вместо пошагового гайда выдавала грустную ошибку 404. Однако в документации есть инструкция о переходе с конкретно Google maps.
LeafLet и OpenLayers
Если вы хотите независимости практически в абсолюте, то придется постараться. Вы можете развернуть собственную карту на базе OSM на своем сервере, с блэкджэком и нужными опциями — и все благодаря библиотекам Leaflet и OpenLayers.
Обе библиотеки имеют открытый исходный код на JavaScript. Карты будут кастомизированы так, как вы хотите. Не будет зависимости от маркетинговых решений вендора типа Google. Но остается открытым вопрос: настолько ли велика необходимость приобретать свои серверы и ваять личную карту?
А если покороче?
Для удобства сравнения мы свели самые важные данные по провайдерам в одну картинку. За максимальную оценку взяли «+++», за минимальную «+». Как видите, на момент написания этого материала провайдеры (в целом) идут примерно в одной линии. Конечно, всё может измениться в один момент: мапперы из OSM внезапно перестанут пополнять карты, Google сменит вид деятельности и займется выпуском детских книг. Но пока что имеем такую картину.
3. И как это работает?
Допустим, вы задумали приложение из лучших ностальгических побуждений. Было бы отлично, если в любом городе России на карте выводился список песен, где поется о городе или достопримечательностях. «Замечательный мужик / Меня вывез в Геленджик» или «В Питере пить» от одного известного исполнителя вам захотелось увековечить на карте. Точки вы планируете ставить либо в туристическом центре города, либо в каком-нибудь популярном у горожан месте. Приложение конечно же будет бесплатным – вам ничего не жалко для народа.
Приложение для России, западный рынок вы не рассматриваете. Число обращений к карте вряд ли будет огромным – вы понимаете, что приложение рассчитано не на массовое и не на ежедневное использование, хотя в период отпусков количество скачиваний может увеличиться. Из личных предпочтений вы захотели сделать приложение для Android-смартфонов.
Ваши действия? Вам вполне подойдет точность и детализация карт от Яндекса и Google. 2ГИС тоже ваш провайдер. Однако вы хотите ставить балун (всплывающее окно с любым HTML-содержимым) на какое-то интересное место, о котором, возможно, не знают официальные справочники. А может, и самостоятельно дополнять карту на радость пользователям. Значит, ваш выбор – OSM. Удачи!
Например
В практике Umbrella IT чаще всего фигурируют карты от Google. Такой выбор обусловлен удобством использования и кастомизации, а также богатым функционалом. Однако бывают ситуации, когда заказчику требуется что-то особое. Таким стал случай с приложением, от которого требовалась работа в офлайне и хорошая детализация карты для чекинов, но в том регионе карты от Google показывали только большие города. И как чекиниться в небольшом поселке, если на карте вместо него унылый серый многоугольник? Так что мы приняли решение использовать OSM
4. Бонус: что делать, если вы перевозите грузы
Обратить внимание на Google. Для вашего приложения важна стабильность работы карт, детальность в небольших городах. И главное — возможность отслеживать груз. А вот работа с картами в офлайне не сильно влияет на выбор: вашим пользователям не потребуется загружать тяжелые карты на свои смартфоны, смотреть названия улиц — главное видеть точку, в которой сейчас находится груз.
Если же вы рассматриваете другого провайдера, то держите в голове следующее: для приложений по мониторингу транспорта/людей/еще чего-то любой поставщик карт предоставляет свои услуги платно. Даже если у вас свободно распространяемое бесплатное приложение, а количество обращений к карте не превышает лимиты для бесплатных тарифов.