summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/ProjectedMeters.java
blob: 06a58fe8ada03c99007945688882ee715367dfd9 (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
package com.mapbox.mapboxsdk.geometry;

import android.os.Parcel;
import android.os.Parcelable;

import java.io.Serializable;

/**
 * ProjectedMeters is a projection of longitude, latitude points in Mercator meters.
 * <p>
 * these have been projected into Mapbox GL's Mercator projection. Instead of decimal
 * degrees, it uses Mercator meters (which are notably not equivalent to SI meters)
 * except at the equator.
 * </p>
 */
public class ProjectedMeters implements IProjectedMeters, Parcelable {

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

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

    private double northing;
    private double easting;

    public ProjectedMeters(double northing, double easting) {
        this.northing = northing;
        this.easting = easting;
    }

    public ProjectedMeters(ProjectedMeters aProjectedMeters) {
        this.northing = aProjectedMeters.northing;
        this.easting = aProjectedMeters.easting;
    }

    protected ProjectedMeters(Parcel in) {
        northing = in.readDouble();
        easting = in.readDouble();
    }

    @Override
    public double getNorthing() {
        return northing;
    }

    @Override
    public double getEasting() {
        return easting;
    }

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

        ProjectedMeters projectedMeters = (ProjectedMeters) o;

        return Double.compare(projectedMeters.easting, easting) == 0 && Double.compare(projectedMeters.northing, northing) == 0;

    }

    @Override
    public int hashCode() {
        int result;
        long temp;
        temp = Double.doubleToLongBits(easting);
        result = (int) (temp ^ (temp >>> 32));
        temp = Double.doubleToLongBits(northing);
        result = 31 * result + (int) (temp ^ (temp >>> 32));
        return result;
    }

    @Override
    public String toString() {
        return "ProjectedMeters [northing=" + northing + ", easting=" + easting + "]";
    }

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

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeDouble(northing);
        out.writeDouble(easting);
    }
}