summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java
blob: f8aaf95bb243883048fd1c27efe3806e5e381782 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.mapbox.mapboxsdk.annotations;

import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.PointF;
import android.os.Parcel;
import android.os.Parcelable;

import com.mapbox.mapboxsdk.geometry.LatLng;

public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerViewOptions> {

    private MarkerView marker;

    public MarkerViewOptions() {
        marker = new MarkerView();
    }

    protected MarkerViewOptions(Parcel in) {
        marker = new MarkerView();
        position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
        snippet(in.readString());
        title(in.readString());
        flat(in.readByte() != 0);
        centerOffset((PointF) in.readParcelable(PointF.class.getClassLoader()));
        infoWindowOffset((Point) in.readParcelable(Point.class.getClassLoader()));
        selectAnimRes(in.readInt());
        deselectAnimRes(in.readInt());
        if (in.readByte() != 0) {
            // this means we have an icon
            String iconId = in.readString();
            Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader());
            Icon icon = new Icon(iconId, iconBitmap);
            icon(icon);
        }
    }

    @Override
    public MarkerViewOptions getThis() {
        return this;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeParcelable(getPosition(), flags);
        out.writeString(getSnippet());
        out.writeString(getTitle());
        out.writeByte((byte) (isFlat() ? 1 : 0));
        out.writeParcelable(getCenterOffset(),flags);
        out.writeParcelable(getInfoWindowOffset(),flags);
        out.writeInt(getSelectAnimRes());
        out.writeInt(getDeselectAnimRes());
        Icon icon = getIcon();
        out.writeByte((byte) (icon != null ? 1 : 0));
        if (icon != null) {
            out.writeString(getIcon().getId());
            out.writeParcelable(getIcon().getBitmap(), flags);
        }
    }

    @Override
    public MarkerView getMarker() {
        marker.setPosition(position);
        marker.setSnippet(snippet);
        marker.setTitle(title);
        marker.setIcon(icon);
        marker.setFlat(flat);
        marker.setCenterOffset(centerOffset);
        marker.setInfoWindowOffset(infoWindowOffset);
        marker.setSelectAnimRes(selectAnimRes);
        marker.setDeselectAnimRes(deselectAnimRes);
        return marker;
    }

    public LatLng getPosition() {
        return position;
    }

    public String getSnippet() {
        return snippet;
    }

    public String getTitle() {
        return title;
    }

    public Icon getIcon() {
        return icon;
    }

    public boolean isFlat() {
        return flat;
    }

    public PointF getCenterOffset() {
        return centerOffset;
    }

    public Point getInfoWindowOffset() {
        return infoWindowOffset;
    }

    public int getSelectAnimRes() {
        return selectAnimRes;
    }

    public int getDeselectAnimRes() {
        return deselectAnimRes;
    }

    public static final Parcelable.Creator<MarkerViewOptions> CREATOR
            = new Parcelable.Creator<MarkerViewOptions>() {
        public MarkerViewOptions createFromParcel(Parcel in) {
            return new MarkerViewOptions(in);
        }

        public MarkerViewOptions[] newArray(int size) {
            return new MarkerViewOptions[size];
        }
    };

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        MarkerViewOptions that = (MarkerViewOptions) o;

        return marker != null ? marker.equals(that.marker) : that.marker == null;

    }

    @Override
    public int hashCode() {
        return marker != null ? marker.hashCode() : 0;
    }
}