Een polygoon-extrusielaag toevoegen aan de kaart in de iOS SDK (preview)
In dit artikel leest u hoe u de polygoon-extrusielaag gebruikt om gebieden van Polygon
en MultiPolygon
functiegeometrieën weer te geven als geëxtrudeerde vormen.
Notitie
Buitengebruikstelling van Azure Kaarten iOS SDK
De Azure Kaarten Native SDK voor iOS is nu afgeschaft en wordt buiten gebruik gesteld op 3-31-25. Om serviceonderbrekingen te voorkomen, migreert u tegen 3-31-25 naar de Azure Kaarten Web SDK. Zie de migratiehandleiding voor de Azure Kaarten iOS SDK voor meer informatie.
Een polygoonextrusielaag gebruiken
Verbinding maken de extrusielaag van de veelhoek naar een gegevensbron. Vervolgens geladen op de kaart. De polygoonextrusielaag geeft de gebieden van een Polygon
en MultiPolygon
kenmerken weer als geëxtrudeerde vormen. De height
eigenschappen van base
de polygoon-extrusielaag definiëren de basisafstand van de grond en hoogte van de geëxtrudeerde vorm in meters. De volgende code laat zien hoe u een veelhoek maakt, deze toevoegt aan een gegevensbron en deze weergeeft met behulp van de klasse Polygon-extrusielaag.
// Create a data source and add it to the map.
let source = DataSource()
map.sources.add(source)
// Create a rectangular polygon.
source.add(geometry: Polygon([
CLLocationCoordinate2D(latitude: 40.800279, longitude: -73.958383),
CLLocationCoordinate2D(latitude: 40.768459, longitude: -73.981547),
CLLocationCoordinate2D(latitude: 40.767761, longitude: -73.981246),
CLLocationCoordinate2D(latitude: 40.764616, longitude: -73.973618),
CLLocationCoordinate2D(latitude: 40.765128, longitude: -73.973060),
CLLocationCoordinate2D(latitude: 40.764908, longitude: -73.972599),
CLLocationCoordinate2D(latitude: 40.796584, longitude: -73.949446),
CLLocationCoordinate2D(latitude: 40.797088, longitude: -73.949661),
CLLocationCoordinate2D(latitude: 40.800523, longitude: -73.957815),
CLLocationCoordinate2D(latitude: 40.800279, longitude: -73.958383)
]))
// Create and add a polygon extrusion layer to the map below the labels so that they are still readable.
map.layers.insertLayer(
PolygonExtrusionLayer(source: source, options: [
.fillColor(.red),
.fillOpacity(0.7),
.height(500)
]),
below: "labels"
)
In de volgende schermopname ziet u de bovenstaande code, waarbij een veelhoek verticaal wordt uitgerekt met behulp van een extrusielaag voor veelhoeken.
Gegevensgestuurde veelhoeken toevoegen
Een choropletenkaart kan worden weergegeven met behulp van de polygoonextrusielaag. Stel de height
en fillColor
eigenschappen van de extrusielaag in op de meting van de statistische variabele in de Polygon
en MultiPolygon
functiegeometrieën. In het volgende codevoorbeeld ziet u een geëxtrudeerde choroplethkaart van de Verenigde Staten op basis van de meting van de bevolkingsdichtheid per staat.
// Create a data source and add it to the map.
let source = DataSource()
// Import the geojson data and add it to the data source.
source.importData(fromURL: Bundle.main.url(forResource: "US_States_Population_Density", withExtension: "json")!)
map.sources.add(source)
// Create and add a polygon extrusion layer to the map below the labels so that they are still readable.
let densityColorSteps: [Int: UIColor] = [
0: UIColor(red: 0, green: 1, blue: 0.5, alpha: 1),
10: UIColor(red: 9 / 255, green: 224 / 255, blue: 118 / 255, alpha: 1),
20: UIColor(red: 11 / 255, green: 191 / 255, blue: 103 / 255, alpha: 1),
50: UIColor(red: 247 / 255, green: 227 / 255, blue: 5 / 255, alpha: 1),
100: UIColor(red: 247 / 255, green: 199 / 255, blue: 7 / 255, alpha: 1),
200: UIColor(red: 247 / 255, green: 130 / 255, blue: 5 / 255, alpha: 1),
500: UIColor(red: 247 / 255, green: 94 / 255, blue: 5 / 255, alpha: 1),
1000: UIColor(red: 247 / 255, green: 37 / 255, blue: 5 / 255, alpha: 1)
]
let colorExpression = NSExpression(
forAZMStepping: NSExpression(forKeyPath: "density"),
from: NSExpression(forConstantValue: UIColor(red: 0, green: 1, blue: 0.5, alpha: 1)),
stops: NSExpression(forConstantValue: densityColorSteps)
)
let densityHeightSteps: [Int: Int] = [
0: 100,
1200: 960_000
]
let heightExpression = NSExpression(
forAZMInterpolating: NSExpression(forKeyPath: "density"),
curveType: .linear,
parameters: nil,
stops: NSExpression(forConstantValue: densityHeightSteps)
)
map.layers.insertLayer(
PolygonExtrusionLayer(source: source, options: [
.fillOpacity(0.7),
.fillColor(from: colorExpression),
.height(from: heightExpression)
]),
below: "labels"
)
In de volgende schermopname ziet u een choroplethkaart van amerikaanse staten die gekleurd en verticaal zijn uitgerekt als geëxtrudeerde veelhoeken op basis van bevolkingsdichtheid.
Aanvullende informatie
Zie de volgende artikelen voor meer codevoorbeelden die u aan uw kaarten kunt toevoegen: