[ios, macos] cherry-pick darwin changes to tileset encoding param onto boba (#11324)

* [ios, macos] add tileset encoding option to darwin sources (#11274)

* add tileset encoding option to darwin sources

* correct style guide

* link out to dem encoding docs

* markdownify comments

* correct changelog
This commit is contained in:
Molly Lloyd
2018-02-27 15:12:25 -08:00
committed by GitHub
parent 848d7dff4e
commit 2dddcba3fc
7 changed files with 69 additions and 1 deletions

View File

@@ -205,6 +205,7 @@ In style JSON | In TileJSON | In the SDK
`tileSize` | — | `MGLTileSourceOptionTileSize`
`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
`encoding` | – | `MGLTileSourceOptionDEMEncoding`
### Shape sources

View File

@@ -117,6 +117,7 @@ extern MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionAttributionInfos;
*/
extern MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionTileCoordinateSystem;
/**
Tile coordinate systems that determine how tile coordinates in tile URLs are
interpreted.
@@ -141,6 +142,35 @@ typedef NS_ENUM(NSUInteger, MGLTileCoordinateSystem) {
MGLTileCoordinateSystemTMS
};
/**
An `NSNumber` object containing an unsigned integer that specifies the encoding
formula for raster-dem tilesets. The integer corresponds to one of
the constants described in `MGLDEMEncoding`.
The default value for this option is `MGLDEMEncodingMapbox`.
This option is not supported by the TileJSON spec.
*/
extern MGL_EXPORT const MGLTileSourceOption MGLTileSourceOptionDEMEncoding;
/**
The encoding formula used to generate the raster-dem tileset
*/
typedef NS_ENUM(NSUInteger, MGLDEMEncoding) {
/**
Raster tiles generated with the [Mapbox encoding formula](https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb).
*/
MGLDEMEncodingMapbox = 0,
/**
Raster tiles generated with the [Mapzen Terrarium encoding formula](https://aws.amazon.com/public-datasets/terrain/).
*/
MGLDEMEncodingTerrarium
};
/**
`MGLTileSource` is a map content source that supplies map tiles to be shown on
the map. The location of and metadata about the tiles are defined either by an

View File

@@ -19,6 +19,7 @@ const MGLTileSourceOption MGLTileSourceOptionCoordinateBounds = @"MGLTileSourceO
const MGLTileSourceOption MGLTileSourceOptionAttributionHTMLString = @"MGLTileSourceOptionAttributionHTMLString";
const MGLTileSourceOption MGLTileSourceOptionAttributionInfos = @"MGLTileSourceOptionAttributionInfos";
const MGLTileSourceOption MGLTileSourceOptionTileCoordinateSystem = @"MGLTileSourceOptionTileCoordinateSystem";
const MGLTileSourceOption MGLTileSourceOptionDEMEncoding = @"MGLTileSourceOptionDEMEncoding";
@implementation MGLTileSource
@@ -129,5 +130,22 @@ mbgl::Tileset MGLTileSetFromTileURLTemplates(NS_ARRAY_OF(NSString *) *tileURLTem
}
}
if (NSNumber *demEncodingNumber = options[MGLTileSourceOptionDEMEncoding]) {
if (![demEncodingNumber isKindOfClass:[NSValue class]]) {
[NSException raise:NSInvalidArgumentException
format:@"MGLTileSourceOptionDEMEncoding must be set to an NSValue or NSNumber."];
}
MGLDEMEncoding demEncoding;
[demEncodingNumber getValue:&demEncoding];
switch (demEncoding) {
case MGLDEMEncodingMapbox:
tileSet.encoding = mbgl::Tileset::DEMEncoding::Mapbox;
break;
case MGLDEMEncodingTerrarium:
tileSet.encoding = mbgl::Tileset::DEMEncoding::Terrarium;
break;
}
}
return tileSet;
}

View File

@@ -102,6 +102,23 @@
// the scheme is reflected by the mbgl tileset
XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::TMS);
// when the dem enciding is changed using an NSNumber
tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
MGLTileSourceOptionDEMEncoding: @(MGLDEMEncodingTerrarium),
});
// the encoding is reflected by the mbgl tileset
XCTAssertEqual(tileSet.encoding, mbgl::Tileset::DEMEncoding::Terrarium);
// when the dem enciding is changed using an NSValue
MGLDEMEncoding terrarium = MGLDEMEncodingTerrarium;
tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{
MGLTileSourceOptionDEMEncoding: [NSValue value:&terrarium withObjCType:@encode(MGLDEMEncoding)],
});
// the encoding is reflected by the mbgl tileset
XCTAssertEqual(tileSet.encoding, mbgl::Tileset::DEMEncoding::Terrarium);
}
- (void)testInvalidTileSet {

View File

@@ -18,7 +18,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT
* A style can now display smooth hillshading and customize its appearance at runtime using the `MGLHillshadeStyleLayer` class. Hillshading is based on a rasterized digital elevation model supplied by the `MGLRasterDEMSource` class. ([#10642](https://github.com/mapbox/mapbox-gl-native/pull/10642))
* The `MGLSymbolStyleLayer.textFontNames` property can now depend on a feature’s attributes. ([#10850](https://github.com/mapbox/mapbox-gl-native/pull/10850))
* Added `MGLShapeSourceOptionWrapsCoordinates`, to specify whether the shape of an `MGLComputedShapeSource` should be wrapped to accommodate coordinates with longitudes beyond −180 and 180; and `MGLShapeSourceOptionClipsCoordinates`, to specify whether the shape of an `MGLComputedShapeSource` should be clipped at the edge of each tile. ([#11041](https://github.com/mapbox/mapbox-gl-native/pull/11041))
* Added support for Mapzen Terrarium DEM encoding. ([#11154](https://github.com/mapbox/mapbox-gl-native/pull/11154))
* Added support for Mapzen Terrarium DEM encoding. ([#11274](https://github.com/mapbox/mapbox-gl-native/pull/11274))
### Map rendering

View File

@@ -154,6 +154,7 @@ In style JSON | In TileJSON | In the SDK
`tileSize` | — | `MGLTileSourceOptionTileSize`
`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
`encoding` | – | `MGLTileSourceOptionDEMEncoding`
### Shape sources

View File

@@ -141,6 +141,7 @@ In style JSON | In TileJSON | In the SDK
`tileSize` | — | `MGLTileSourceOptionTileSize`
`attribution` | `attribution` | `MGLTileSourceOptionAttributionHTMLString` (but consider specifying `MGLTileSourceOptionAttributionInfos` instead for improved security)
`scheme` | `scheme` | `MGLTileSourceOptionTileCoordinateSystem`
`encoding` | – | `MGLTileSourceOptionDEMEncoding`
### Shape sources