Привет! В этой статье я попытаюсь описать, как мы (разработчики Maptrix) победили карты Apple и заменили их картами из OpenStreetMap .
Проблема:
Ни для кого не секрет, что начиная с iOS 6.0 встроенный компонент MkMapkit использует карты от Apple. Наконец, Apple стала независимой и смогла отказаться от Google. На презентации все выглядело потрясающе! Но, как всегда, есть одно «но»: все эти 3D-чудеса доступны только пользователям США (и некоторых других развитых стран).В частности, по данным Apple, жители России живут в одной большой пустыне.
Возможные решения:
Моей первой мыслью было отойти от MKMapView. К сожалению, среди рассмотренных аналогов найти полную копию этой библиотеки не удалось.Кстати, библиотека Яндекса имеет более-менее похожую структуру( http://github.com/yandexmobile/yandexmapkit-ios И github.com/yandexmobile/yandexmapkit-ios ).
Итак, мы пришли к мысли, что работу с картой, пинами и т.п.
следует оставить как есть, а вместо картинок карт от Apple заменить какими-то более навороченными.
В результате мы решили использовать Open Street Map и эта библиотека с некоторыми модификациями.
Что меня не устроило:
1. При переключении спутниковой карты карта не переключалась 2. Если карта не загружалась, сначала показывалась карта Apple, после чего закрывалась картой OSMИтак, сам код:
1. Добавьте необходимые файлы github.com/nutiteq/ldiw-iphone/tree/master/OSM 2. .h-файл ViewController
3. .#import "TileOverlay.h" @interface MapView : UIViewController <MKMapViewDelegate> { IBOutlet MKMapView *mapView; } @property (nonatomic, retain) TileOverlay *overlay;
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
-
Семь Плохих Советов Начинающему Коптеристу
19 Oct, 24 -
Рэгдолл На Unity 3D
19 Oct, 24 -
Достичь Просветления
19 Oct, 24 -
К Вопросу «Потерянного Времени»
19 Oct, 24 -
Москва Или Лондон – Где Вечеринка Лучше?
19 Oct, 24 -
Гаечный Ключ. Репозиторий Newsql От Google
19 Oct, 24