Apple Maps називали найбільшим провалом, але за 2 роки вони стали кращими та довели своє право на існування. Тим не менше, часто розробники обирають інші сервіси, і на те є причини.
Apple Maps
Колись CNN поставила карти від Apple на 1 місце у рейтингу найбільших технічних провалів 2012 року. Міста, втоплені у воді. Відсутні дороги. Це не можна було назвати інакше. Акції Apple тоді обвалилися вдвічі. Google Maps app сім місяців поспіль тримав 1 місце за кількістю завантажень в AppStore.
Але Apple не відступила.
Пройшло 2 роки. Apple Maps існують та розвиваються. Вони не стали найбільш детальними картами. Але і Google не витримує конкуренції з локальними постачальниками даних. Наприклад, Литву ніхто не знає краще, ніж місцеві Maps.lt.
Тим не менше, Apple Maps знайшли свою нішу: це хороше API, що надається розробникам.
Apple Maps. Програмування
Сторінка «Maps for Developers»на сайті Apple містить посилання на детальну документацію та 7 проектів, що ілюструють різні аспекти. Насамперед прочитати варто «Location and Maps Programming Guide».
Крім цього, я хотів би порадити глави з книги «iOS 8 App Development Essentials». Хоча сама книга платна (я її купив та не пожалкував про це), але потрібні нам глави видавництво виклало у вільний доступ:
— Про клас MPMapItem. Екземпляри класу представляють об’єкти на карті. MKMapItem можна показати, викликавши системне app, тобто не включаючи карту в якості view до власного app.
— Tutorial зі створення app, що юзає MKMapItem.
— CoreLocation. Ну, ясно, яке geo app без визначення, де знаходиться юзер.
— Tutorial зі створення CoreLocation app.
— MKMapView. Ось тут вже йде мова про показ карти всередині app.
— Локальний пошук. Можна знайти та показати на карті об’єкти, що відповідають заданим критеріям пошуку.
— Маршрут між двома точками. Як показати найкоротший шлях в обхід водойм і будинків
Альтернативи
У глобальному масштабі існує небагато альтернатив:
— Google Maps iOS SDK
— Bing Maps Control for iOS
— OpenStreetMaps
Противники монополістів наводять слушні аргументі проти Apple та Google. Serge Wroclawski написав філософську статтю на захист OpenStreetMaps (російський переклад), у якій малює апокаліптичну картину світу, де монополісти від картографії заволоділи уявленнями людей про те, що де знаходиться.
Більш раціональний аргумент на користь OpenStreetMaps полягає у тому, що Apple та Google не гарантують офлайн сервіс. Хоча Apple Maps зараз добре кешуються.
Offline карти
Offline карти, як правило, спираються на source від OpenStreetMaps. Вони імплементяться через збереження на девайсі так званих тайлів. А ось тут починається найцікавіше. Ці тайли бувають векторними та растровими.
На Хабрі була стаття, де Дмитро Караченцов 1995 року народження (респект), використовуючи MapBox iOS SDK, бере векторний сорс, перетворює його на растр та називає таке рішення найбільш оптимальним. Я би з цим не погодився, бо карта виходить важка: там місто-мільйонник, наприклад, може потягнути сотні мегабайтів. Використання окремих тайлів для різних зумів посилює проблему важкості самих растрів.
Растрові карти обѓрунтовані тоді, коли ви їх вручну перемальовуєте. Наприклад, дизайнер Urban Walks Антон Реппонен розповідає, як він власноруч намалював унікальну карту Нью-Йорку. (російський переклад)
Для стандартних карт (або карт, які можна кастомізувати програмно) кращим рішенням було би використання векторних тайлів. Один з сервісів, що надає таку можливість — це GLMap від Galileo. У них карта геть усієї Британії займає 200 мегабайтів.
Однак, можливо, найбільш перспективный постачальник векторних тайлів — це все-таки MapBox, але тільки SDK MapBox GL.
Ще одне рішення — skobbler.