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

com.mapbox.mapboxsdk.annotations.BaseMarkerOptions Maven / Gradle / Ivy

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

import android.os.Parcelable;

import com.mapbox.mapboxsdk.geometry.LatLng;

/**
 * Abstract builder class for composing custom Marker objects.
 *
 * Extending this class requires implementing Parceable interface.
 *
 * @param  Type of the marker to be composed
 * @param  Type of the builder to be used for composing a custom Marker
 */
public abstract class BaseMarkerOptions> implements Parcelable {

    protected LatLng position;
    protected String snippet;
    protected String title;
    protected Icon icon;

    /**
     * Set the geographical location of the Marker.
     *
     * @param position the location to position the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T position(LatLng position) {
        this.position = position;
        return getThis();
    }

    /**
     * Set the snippet of the Marker.
     *
     * @param snippet the snippet of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T snippet(String snippet) {
        this.snippet = snippet;
        return getThis();
    }

    /**
     * Set the title of the Marker.
     *
     * @param title the title of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T title(String title) {
        this.title = title;
        return getThis();
    }

    /**
     * Set the icon of the Marker.
     *
     * @param icon the icon of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T icon(Icon icon) {
        this.icon = icon;
        return getThis();
    }

    /**
     * Set the icon of the Marker.
     *
     * @param icon the icon of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T setIcon(Icon icon) {
        return icon(icon);
    }

    /**
     * Set the geographical location of the Marker.
     *
     * @param position the location to position the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T setPosition(LatLng position) {
        return position(position);
    }

    /**
     * Set the snippet of the Marker.
     *
     * @param snippet the snippet of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T setSnippet(String snippet) {
        return snippet(snippet);
    }

    /**
     * Set the title of the Marker.
     *
     * @param title the title of the {@link Marker}.
     * @return the object for which the method was called.
     */
    public T setTitle(String title) {
        return title(title);
    }

    /**
     * Get the instance of the object for which this method was called.
     *
     * @return the object for which the this method was called.
     */
    public abstract T getThis();

    /**
     * Get the Marker.
     *
     * @return the Marker created from this builder.
     */
    public abstract U getMarker();

}