Authored by Denis Zamataev

Merge branch 'release'

* release: (22 commits)
  move original project notes aside
  Android --> iOS
  explicit note that this driver cannot be used w unlimited MAU plan
  update URLs for repo-only podspec
  update URLs for legacy vs GL-based
  refs #665: remove old GL section
  refs #665: docs updates for deprecation
  Strengthen GL language, add Swift Offline example
  update private header matches
  bump podspec version
  updated changelog for 1.6.1
  explicit public headers in podspec
  explicit module name
  podpsec formatting improvements
  refs #580: pare down Proj4 headers to barest needed for CocoaPods
  refs #580: properly find CocoaPods-based resource bundle
  Smooth edges of user location annotation icon's shadow
  ensure access token is set for v4 API access
  #578: Unrequire access token for large tiles
  fixes #601: catch bad token during development
  ...

Conflicts:
	Mapbox-iOS-SDK@sputnik.podspec
1 Changelog 1 Changelog
2 --------- 2 ---------
3 3
  4 +### 1.6.1
  5 +#### April 25, 2015
  6 +
  7 + - Allow requirement for iOS 8 location services to be satisified both "always" and "when in use" modes.
  8 + - Fixed a bug when checking the types of tile sources that can be taken offline.
  9 + - Better developer warnings around when a Mapbox access token is required.
  10 + - Fixed a visual glitch with the user location dot.
  11 + - Improvements and fixes to CocoaPods installation method.
  12 +
4 ### 1.6.0 13 ### 1.6.0
5 #### February 4, 2015 14 #### February 4, 2015
6 15
1 CONTRIBUTING 1 CONTRIBUTING
2 ------------ 2 ------------
3 3
4 -If you have a usage question, please email help-at-mapbox.com.  
5 -  
6 -If you want to contribute code:  
7 -  
8 -1. In past, for things that are generally useful to mapping libraries, we encouraged contributions to the upstream project [Alpstein/route-me](http://github.com/alpstein/route-me), from which this project is derived. But that project is no longer active, so you can contribute pull here. 4 +**Please note that this legacy tree of the Mapbox iOS SDK is deprecated. As such, this project is not under active development. The `2.0.0` and above tree, based on code located at https://github.com/mapbox/mapbox-gl-native/, is a complete rewrite based on OpenGL ES and vector map rendering.**
9 5
10 -1. Please familiarize yourself with work in [`mapbox-gl-native`](https://github.com/mapbox/mapbox-gl-native), which will eventually be the successor to this codebase. That framework solves lots of problems inherent to a Core Graphics-based framework like this one such as performance and flexibility.  
11 -  
12 -1. Fork and submit a pull request **against the `develop` branch** so that we can review, discuss, and possibly integrate your code. 6 +If you have a usage question, please email help-at-mapbox.com.
@@ -456,9 +456,9 @@ @@ -456,9 +456,9 @@
456 456
457 + (NSString *)pathForBundleResourceNamed:(NSString *)name ofType:(NSString *)extension 457 + (NSString *)pathForBundleResourceNamed:(NSString *)name ofType:(NSString *)extension
458 { 458 {
459 - NSAssert([[NSBundle mainBundle] pathForResource:@"Mapbox" ofType:@"bundle"], @"Resource bundle not found in application."); 459 + NSAssert([[NSBundle bundleForClass:[self class]] pathForResource:@"Mapbox" ofType:@"bundle"], @"Resource bundle not found in application.");
460 460
461 - NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"Mapbox" ofType:@"bundle"]; 461 + NSString *bundlePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"Mapbox" ofType:@"bundle"];
462 NSBundle *resourcesBundle = [NSBundle bundleWithPath:bundlePath]; 462 NSBundle *resourcesBundle = [NSBundle bundleWithPath:bundlePath];
463 463
464 return [resourcesBundle pathForResource:name ofType:extension]; 464 return [resourcesBundle pathForResource:name ofType:extension];
@@ -3326,7 +3326,9 @@ @@ -3326,7 +3326,9 @@
3326 // 3326 //
3327 if ([CLLocationManager instancesRespondToSelector:@selector(requestWhenInUseAuthorization)]) 3327 if ([CLLocationManager instancesRespondToSelector:@selector(requestWhenInUseAuthorization)])
3328 { 3328 {
3329 - NSAssert([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"], @"For iOS 8 and above, your app must have a value for NSLocationWhenInUseUsageDescription in its Info.plist"); 3329 + BOOL hasLocationDescription = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"] ||
  3330 + [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"];
  3331 + NSAssert(hasLocationDescription, @"For iOS 8 and above, your app must have a value for NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription in its Info.plist");
3330 [_locationManager requestWhenInUseAuthorization]; 3332 [_locationManager requestWhenInUseAuthorization];
3331 } 3333 }
3332 #endif 3334 #endif
@@ -70,6 +70,8 @@ @@ -70,6 +70,8 @@
70 { 70 {
71 if (self = [super init]) 71 if (self = [super init])
72 { 72 {
  73 + NSAssert([[[RMConfiguration sharedInstance] accessToken] length], @"an access token is required to use Mapbox map tiles");
  74 +
73 _dataQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL); 75 _dataQueue = dispatch_queue_create(nil, DISPATCH_QUEUE_SERIAL);
74 76
75 _infoDictionary = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[tileJSON dataUsingEncoding:NSUTF8StringEncoding] 77 _infoDictionary = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:[tileJSON dataUsingEncoding:NSUTF8StringEncoding]
@@ -163,8 +165,17 @@ @@ -163,8 +165,17 @@
163 range:NSMakeRange(0, [[referenceURL absoluteString] length])]]; 165 range:NSMakeRange(0, [[referenceURL absoluteString] length])]];
164 } 166 }
165 167
166 - if ([[referenceURL pathExtension] isEqualToString:@"json"] && (dataObject = [NSString brandedStringWithContentsOfURL:referenceURL encoding:NSUTF8StringEncoding error:nil]) && dataObject) 168 + NSError *error = nil;
  169 +
  170 + if ([[referenceURL pathExtension] isEqualToString:@"json"] && (dataObject = [NSString brandedStringWithContentsOfURL:referenceURL encoding:NSUTF8StringEncoding error:&error]) && dataObject)
  171 + {
  172 + if (error && [error.domain isEqual:NSURLErrorDomain] && error.code == -1012)
167 { 173 {
  174 +#ifdef DEBUG
  175 + NSAssert(![[dataObject lowercaseString] hasSuffix:@"invalid token\"}"], @"invalid token in use");
  176 +#endif
  177 + }
  178 +
168 return [self initWithTileJSON:dataObject enablingDataOnMapView:mapView]; 179 return [self initWithTileJSON:dataObject enablingDataOnMapView:mapView];
169 } 180 }
170 181
@@ -360,7 +371,7 @@ @@ -360,7 +371,7 @@
360 371
361 + (BOOL)isUsingLargeTiles 372 + (BOOL)isUsingLargeTiles
362 { 373 {
363 - return ([[RMConfiguration sharedInstance] accessToken] && [[UIScreen mainScreen] scale] > 1.0); 374 + return ([[UIScreen mainScreen] scale] > 1.0);
364 } 375 }
365 376
366 - (NSString *)uniqueTilecacheKey 377 - (NSString *)uniqueTilecacheKey
@@ -140,6 +140,8 @@ @@ -140,6 +140,8 @@
140 140
141 - (id)initWithMapboxMarkerImage:(NSString *)symbolName tintColorHex:(NSString *)colorHex sizeString:(NSString *)sizeString 141 - (id)initWithMapboxMarkerImage:(NSString *)symbolName tintColorHex:(NSString *)colorHex sizeString:(NSString *)sizeString
142 { 142 {
  143 + NSAssert([[[RMConfiguration sharedInstance] accessToken] length], @"an access token is required to use Mapbox markers");
  144 +
143 BOOL useRetina = ([[UIScreen mainScreen] scale] > 1.0); 145 BOOL useRetina = ([[UIScreen mainScreen] scale] > 1.0);
144 146
145 NSURL *imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.tiles.mapbox.com/v4/marker/pin-%@%@%@%@.png%@", 147 NSURL *imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.tiles.mapbox.com/v4/marker/pin-%@%@%@%@.png%@",
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 if (!(self = [super init])) 41 if (!(self = [super init]))
42 return nil; 42 return nil;
43 43
44 - NSAssert([_source isKindOfClass:[RMAbstractWebMapSource class]], @"only web-based tile sources are supported for downloading"); 44 + NSAssert([source isKindOfClass:[RMAbstractWebMapSource class]], @"only web-based tile sources are supported for downloading");
45 45
46 _tile = tile; 46 _tile = tile;
47 _source = source; 47 _source = source;
@@ -94,7 +94,7 @@ @@ -94,7 +94,7 @@
94 // 94 //
95 CGFloat whiteWidth = 24.0; 95 CGFloat whiteWidth = 24.0;
96 96
97 - CGRect rect = CGRectMake(0, 0, whiteWidth * 1.25, whiteWidth * 1.25); 97 + CGRect rect = CGRectMake(0, 0, whiteWidth * 1.5, whiteWidth * 1.5);
98 98
99 UIGraphicsBeginImageContextWithOptions(rect.size, NO, [[UIScreen mainScreen] scale]); 99 UIGraphicsBeginImageContextWithOptions(rect.size, NO, [[UIScreen mainScreen] scale]);
100 CGContextRef context = UIGraphicsGetCurrentContext(); 100 CGContextRef context = UIGraphicsGetCurrentContext();
1 Pod::Spec.new do |m| 1 Pod::Spec.new do |m|
2 2
  3 +<<<<<<< HEAD:Mapbox-iOS-SDK@sputnik.podspec
3 m.name = 'Mapbox-iOS-SDK@sputnik' 4 m.name = 'Mapbox-iOS-SDK@sputnik'
4 m.version = '1.6.1-sputnik' 5 m.version = '1.6.1-sputnik'
  6 +=======
  7 + m.name = 'Mapbox-iOS-SDK'
  8 + m.version = '1.6.1'
  9 +>>>>>>> release:Mapbox-iOS-SDK.podspec
5 10
6 m.summary = 'Fork of MapBox iOS SDK with some patches.' 11 m.summary = 'Fork of MapBox iOS SDK with some patches.'
7 m.description = 'An open source toolset for building mapping applications for iOS devices with great flexibility for visual styling, offline use, and customizability.' 12 m.description = 'An open source toolset for building mapping applications for iOS devices with great flexibility for visual styling, offline use, and customizability.'
  13 +<<<<<<< HEAD:Mapbox-iOS-SDK@sputnik.podspec
8 m.homepage = 'https://github.com/sputnik-ru/Mapbox-iOS-SDK' 14 m.homepage = 'https://github.com/sputnik-ru/Mapbox-iOS-SDK'
9 m.license = 'BSD' 15 m.license = 'BSD'
10 m.author = { 'Denis Zamataev' => 'zamataev@corp.sputnik.ru' } 16 m.author = { 'Denis Zamataev' => 'zamataev@corp.sputnik.ru' }
11 m.screenshot = 'https://raw.github.com/sputnik-ru/Mapbox-iOS-SDK/packaging/screenshot.png' 17 m.screenshot = 'https://raw.github.com/sputnik-ru/Mapbox-iOS-SDK/packaging/screenshot.png'
12 18
13 m.source = { :git => 'https://github.com/sputnik-ru/Mapbox-iOS-SDK.git', :tag => m.version.to_s } 19 m.source = { :git => 'https://github.com/sputnik-ru/Mapbox-iOS-SDK.git', :tag => m.version.to_s }
  20 +=======
  21 + m.homepage = 'https://mapbox.com/mapbox-ios-sdk-legacy'
  22 + m.license = 'BSD'
  23 + m.author = { 'Mapbox' => 'mobile@mapbox.com' }
  24 + m.screenshot = 'https://raw.github.com/mapbox/mapbox-ios-sdk-legacy/packaging/screenshot.png'
  25 + m.social_media_url = 'https://twitter.com/Mapbox'
  26 +
  27 + m.source = {
  28 + :git => 'https://github.com/mapbox/mapbox-ios-sdk-legacy.git',
  29 + :tag => m.version.to_s
  30 + }
  31 +>>>>>>> release:Mapbox-iOS-SDK.podspec
14 32
15 m.platform = :ios 33 m.platform = :ios
16 m.ios.deployment_target = '5.0' 34 m.ios.deployment_target = '5.0'
  35 + m.requires_arc = true
17 36
18 - m.source_files = 'Proj4/*.h', 'MapView/Map/*.{h,c,m}' 37 + m.module_name = 'Mapbox_iOS_SDK'
19 38
20 - m.requires_arc = true 39 + m.source_files = 'Proj4/proj_api.h', 'MapView/Map/*.{h,c,m}'
21 40
22 m.prefix_header_file = 'MapView/MapView_Prefix.pch' 41 m.prefix_header_file = 'MapView/MapView_Prefix.pch'
23 42
24 - m.resource_bundle = { 'Mapbox' => 'MapView/Map/Resources/*' }  
25 -  
26 - m.documentation_url = 'https://www.mapbox.com/mapbox-ios-sdk' 43 + m.public_header_files = [
  44 + 'MapView/Map/Mapbox.h',
  45 + 'MapView/Map/RMAnnotation.h',
  46 + 'MapView/Map/RMCacheObject.h',
  47 + 'MapView/Map/RMCircle.h',
  48 + 'MapView/Map/RMCircleAnnotation.h',
  49 + 'MapView/Map/RMCompositeSource.h',
  50 + 'MapView/Map/RMConfiguration.h',
  51 + 'MapView/Map/RMCoordinateGridSource.h',
  52 + 'MapView/Map/RMDatabaseCache.h',
  53 + 'MapView/Map/RMGreatCircleAnnotation.h',
  54 + 'MapView/Map/RMInteractiveSource.h',
  55 + 'MapView/Map/RMMBTilesSource.h',
  56 + 'MapView/Map/RMMapboxSource.h',
  57 + 'MapView/Map/RMMapView.h',
  58 + 'MapView/Map/RMMapViewDelegate.h',
  59 + 'MapView/Map/RMMarker.h',
  60 + 'MapView/Map/RMMemoryCache.h',
  61 + 'MapView/Map/RMPointAnnotation.h',
  62 + 'MapView/Map/RMPolygonAnnotation.h',
  63 + 'MapView/Map/RMPolylineAnnotation.h',
  64 + 'MapView/Map/RMShape.h',
  65 + 'MapView/Map/RMStaticMapView.h',
  66 + 'MapView/Map/RMTileCache.h',
  67 + 'MapView/Map/RMTileMillSource.h',
  68 + 'MapView/Map/RMUserLocation.h',
  69 + 'MapView/Map/RMUserTrackingBarButtonItem.h'
  70 + ]
  71 +
  72 + m.resource_bundle = {
  73 + 'Mapbox' => 'MapView/Map/Resources/*'
  74 + }
  75 +
  76 + m.documentation_url = 'https://www.mapbox.com/mapbox-ios-sdk-legacy'
27 77
28 m.frameworks = 'CoreGraphics', 'CoreLocation', 'Foundation', 'QuartzCore', 'UIKit' 78 m.frameworks = 'CoreGraphics', 'CoreLocation', 'Foundation', 'QuartzCore', 'UIKit'
29 79
30 m.libraries = 'Proj4', 'sqlite3', 'z' 80 m.libraries = 'Proj4', 'sqlite3', 'z'
31 81
32 - m.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC', 'LIBRARY_SEARCH_PATHS' => '"${PODS_ROOT}/Mapbox-iOS-SDK/Proj4"' } 82 + m.xcconfig = {
  83 + 'OTHER_LDFLAGS' => '-ObjC',
  84 + 'LIBRARY_SEARCH_PATHS' => '"${PODS_ROOT}/Mapbox-iOS-SDK/Proj4"'
  85 + }
33 86
34 m.preserve_paths = 'MapView/MapView.xcodeproj', 'MapView/Map/Resources' 87 m.preserve_paths = 'MapView/MapView.xcodeproj', 'MapView/Map/Resources'
35 88
  1 +Mapbox iOS SDK
  2 +--------------
  3 +
  4 +Based on the Route-Me iOS map library (Alpstein fork) with [Mapbox](http://mapbox.com) customizations.
  5 +
  6 +Requires iOS 5 or greater (includes iOS 7+ support at runtime), Xcode 5.0 or greater, and ARC.
  7 +
  8 +[![](https://raw.github.com/mapbox/mapbox-ios-sdk-legacy/packaging/screenshot.png)]()
  9 +
  10 +Major differences from [Alpstein fork of Route-Me](https://github.com/Alpstein/route-me):
  11 +
  12 + * Requires iOS 5.0 and above.
  13 + * Supports Automatic Reference Counting (ARC).
  14 + * [Mapbox](http://mapbox.com) & [MBTiles](http://mbtiles.org) tile source integration code.
  15 + * [Mapbox Markers](http://mapbox.com/blog/markers/) support.
  16 + * [UTFGrid interactivity](http://mapbox.com/mbtiles-spec/utfgrid/).
  17 + * Improved network tile loading performance.
  18 + * A bulk, background map tile downloader for cache pre-population and offline use.
  19 + * Annotation callouts that behave like MapKit.
  20 + * Annotation convenience subclasses for points and shapes.
  21 + * Prepackaged static library.
  22 + * [CocoaPods](http://cocoapods.org) support.
  23 + * Removal of two-finger double-tap gesture for zoom out (to speed up two-finger single-tap recognition like MapKit).
  24 + * Different default starting location for maps.
  25 + * Built-in attribution view controller with button on map views & default OpenStreetMap attribution.
  26 + * Easy static map view support.
  27 + * Removal of included example projects in favor of separate examples on GitHub.
  28 + * A few added defaults for convenience.
  29 + * Improved documentation.
  30 +
  31 +
  32 +Route-Me
  33 +--------
  34 +
  35 +Route-Me is an open source map library that runs natively on iOS. It's designed to look and feel much like the built-in iOS map library, but it's entirely open, and works with any map source using a pluggable backend system.
  36 +
  37 +Supported map tile sources include [Mapbox](http://mapbox.com/developers/api/)/[TileStream](https://github.com/mapbox/tilestream), the offline-capable, database-backed format [MBTiles](http://mbtiles.org), [OpenStreetMap](http://www.openstreetmap.org), and several others.
  38 +
  39 +Please note that you are responsible for getting permission to use the map data, and for ensuring your use adheres to the relevant terms of use.
  40 +
  41 +Installation
  42 +------------
  43 +
  44 +There are three ways that you can install the SDK, depending upon your needs:
  45 +
  46 + 1. Clone from GitHub and integrate as a dependent Xcode project.
  47 + 1. Use the [static library](http://mapbox-ios-sdk.s3.amazonaws.com/index.html). Link it in your project, add `#import <Mapbox/Mapbox.h>`, and additionally, include the `-ObjC` linker flag.
  48 + 1. Install via [CocoaPods](http://cocoapods.org).
  49 +
  50 +More detailed information on the installation options is available in the [SDK guide](http://mapbox.com/mapbox-ios-sdk-legacy/).
  51 +
  52 +The two main branches of the GitHub repository are pretty self-explanatory: `release` and `develop`. When we tag a [release](https://github.com/mapbox/mapbox-ios-sdk-legacy/tags), we also merge `develop` over to `release`, except in the case of minor point releases (e.g., `0.4.2`), where we might just bring over a fix or two from `develop`.
  53 +
  54 +Then, update the submodules:
  55 +
  56 + git submodule update --init
  57 +
  58 +Some example apps showing usage of the SDK (with screenshots):
  59 +
  60 + * [Mapbox iOS Example](https://github.com/mapbox/mapbox-ios-example) - online, offline, and interactive tile sources
  61 + * [Mapbox iOS SDK Offline Example](https://github.com/mapbox/mapbox-ios-sdk-offline) - offline tile source, written in Swift
  62 + * [Mapbox Me](https://github.com/mapbox/mapbox-me) - user location services and terrain toggling
  63 + * [Weekend Picks](https://github.com/mapbox/weekend-picks-template-ios) - markers and data
  64 +
  65 +More documentation and examples are available here: http://mapbox.com/mapbox-ios-sdk-legacy/
  66 +
  67 +There are two subdirectories - MapView and Proj4. Proj4 is a support library used to do map projections. The MapView project contains only the Route-Me map library.
  68 +
  69 +See License.txt for license details. In any app that uses this SDK, include the following text on your "preferences" or "about" screen: "Uses Mapbox iOS SDK, (c) 2008-2014 Mapbox and Route-Me Contributors". Your data provider will have additional attribution requirements.
  70 +
  71 +News, Support and Contributing
  72 +------------------------------
  73 +
  74 +Complete API documentation is available [online](http://mapbox.com/mapbox-ios-sdk-legacy/api/) or as an [Xcode docset Atom feed](http://mapbox.com/mapbox-ios-sdk-legacy/Docs/publish/docset.atom).
  75 +
  76 +We have a [basic technical overview](http://mapbox.com/mapbox-ios-sdk-legacy/) along with the installation instructions.
  77 +
  78 +Mapbox has an IRC channel on `irc.freenode.net` in `#mapbox`.
  79 +
  80 +To report bugs and help fix them, please use the [issue tracker](https://github.com/mapbox/mapbox-ios-sdk-legacy/issues).
  81 +
  82 +Dependent Libraries
  83 +-------------------
  84 +
  85 +The Mapbox iOS SDK makes use of several sub-libraries, listed below. See License.txt for more detailed information about Route-Me and Proj4 and see the individual license files in the sub-libraries for more information on each.
  86 +
  87 + * [FMDB](https://github.com/ccgus/fmdb) by Gus Mueller (SQLite for caching and MBTiles)
  88 + * [GRMustache](https://github.com/groue/GRMustache) by Gwendal Roué (Mustache templates)
  89 + * [SMCalloutView](https://github.com/nfarina/calloutview) by Nick Farina (annotation callouts)
1 Mapbox iOS SDK 1 Mapbox iOS SDK
2 -------------- 2 --------------
3 3
4 -Based on the Route-Me iOS map library (Alpstein fork) with [Mapbox](http://mapbox.com) customizations. 4 +**This tree of the Mapbox iOS SDK is deprecated in favor of the [Mapbox GL](http://github.com/mapbox/mapbox-gl-native)-based version 2.0.0 and above. The future of Mapbox maps is vector rendering, and 2.0.0 is a rewrite based on OpenGL ES and vector rendering. Unlimited, per-user Mapbox pricing plans cannot be used with this version of the iOS SDK.**
5 5
6 -Requires iOS 5 or greater (includes iOS 7+ support at runtime), Xcode 5.0 or greater, and ARC.  
7 -  
8 -[![](https://raw.github.com/mapbox/mapbox-ios-sdk/packaging/screenshot.png)]()  
9 -  
10 -Major differences from [Alpstein fork of Route-Me](https://github.com/Alpstein/route-me):  
11 -  
12 - * Requires iOS 5.0 and above.  
13 - * Supports Automatic Reference Counting (ARC).  
14 - * [Mapbox](http://mapbox.com) & [MBTiles](http://mbtiles.org) tile source integration code.  
15 - * [Mapbox Markers](http://mapbox.com/blog/markers/) support.  
16 - * [UTFGrid interactivity](http://mapbox.com/mbtiles-spec/utfgrid/).  
17 - * Improved network tile loading performance.  
18 - * A bulk, background map tile downloader for cache pre-population and offline use.  
19 - * Annotation callouts that behave like MapKit.  
20 - * Annotation convenience subclasses for points and shapes.  
21 - * Prepackaged static library.  
22 - * [CocoaPods](http://cocoapods.org) support.  
23 - * Removal of two-finger double-tap gesture for zoom out (to speed up two-finger single-tap recognition like MapKit).  
24 - * Different default starting location for maps.  
25 - * Built-in attribution view controller with button on map views & default OpenStreetMap attribution.  
26 - * Easy static map view support.  
27 - * Removal of included example projects in favor of separate examples on GitHub.  
28 - * A few added defaults for convenience.  
29 - * Improved documentation.  
30 -  
31 -Keep your eye also on [Mapbox GL](https://www.mapbox.com/blog/mapbox-gl/), the future of our rendering technology. We are aiming to have a clear upgrade path between existing toolsets and GL as it matures. Read more in the [Mapbox GL Cocoa FAQ](https://github.com/mapbox/mapbox-gl-cocoa/blob/master/FAQ.md).  
32 -  
33 -Route-Me  
34 ---------  
35 -  
36 -Route-Me is an open source map library that runs natively on iOS. It's designed to look and feel much like the built-in iOS map library, but it's entirely open, and works with any map source using a pluggable backend system.  
37 -  
38 -Supported map tile sources include [Mapbox](http://mapbox.com/developers/api/)/[TileStream](https://github.com/mapbox/tilestream), the offline-capable, database-backed format [MBTiles](http://mbtiles.org), [OpenStreetMap](http://www.openstreetmap.org), and several others.  
39 -  
40 -Please note that you are responsible for getting permission to use the map data, and for ensuring your use adheres to the relevant terms of use.  
41 -  
42 -Installation  
43 -------------  
44 -  
45 -There are three ways that you can install the SDK, depending upon your needs:  
46 -  
47 - 1. Clone from GitHub and integrate as a dependent Xcode project.  
48 - 1. Use the [static library](http://mapbox-ios-sdk.s3.amazonaws.com/index.html). Link it in your project, add `#import <Mapbox/Mapbox.h>`, and additionally, include the `-ObjC` linker flag.  
49 - 1. Install via [CocoaPods](http://cocoapods.org).  
50 -  
51 -More detailed information on the installation options is available in the [SDK guide](http://mapbox.com/mapbox-ios-sdk/).  
52 -  
53 -The two main branches of the GitHub repository are pretty self-explanatory: `release` and `develop`. When we tag a [release](https://github.com/mapbox/mapbox-ios-sdk/tags), we also merge `develop` over to `release`, except in the case of minor point releases (e.g., `0.4.2`), where we might just bring over a fix or two from `develop`.  
54 -  
55 -Then, update the submodules:  
56 -  
57 - git submodule update --init  
58 -  
59 -Some example apps showing usage of the SDK (with screenshots):  
60 -  
61 - * [Mapbox iOS Example](https://github.com/mapbox/mapbox-ios-example) - online, offline, and interactive tile sources  
62 - * [Mapbox Me](https://github.com/mapbox/mapbox-me) - user location services and terrain toggling  
63 - * [Weekend Picks](https://github.com/mapbox/weekend-picks-template-ios) - markers and data  
64 -  
65 -More documentation is available:  
66 -  
67 - http://mapbox.com/mapbox-ios-sdk/  
68 -  
69 -There are two subdirectories - MapView and Proj4. Proj4 is a support library used to do map projections. The MapView project contains only the Route-Me map library.  
70 -  
71 -See License.txt for license details. In any app that uses this SDK, include the following text on your "preferences" or "about" screen: "Uses Mapbox iOS SDK, (c) 2008-2014 Mapbox and Route-Me Contributors". Your data provider will have additional attribution requirements.  
72 -  
73 -News, Support and Contributing  
74 -------------------------------  
75 -  
76 -Complete API documentation is available [online](http://mapbox.com/mapbox-ios-sdk/api/) or as an [Xcode docset Atom feed](http://mapbox.com/mapbox-ios-sdk/Docs/publish/docset.atom).  
77 -  
78 -The Mapbox iOS SDK has a [support resource](http://support.mapbox.com/discussions/mapbox-ios-sdk) where you can open cases and browse other developers' discussions about use of the SDK.  
79 -  
80 -We have a [basic technical overview](http://mapbox.com/mapbox-ios-sdk/) along with the installation instructions.  
81 -  
82 -Mapbox has an IRC channel on `irc.freenode.net` in `#mapbox`.  
83 -  
84 -To report bugs and help fix them, please use the [issue tracker](https://github.com/mapbox/mapbox-ios-sdk/issues).  
85 -  
86 -Dependent Libraries  
87 --------------------  
88 -  
89 -The Mapbox iOS SDK makes use of several sub-libraries, listed below. See License.txt for more detailed information about Route-Me and Proj4 and see the individual license files in the sub-libraries for more information on each.  
90 -  
91 - * [FMDB](https://github.com/ccgus/fmdb) by Gus Mueller (SQLite for caching and MBTiles)  
92 - * [GRMustache](https://github.com/groue/GRMustache) by Gwendal Roué (Mustache templates)  
93 - * [SMCalloutView](https://github.com/nfarina/calloutview) by Nick Farina (annotation callouts) 6 +See [this doc](README-old.markdown) for the original project details.