Na tej stronie znajdziesz informacje o tym, jak uzyskać programowo dostęp do zbioru danych i nadawać styl jego elementom. Znajdziesz tu też przykłady stylizacji elementów danych na podstawie geometrii punktowej, wielokątnej i wieloliniowej.
Stylizacja zbiorów danych oparta na danych renderuje elementy danych na podstawie podanych współrzędnych szerokości i długości geograficznej z pliku danych geoprzestrzennych użytego do utworzenia zbioru danych.
Przykład stylizacji danych punktowych
Ten przykład pokazuje podejście do stylizacji funkcji danych opartych na geometrii punktu.
Informacje o zbiorze danych
Zbiór danych użyty w tym przykładzie jest wynikiem ankiety przeprowadzonej w 2018 r. dotyczącej wiewiórek
przeprowadzoną w Central Parku w Nowym Jorku. W poniższym fragmencie pliku danych CSV kolumny x
i y
są używane jako dane geograficzne; uwzględniono kolumnę LatLng
, ale nie użyto jej w tym przykładzie, ponieważ zbiory danych obsługują format WKT tylko wtedy, gdy kolumna ma nazwę WKT
. Więcej informacji o obsługiwanych formatach lokalizacji znajdziesz w sekcji Wymagania dotyczące pliku CSV.
Zbiór danych ze spisu wiewiórek zawiera wiele różnych punktów danych dotyczących zaobserwowanego koloru futra i zachowania wiewiórek (przewiń poziomo, aby zobaczyć wszystkie dane).
X | T | UniqueSquirrelID | Hectare | Shift | Data | Hektary SquirrelNumber | Wiek | PrimaryFurColor | HighlightFurColor | CombinationofPrimaryandHighlightColor | Notatki kolorystyczne | Lokalizacja | Pomiary OverGroundSighter | SpecificLocation | Uruchomiono | Chasing | Wspinaczka | Jedzenie | Foraging | Inne aktywności | Kuks | Quaas | Moans | Flagi ogona | Tailtwitches | Podejścia | Obojętna | Runsfrom | OtherInteractions | LatLng |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-73.9561344937861 | 40.7940823884086 | 37F-PM-1014-03 | 37 F | PM | 10142018 | 3 | + | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | POINT (-73.9561344937861 40.7940823884086) | |||||||||
-73.9688574691102 | 40.7837825208444 | 21B-AM-1019-04 | 21 B | AM | 10192018 | 4 | + | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | POINT (-73.9688574691102 40.7837825208444) | |||||||||
-73.9742811484852 | 40.775533619083 | 11B-PM-1014-08 | 11 MLD | PM | 10142018 | 8 | Szary | Szary+ | Naziemny | 10 | fałsz | prawda | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | PUNKT (-73.97428114848522 40.775533619083) | ||||||
-73.9596413903948 | 40.7903128889029 | 32E-PM-1017-14 | 32E | PM | 10172018 | 14 | Dorosły | Szary | Szary+ | Nic nie zostało wybrane jako główne. Szary jako wyróżnienia. Wprowadzono korekty na poziomie kierowniczym. | fałsz | fałsz | fałsz | prawda | prawda | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | prawda | PUNKT (-73,9596413903948 40.7903128889029) | ||||||
-73.9702676472613 | 40.7762126854894 | 13E-AM-1017-05 | 13E | AM | 10172018 | 5 | Dorosły | Szary | Cynamon | Szary + Cytrynowy | Naziemny | na pniu drzewa | fałsz | fałsz | fałsz | fałsz | prawda | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | POINT (-73.9702676472613 40.7762126854894) | ||||
-73.9683613516225 | 40.7725908847499 | 11H-AM-1010-03 | 11 godz. | AM | 10102018 | 3 | Dorosły | Cynamon | Biały | Cynamon+biały | fałsz | fałsz | fałsz | fałsz | prawda | fałsz | fałsz | fałsz | fałsz | prawda | fałsz | prawda | fałsz | POINT (-73.9683613516225 40.7725908847499) | ||||||
-73.9541201789795 | 40.7931811701082 | 36H-AM-1010-02 | 36 godz. | AM | 10102018 | 2 | Dorosły | Szary | Szary+ | tylko poza hektarem | Ground Plane | FAŁSZ | fałsz | fałsz | fałsz | fałsz | prawda | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | fałsz | PUNKT (-73,9541201789795 40.7931811701082) |
Funkcje danych punktów stylu
Kod w tym przykładzie stylizuje kolor wypełnienia i kolor obrysu każdego punktu na podstawie atrybutu CombinationofPrimaryandHighlightColor
, który łączy kolory futra podstawowego i dodatkowego każdej wiewiórki.
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Set default colors to to yellow and point radius to 8. var fillColor = Color.YELLOW var strokeColor = Color.YELLOW var pointRadius = 8F // Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
val furColors: MutableMap<String, String> = feature.getDatasetAttributes() // Determine CombinationofPrimaryandHighlightColor attribute. val furColor = furColors!!["CombinationofPrimaryandHighlightColor"] when (furColor) { "Black+" -> { fillColor = Color.BLACK strokeColor= Color.BLACK } "Cinnamon+" -> { fillColor = -0x750000 strokeColor= -0x750000 } "Cinnamon+Gray" -> { fillColor = -0x750000 strokeColor= -0x750000 pointRadius = 6F } "Cinnamon+White" -> { fillColor = -0x750000 strokeColor= Color.WHITE pointRadius = 6F } "Gray+" -> fillColor = Color.GRAY "Gray+Cinnamon" -> { fillColor = Color.GRAY strokeColor= -0x750000 pointRadius = 6F } "Gray+Cinnamon, White" -> { fillColor = Color.LTGRAY strokeColor= -0x750000 pointRadius = 6F } "Gray+White" -> { fillColor = Color.GRAY strokeColor= Color.WHITE pointRadius = 6F } } return@StyleFactory FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .pointRadius(pointRadius) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }
Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
// Determine CombinationofPrimaryandHighlightColor attribute. Map<String, String> furColors = ((DatasetFeature) feature).getDatasetAttributes(); String furColor = furColors.get("CombinationofPrimaryandHighlightColor"); // Set default colors to to yellow and point radius to 8. int fillColor = Color.YELLOW; int strokeColor = Color.YELLOW; int pointRadius = 8; switch (furColor) { case "Black+": fillColor = Color.BLACK; strokeColor = Color.BLACK; break; case "Cinnamon+": fillColor = 0xff8b0000; strokeColor = 0xff8b0000; break; case "Cinnamon+Gray": fillColor = 0xff8b0000; strokeColor = Color.GRAY; pointRadius = 6; break; case "Cinnamon+White": fillColor = 0xff8b0000; strokeColor = Color.WHITE; pointRadius = 6; break; case "Gray+": fillColor = Color.GRAY; strokeColor = Color.GRAY; break; case "Gray+Cinnamon": fillColor = Color.GRAY; strokeColor = 0xff8b0000; pointRadius = 6; break; case "Gray+Cinnamon, White": fillColor = Color.LTGRAY; strokeColor = 0xff8b0000; pointRadius = 6; break; case "Gray+White": fillColor = Color.GRAY; strokeColor = Color.WHITE; pointRadius = 6; break; default: fillColor = Color.YELLOW; strokeColor = Color.YELLOW; pointRadius = 8; } return new FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .pointRadius(pointRadius) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
Przykład stylizacji danych wielokąta
Ten przykład pokazuje podejście do stylizacji cech danych na podstawie geometrii wielokąta.
Informacje o zbiorze danych
Zbiór danych użyty w tym przykładzie przedstawia parki w Nowym Jorku. Ten fragment pliku GeoJSON zbioru danych przedstawia przykładowy wpis funkcji.
{ "type": "Feature", "properties": { "jurisdiction": "DPR", "mapped": "False", "zipcode": "11356", "acres": "0.05", "location": "College Pl., College Pt. Blvd., bet. 11 Ave. and 12 Ave.", "nys_assembly": "27", "councildistrict": "19", "url": "http://www.nycgovparks.org/parks/Q042/", "typecategory": "Triangle/Plaza", "us_congress": "14", "eapply": "Poppenhusen Park", "parentid": "Q-07", "gispropnum": "Q042", "retired": "false", "communityboard": "407", "objectid": "6248", "globalid": "F4810079-CBB9-4BE7-BBFA-B3C0C35D5DE5", "name311": "Poppenhusen Park", "department": "Q-07", "pip_ratable": "true", "subcategory": "Sitting Area/Triangle/Mall", "precinct": "109", "permit": "true", "acquisitiondate": null, "omppropid": "Q042", "gisobjid": "100000301", "signname": "Poppenhusen Park", "address": null, "permitparent": "Q-07", "class": "PARK", "nys_senate": "11", "permitdistrict": "Q-07", "borough": "Q", "waterfront": "false" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -73.84575702371716, 40.78796240884273 ], [ -73.84593393292693, 40.78796857347548 ], [ -73.84577256469657, 40.787651355629556 ], [ -73.84575702371716, 40.78796240884273 ] ] ] ] } },
Zmienianie stylu obiektów danych wielokąta
Kod w tym przykładzie stosuje specjalne kolory do obiektów danych powiązanych z elementem typecategory
o wartości „Niezabudowany” lub „Droga parkowa”, a wszystkie pozostałe obiekty mają kolor zielony.
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) { // Determine the value of the typecategory attribute. val typeCategories: MutableMap<String, String> = feature.getDatasetAttributes() val typeCategory = typeCategories!!["typecategory"] // Set default colors to green. var fillColor = 0x4000ff00 var strokeColor = 0xff00ff00 when (typeCategory) { "Undeveloped" -> { // Color undeveloped areas blue. fillColor = 0x400000ff strokeColor = 0x400000ff } "Parkway" -> { // Color parkway areas red. fillColor = 0x40ff0000 strokeColor = 0x40ff0000 } else -> { // Color all other areas green. fillColor = 0x4000ff00 strokeColor = 0xff00ff00 } } return@StyleFactory FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .strokeWidth(2F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }
Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
// Determine the value of the typecategory attribute. Map<String, String> typeCategories = ((DatasetFeature) feature).getDatasetAttributes(); String typeCategory = typeCategories.get("typecategory"); // Set default colors to green. int fillColor = 0x4000ff00; int strokeColor = 0xff00ff00; switch (typeCategory) { case "Undeveloped": // Color undeveloped areas blue. fillColor = 0x400000ff; strokeColor = 0xff0000ff; break; case "Parkway": // Color parkway areas red. fillColor = 0x40ff0000; strokeColor = 0xffff0000; break; default: // Color all other areas green. fillColor = 0x4000ff00; strokeColor = 0xff00ff00; } return new FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
Przykład stylu danych linii łamanej
Ten przykład pokazuje podejście do stylizacji elementów danych na podstawie geometrii polilinii.
Informacje o zbiorze danych
Zbiór danych użyty w tym przykładzie pokazuje mosty w pobliżu Seattle. Poniższy fragment z pliku GeoJSON zbioru danych zawiera wpis funkcji.
{ "type": "Feature", "properties": { "OBJECTID": 1, "COMPTYPE": 66, "COMPKEY": 515774, "HANSEGKEY": 489781, "UNITID": "BRG-935", "UNITTYPE": " ", "BRGUNITID": "BRG-935", "UNITDESC_BRG": "YALE AVE BR REV LANE OC ", "UNITDESC_SEG": "HOWELL ST ON RP BETWEEN HOWELL ST AND I5 SB ", "INSTDATE": null, "EXPDATE": null, "STATUS": " ", "STATUSDT": null, "CONDITION": " ", "CONDDT": null, "OWN": " ", "LSTVERIFY": null, "MAINTBY": " ", "ADDBY": "GARCIAA", "ADDDTTM": "2010-01-21T00:00:00Z", "MODBY": null, "MODDTTM": null, "BR_NBR": 935, "BR_CODE": " 935", "BR_TYPE": "ST", "BR_NAME": "YALE AVE BR REV LANE OC", "BR_FACILITIES": "YALE AVE-SR 5 ON RAMP", "BR_FEATURES": "SR 5 REV LANE", "BR_RATING": 0, "BR_INSET": 1, "BR_GEO": "DT", "BR_OWNER": "DOT", "BR_OWNER_NAME": "State of Washington", "GEOBASID": 0, "XGEOBASID": 0, "GISSEGKEY": 489781, "EARTHQUAKE_RESPONSE_TEAM": " ", "SHAPE_Length": 220.11891836147655 }, "geometry": { "type": "LineString", "coordinates": [ [ -122.329201929090928, 47.616910448708538 ], [ -122.329206483407461, 47.616976719821004 ], [ -122.32921802149356, 47.617042137515213 ], [ -122.329236413912909, 47.617105967923777 ], [ -122.329261454336034, 47.617167494985758 ], [ -122.329292861855023, 47.617226028479571 ], [ -122.329330284134699, 47.617280911766009 ], [ -122.329373301365223, 47.617331529154569 ], [ -122.329421430971635, 47.617377312810319 ], [ -122.329474133027375, 47.617417749124023 ], [ -122.32953081631139, 47.617452384473893 ] ] } },
Stylizowanie funkcji danych linii łamanej
Poniższy fragment kodu stosuje ten sam styl bezpośrednio do wszystkich funkcji danych.
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
return@StyleFactory FeatureStyle.Builder() // Define a style with green stroke with a width of 4. .strokeColor(0xff00ff00.toInt()) .strokeWidth(4F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }
Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
return new FeatureStyle.Builder() // Define a style with green stroke with a width of 4. .strokeColor(0xff00ff00) .strokeWidth(4) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }