2017-03-15 4 views
0

Gibt es eine Möglichkeit, mehr als eine Eigenschaft in einer Eigenschaft Funktion in Mapbox GL JS zu verwenden? In CartoCSS, würde ich so etwas wie das folgende tun:Zusammengesetzte Eigenschaft Funktionen in Mapbox GL JS

.states { 
    [name="California"] { 
     "polygon-fill": "blue" 
    }, 
    [name_abbrev="WA"] { 
     "polygon-fill": "green" 
    } 
} 

in MapBox GL JS scheint es, dass ich die fill-color auf Basis Stil kann entweder die Eigenschaft name -oder name_abbrev, aber nicht eine Kombination von zwei Eigenschaften. Zum Beispiel:

'fill-color': { 
    'property': 'name', 
    'type': 'categorical', 
    'stops': [ 
     ['California', 'blue'] 
    ] 
}, 
'fill-color': { 
    'property': 'name_abbrev', 
    'type': 'categorical', 
    'stops': [ 
     ['WA', 'green'] 
    ] 
} 

Dies führt in den zweiten fill-color die ersten zwingenden und Kalifornien würde einfach grün sein.

Antwort

0

Mapbox GL unterstützt kein Styling basierend auf mehreren Eigenschaften innerhalb einer Ebene. Sie könnten Ihre Daten so umarbeiten, dass die Eigenschaften, auf die Sie in einer Ebene stylen möchten, zusammenfassen, oder Sie könnten zwei Ebenen erstellen und Filter verwenden, um Funktionen zu trennen, wenn Sie nicht alle Funktionen auf eine bestimmte Ebene/Anforderung haben Um eine Fallback-Eigenschaft zu verwenden: so etwas wie

{ 
    ... layer metadata (id, source, source-layer, type, etc) ... 
    'filter': ['has', 'name'], 
    'paint': { 
     'fill-color': { 
      'property': 'name', 
      'type': 'categorical', 
      'stops': [ 
       ['California', 'blue'] 
      ] 
     } 
    } 
}, 
{ 
    ... layer metadata (id, source, source-layer, type, etc) ... 
    'filter': ['!has', 'name'], 
    'paint': { 
     'fill-color': { 
      'property': 'name_abbrev', 
      'type': 'categorical', 
      'stops': [ 
       ['WA', 'green'] 
      ] 
     } 
    } 
}