Openstreetmap С Использованием Mkmapkit

Привет! В этой статье я попытаюсь описать, как мы (разработчики Maptrix) победили карты Apple и заменили их картами из OpenStreetMap .



Проблема:
Ни для кого не секрет, что начиная с iOS 6.0 встроенный компонент MkMapkit использует карты от Apple. Наконец, Apple стала независимой и смогла отказаться от Google. На презентации все выглядело потрясающе! Но, как всегда, есть одно «но»: все эти 3D-чудеса доступны только пользователям США (и некоторых других развитых стран).

В частности, по данным Apple, жители России живут в одной большой пустыне.



OpenStreetMap с использованием MkMapKit



Возможные решения:
Моей первой мыслью было отойти от MKMapView. К сожалению, среди рассмотренных аналогов найти полную копию этой библиотеки не удалось.

Кстати, библиотека Яндекса имеет более-менее похожую структуру( http://github.com/yandexmobile/yandexmapkit-ios И github.com/yandexmobile/yandexmapkit-ios ).

Итак, мы пришли к мысли, что работу с картой, пинами и т.п.

следует оставить как есть, а вместо картинок карт от Apple заменить какими-то более навороченными.

В результате мы решили использовать Open Street Map и эта библиотека с некоторыми модификациями.



OpenStreetMap с использованием MkMapKit



Что меня не устроило:
1. При переключении спутниковой карты карта не переключалась 2. Если карта не загружалась, сначала показывалась карта Apple, после чего закрывалась картой OSM

Итак, сам код:
1. Добавьте необходимые файлы github.com/nutiteq/ldiw-iphone/tree/master/OSM 2. .

h-файл ViewController

  
   

#import "TileOverlay.h" @interface MapView : UIViewController <MKMapViewDelegate> { IBOutlet MKMapView *mapView; } @property (nonatomic, retain) TileOverlay *overlay;

3. .

m файл ViewController

#import "TileOverlay.h" #import "TileOverlayView.h" @synthesize overlay; - (void)viewDidLoad { [super viewDidLoad]; overlay = [[TileOverlay alloc] initOverlay]; MKMapRect visibleRect = [mapView mapRectThatFits:overlay.boundingMapRect]; visibleRect.size.width /= 2; visibleRect.size.height /= 2; visibleRect.origin.x += visibleRect.size.width / 2; visibleRect.origin.y += visibleRect.size.height / 2; mapView.visibleMapRect = visibleRect; [self SetMapDisplayTypeToSatelite:NO]; } - (void)SetMapDisplayTypeToSatelite:(BOOL)IsSatelite{ mapView.mapType = (IsSatelite == NO) ? MKMapTypeSatellite : MKMapTypeStandard;

Теги: #карта #геолокация #разработка ios #разработка ios #maptrix #Maptrix #открытая карта улиц #MkMapkit #Apple #Разработка для iOS

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.