Delen via


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.

Een afbeelding met de bovenstaande code die een veelhoek weergeeft die verticaal is uitgerekt met behulp van een extrusielaag van 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.

Een choroplethkaart van amerikaanse staten gekleurde en uitgerekte verticaal als geëxtrudeerde veelhoeken op basis van bevolkingsdichtheid.

Aanvullende informatie

Zie de volgende artikelen voor meer codevoorbeelden die u aan uw kaarten kunt toevoegen: