All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mapbox.mapboxsdk.style.functions.CompositeFunction Maven / Gradle / Ivy

There is a newer version: 9.2.1
Show newest version
package com.mapbox.mapboxsdk.style.functions;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.mapbox.mapboxsdk.style.functions.stops.CategoricalStops;
import com.mapbox.mapboxsdk.style.functions.stops.ExponentialStops;
import com.mapbox.mapboxsdk.style.functions.stops.IntervalStops;
import com.mapbox.mapboxsdk.style.functions.stops.Stop;
import com.mapbox.mapboxsdk.style.functions.stops.Stops;
import com.mapbox.mapboxsdk.style.layers.PropertyValue;

import java.util.Map;

/**
 * Composite functions combine Camera and SourceFunctions.
 * 

* Composite functions allow the appearance of a map feature to change with both its * properties and zoom. Each stop is an array with two elements, the first is an object * with a property input value and a zoom, and the second is a function output value. Note * that support for property functions is not yet complete. * * @param the zoom type (usually Float) * @param the input type (the feature property type) * @param the output type (the property type) * @see Function#composite */ public class CompositeFunction extends Function, O> { private final String property; private PropertyValue defaultValue; CompositeFunction(@NonNull String property, @NonNull CategoricalStops, O> stops) { this(null, property, stops); } CompositeFunction(@NonNull String property, @NonNull ExponentialStops, O> stops) { this(null, property, stops); } CompositeFunction(@NonNull String property, @NonNull IntervalStops, O> stops) { this(null, property, stops); } /** * JNI Constructor */ private CompositeFunction(@Nullable O defaultValue, @NonNull String property, @NonNull Stops, O> stops) { super(stops); this.defaultValue = new PropertyValue<>(property, defaultValue); this.property = property; } /** * Set the default value * * @param defaultValue the default value to use when no other applies * @return this (for chaining) */ public CompositeFunction withDefaultValue(PropertyValue defaultValue) { this.defaultValue = defaultValue; return this; } /** * @return the defaultValue */ @Nullable public PropertyValue getDefaultValue() { return defaultValue; } /** * INTERNAL USAGE ONLY * * @return the feature property name */ public String getProperty() { return property; } /** * {@inheritDoc} */ @Override public Map toValueObject() { Map valueObject = super.toValueObject(); valueObject.put(PROPERTY_KEY, property); if (defaultValue != null) { valueObject.put(DEFAULT_VALUE_KEY, defaultValue.value); } return valueObject; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy