From 3a342c709c1784d23c66c0e1b7f9963c588d7653 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 4 Apr 2017 13:22:00 -0700 Subject: [darwin] Remove unnecessary MGLTileSource initializers --- platform/darwin/src/MGLRasterSource.h | 103 ++++++++++++++++++++++++++ platform/darwin/src/MGLRasterSource.mm | 4 +- platform/darwin/src/MGLTileSource.h | 129 --------------------------------- platform/darwin/src/MGLTileSource.mm | 8 -- platform/darwin/src/MGLVectorSource.h | 120 ++++++++++++++++++++++++++++++ platform/darwin/src/MGLVectorSource.mm | 4 +- 6 files changed, 227 insertions(+), 141 deletions(-) diff --git a/platform/darwin/src/MGLRasterSource.h b/platform/darwin/src/MGLRasterSource.h index 694a818246..519784f4f1 100644 --- a/platform/darwin/src/MGLRasterSource.h +++ b/platform/darwin/src/MGLRasterSource.h @@ -104,6 +104,109 @@ MGL_EXPORT */ - (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL tileSize:(CGFloat)tileSize NS_DESIGNATED_INITIALIZER; +/** + Returns a raster source initialized an identifier, tile URL templates, and + options. + + After initializing and configuring the source, add it to a map view’s style + using the `-[MGLStyle addSource:]` method. + + #### Tile URL templates + + Tile URL templates are strings that specify the URLs of the tile images to + load. Each template resembles an absolute URL, but with any number of + placeholder strings that the source evaluates based on the tile it needs to + load. For example: + + + + Tile sources support the following placeholder strings in tile URL templates, + all of which are optional: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Placeholder stringDescription
{x}The index of the tile along the map’s x axis according to Spherical + Mercator projection. If the value is 0, the tile’s left edge corresponds + to the 180th meridian west. If the value is 2z−1, + the tile’s right edge corresponds to the 180th meridian east.
{y}The index of the tile along the map’s y axis according to Spherical + Mercator projection. If the value is 0, the tile’s tile edge corresponds + to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value + is 2z−1, the tile’s bottom edge corresponds to + −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is + inverted if the options parameter contains + MGLTileSourceOptionTileCoordinateSystem with a value of + MGLTileCoordinateSystemTMS.
{z}The tile’s zoom level. At zoom level 0, each tile covers the entire + world map; at zoom level 1, it covers ¼ of the world; at zoom level 2, + 116 of the world, and so on. For tiles loaded by + a MGLRasterSource object, whether the tile zoom level + matches the map’s current zoom level depends on the value of the + source’s tile size as specified in the + MGLTileSourceOptionTileSize key of the + options parameter.
{bbox-epsg-3857}The tile’s bounding box, expressed as a comma-separated list of the + tile’s western, southern, eastern, and northern extents according to + Spherical Mercator (EPSG:3857) projection. The bounding box is typically + used with map services conforming to the + Web Map Service + protocol.
{quadkey}A quadkey indicating both the tile’s location and its zoom level. The + quadkey is typically used with + Bing Maps. +
{ratio}A suffix indicating the resolution of the tile image. The suffix is the + empty string for standard resolution displays and @2x for + Retina displays, including displays for which + NSScreen.backingScaleFactor or UIScreen.scale + is 3.
{prefix}Two hexadecimal digits chosen such that each visible tile has a + different prefix. The prefix is typically used for domain sharding.
+ + For more information about the `{x}`, `{y}`, and `{z}` placeholder strings, + consult the + OpenStreetMap Wiki. + + @param identifier A string that uniquely identifies the source in the style to + which it is added. + @param tileURLTemplates An array of tile URL template strings. Only the first + string is used; any additional strings are ignored. + @param options A dictionary containing configuration options. See + `MGLTileSourceOption` for available keys and values. Pass in `nil` to use + the default values. + @return An initialized tile source. + */ - (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(nullable NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options NS_DESIGNATED_INITIALIZER; @end diff --git a/platform/darwin/src/MGLRasterSource.mm b/platform/darwin/src/MGLRasterSource.mm index c73a824ea8..a3d29c7c7f 100644 --- a/platform/darwin/src/MGLRasterSource.mm +++ b/platform/darwin/src/MGLRasterSource.mm @@ -37,7 +37,7 @@ static const CGFloat MGLRasterSourceRetinaTileSize = 512; } - (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL tileSize:(CGFloat)tileSize { - if (self = [super initWithIdentifier:identifier configurationURL:configurationURL]) { + if (self = [super initWithIdentifier:identifier]) { auto source = std::make_unique(identifier.UTF8String, configurationURL.mgl_URLByStandardizingScheme.absoluteString.UTF8String, uint16_t(round(tileSize))); @@ -48,7 +48,7 @@ static const CGFloat MGLRasterSourceRetinaTileSize = 512; } - (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(nullable NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options { - if (self = [super initWithIdentifier:identifier tileURLTemplates:tileURLTemplates options:options]) { + if (self = [super initWithIdentifier:identifier]) { mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, options); uint16_t tileSize = MGLRasterSourceRetinaTileSize; diff --git a/platform/darwin/src/MGLTileSource.h b/platform/darwin/src/MGLTileSource.h index 54c756332d..538b94037e 100644 --- a/platform/darwin/src/MGLTileSource.h +++ b/platform/darwin/src/MGLTileSource.h @@ -147,135 +147,6 @@ typedef NS_ENUM(NSUInteger, MGLTileCoordinateSystem) { MGL_EXPORT @interface MGLTileSource : MGLSource -#pragma mark Initializing a Source - -- (instancetype)init __attribute__((unavailable("Use -initWithIdentifier:configurationURL: or -initWithIdentifier:tileURLTemplates:options: instead."))); -- (instancetype)initWithIdentifier:(NSString *)identifier __attribute__((unavailable("Use -initWithIdentifier:configurationURL: or -initWithIdentifier:tileURLTemplates:options: instead."))); - -/** - Returns a tile source initialized with an identifier and configuration URL. - - After initializing and configuring the source, add it to a map view’s style - using the `-[MGLStyle addSource:]` method. - - The URL may be a full HTTP or HTTPS URL or, for tile sets hosted by Mapbox, a - Mapbox URL indicating a map identifier (`mapbox://`). The URL should - point to a JSON file that conforms to the - TileJSON specification. - - @param identifier A string that uniquely identifies the source in the style to - which it is added. - @param configurationURL A URL to a TileJSON configuration file describing the - source’s contents and other metadata. - @return An initialized tile source. - */ -- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL; - -/** - Returns a tile source initialized an identifier, tile URL templates, and - options. - - After initializing and configuring the source, add it to a map view’s style - using the `-[MGLStyle addSource:]` method. - - #### Tile URL templates - - Tile URL templates are strings that specify the URLs of the tile images to - load. Each template resembles an absolute URL, but with any number of - placeholder strings that the source evaluates based on the tile it needs to - load. For example: - -
    -
  • http://www.example.com/tiles/{z}/{x}/{y}.pbf could be - evaluated as http://www.example.com/tiles/14/6/9.pbf.
  • -
  • http://www.example.com/tiles/{z}/{x}/{y}{ratio}.png could be - evaluated as http://www.example.com/tiles/14/6/9@2x.png.
  • -
- - Tile sources support the following placeholder strings in tile URL templates, - all of which are optional: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Placeholder stringDescription
{x}The index of the tile along the map’s x axis according to Spherical - Mercator projection. If the value is 0, the tile’s left edge corresponds - to the 180th meridian west. If the value is 2z−1, - the tile’s right edge corresponds to the 180th meridian east.
{y}The index of the tile along the map’s y axis according to Spherical - Mercator projection. If the value is 0, the tile’s tile edge corresponds - to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value - is 2z−1, the tile’s bottom edge corresponds to - −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is - inverted if the options parameter contains - MGLTileSourceOptionTileCoordinateSystem with a value of - MGLTileCoordinateSystemTMS.
{z}The tile’s zoom level. At zoom level 0, each tile covers the entire - world map; at zoom level 1, it covers ¼ of the world; at zoom level 2, - 116 of the world, and so on. For tiles loaded by - a MGLRasterSource object, whether the tile zoom level - matches the map’s current zoom level depends on the value of the - source’s tile size as specified in the - MGLTileSourceOptionTileSize key of the - options parameter.
{bbox-epsg-3857}The tile’s bounding box, expressed as a comma-separated list of the - tile’s western, southern, eastern, and northern extents according to - Spherical Mercator (EPSG:3857) projection. The bounding box is typically - used with map services conforming to the - Web Map Service - protocol.
{quadkey}A quadkey indicating both the tile’s location and its zoom level. The - quadkey is typically used with - Bing Maps. -
{ratio}A suffix indicating the resolution of the tile image. The suffix is the - empty string for standard resolution displays and @2x for - Retina displays, including displays for which - NSScreen.backingScaleFactor or UIScreen.scale - is 3.
{prefix}Two hexadecimal digits chosen such that each visible tile has a - different prefix. The prefix is typically used for domain sharding.
- - For more information about the `{x}`, `{y}`, and `{z}` placeholder strings, - consult the - OpenStreetMap Wiki. - - @param identifier A string that uniquely identifies the source in the style to - which it is added. - @param tileURLTemplates An array of tile URL template strings. Only the first - string is used; any additional strings are ignored. - @param options A dictionary containing configuration options. See - `MGLTileSourceOption` for available keys and values. Pass in `nil` to use - the default values. - @return An initialized tile source. - */ -- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(nullable NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options; - #pragma mark Accessing a Source’s Content /** diff --git a/platform/darwin/src/MGLTileSource.mm b/platform/darwin/src/MGLTileSource.mm index aa2a299a46..5644ad9a06 100644 --- a/platform/darwin/src/MGLTileSource.mm +++ b/platform/darwin/src/MGLTileSource.mm @@ -19,14 +19,6 @@ const MGLTileSourceOption MGLTileSourceOptionTileCoordinateSystem = @"MGLTileSou @implementation MGLTileSource -- (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL { - return [super initWithIdentifier:identifier]; -} - -- (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options { - return [super initWithIdentifier:identifier]; -} - - (NSURL *)configurationURL { [NSException raise:@"MGLAbstractClassException" format:@"MGLTileSource is an abstract class"]; diff --git a/platform/darwin/src/MGLVectorSource.h b/platform/darwin/src/MGLVectorSource.h index 83926fd287..a48434f7a3 100644 --- a/platform/darwin/src/MGLVectorSource.h +++ b/platform/darwin/src/MGLVectorSource.h @@ -51,8 +51,128 @@ MGL_EXPORT #pragma mark Initializing a Source +/** + Returns a vector source initialized with an identifier and configuration URL. + + After initializing and configuring the source, add it to a map view’s style + using the `-[MGLStyle addSource:]` method. + + The URL may be a full HTTP or HTTPS URL or, for tile sets hosted by Mapbox, a + Mapbox URL indicating a map identifier (`mapbox://`). The URL should + point to a JSON file that conforms to the + TileJSON specification. + + @param identifier A string that uniquely identifies the source in the style to + which it is added. + @param configurationURL A URL to a TileJSON configuration file describing the + source’s contents and other metadata. + @return An initialized vector source. + */ - (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL NS_DESIGNATED_INITIALIZER; +/** + Returns a vector source initialized an identifier, tile URL templates, and + options. + + After initializing and configuring the source, add it to a map view’s style + using the `-[MGLStyle addSource:]` method. + + #### Tile URL templates + + Tile URL templates are strings that specify the URLs of the tile images to + load. Each template resembles an absolute URL, but with any number of + placeholder strings that the source evaluates based on the tile it needs to + load. For example: + +
    +
  • http://www.example.com/tiles/{z}/{x}/{y}.pbf could be + evaluated as http://www.example.com/tiles/14/6/9.pbf.
  • +
  • http://www.example.com/tiles/{z}/{x}/{y}{ratio}.png could be + evaluated as http://www.example.com/tiles/14/6/9@2x.png.
  • +
+ + Tile sources support the following placeholder strings in tile URL templates, + all of which are optional: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Placeholder stringDescription
{x}The index of the tile along the map’s x axis according to Spherical + Mercator projection. If the value is 0, the tile’s left edge corresponds + to the 180th meridian west. If the value is 2z−1, + the tile’s right edge corresponds to the 180th meridian east.
{y}The index of the tile along the map’s y axis according to Spherical + Mercator projection. If the value is 0, the tile’s tile edge corresponds + to arctan(sinh(π)), or approximately 85.0511 degrees north. If the value + is 2z−1, the tile’s bottom edge corresponds to + −arctan(sinh(π)), or approximately 85.0511 degrees south. The y axis is + inverted if the options parameter contains + MGLTileSourceOptionTileCoordinateSystem with a value of + MGLTileCoordinateSystemTMS.
{z}The tile’s zoom level. At zoom level 0, each tile covers the entire + world map; at zoom level 1, it covers ¼ of the world; at zoom level 2, + 116 of the world, and so on. For tiles loaded by + a MGLRasterSource object, whether the tile zoom level + matches the map’s current zoom level depends on the value of the + source’s tile size as specified in the + MGLTileSourceOptionTileSize key of the + options parameter.
{bbox-epsg-3857}The tile’s bounding box, expressed as a comma-separated list of the + tile’s western, southern, eastern, and northern extents according to + Spherical Mercator (EPSG:3857) projection. The bounding box is typically + used with map services conforming to the + Web Map Service + protocol.
{quadkey}A quadkey indicating both the tile’s location and its zoom level. The + quadkey is typically used with + Bing Maps. +
{ratio}A suffix indicating the resolution of the tile image. The suffix is the + empty string for standard resolution displays and @2x for + Retina displays, including displays for which + NSScreen.backingScaleFactor or UIScreen.scale + is 3.
{prefix}Two hexadecimal digits chosen such that each visible tile has a + different prefix. The prefix is typically used for domain sharding.
+ + For more information about the `{x}`, `{y}`, and `{z}` placeholder strings, + consult the + OpenStreetMap Wiki. + + @param identifier A string that uniquely identifies the source in the style to + which it is added. + @param tileURLTemplates An array of tile URL template strings. Only the first + string is used; any additional strings are ignored. + @param options A dictionary containing configuration options. See + `MGLTileSourceOption` for available keys and values. Pass in `nil` to use + the default values. + @return An initialized tile source. + */ - (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(nullable NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options NS_DESIGNATED_INITIALIZER; #pragma mark Accessing a Source’s Content diff --git a/platform/darwin/src/MGLVectorSource.mm b/platform/darwin/src/MGLVectorSource.mm index aeec2e40ac..5404f170e9 100644 --- a/platform/darwin/src/MGLVectorSource.mm +++ b/platform/darwin/src/MGLVectorSource.mm @@ -23,7 +23,7 @@ } - (instancetype)initWithIdentifier:(NSString *)identifier configurationURL:(NSURL *)configurationURL { - if (self = [super initWithIdentifier:identifier configurationURL:configurationURL]) { + if (self = [super initWithIdentifier:identifier]) { auto source = std::make_unique(identifier.UTF8String, configurationURL.mgl_URLByStandardizingScheme.absoluteString.UTF8String); _pendingSource = std::move(source); @@ -33,7 +33,7 @@ } - (instancetype)initWithIdentifier:(NSString *)identifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates options:(nullable NS_DICTIONARY_OF(MGLTileSourceOption, id) *)options { - if (self = [super initWithIdentifier:identifier tileURLTemplates:tileURLTemplates options:options]) { + if (self = [super initWithIdentifier:identifier]) { mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, options); auto source = std::make_unique(identifier.UTF8String, tileSet); -- cgit v1.2.1