Sdílet prostřednictvím


Přidání polygonové vrstvy extruze do mapy v sadě iOS SDK (Preview)

V tomto článku se dozvíte, jak pomocí polygonové vrstvy extruze vykreslit oblasti Polygon geometrie a MultiPolygon geometrie funkcí jako tvarované tvary.

Poznámka:

Vyřazení sady Azure Mapy iOS SDK

Sada Azure Mapy Native SDK pro iOS je teď zastaralá a bude vyřazena 31. 31. 25. Pokud se chcete vyhnout přerušení služeb, proveďte migraci do sady Azure Mapy Web SDK do 31. 31. 25. Další informace najdete v průvodci migrací sady Azure Mapy iOS SDK.

Použití polygonové vrstvy extruze

Připojení mnohoúhelní vrstvu extruze ke zdroji dat. Pak ho načetl na mapě. Polygon extrusion vrstva vykresluje oblasti Polygon a MultiPolygon rysy jako tvary vysunutí. base Vlastnosti height polygonové vrstvy extruze definují základní vzdálenost od země a výšky vytvarovaného tvaru v metrech. Následující kód ukazuje, jak vytvořit mnohoúhelník, přidat ho do zdroje dat a vykreslit ho pomocí polygon extrusion vrstvy třídy.

// 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"
)

Následující snímek obrazovky ukazuje výše uvedený kód, který vykresluje mnohoúhelník roztažený svisle pomocí polygonové vrstvy extruze.

Obrázek znázorňující výše uvedený kód vykreslující mnohoúhelník roztažený svisle pomocí polygonové vrstvy extruze

Přidání mnohoúhelníku řízených daty

Mapu choropleth lze vykreslit pomocí polygonové vrstvy extruze. height Nastavte a fillColor vlastnosti vrstvy extruze na měření statistické proměnné v Polygon geometriích a MultiPolygon vlastností. Následující vzorový kód ukazuje mapu vytyčovaného choroplethu USA na základě měření hustoty populace podle stavu.

// 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"
)

Následující snímek obrazovky znázorňuje choropleth mapu států USA obarvených a roztažených svisle jako polygony vysunuté na základě hustoty populace.

Choropleth mapa amerických států obarvených a roztažených svisle jako polygonů na základě hustoty populace.

Další informace

Další ukázky kódu pro přidání do map najdete v následujících článcích: