1 package geo.google.datamodel;
2
3 import java.io.Serializable;
4
5 import org.apache.commons.lang.builder.EqualsBuilder;
6 import org.apache.commons.lang.builder.HashCodeBuilder;
7 import org.apache.commons.lang.builder.ToStringBuilder;
8 /***
9 * A geographic location defined by longitude, latitude, and (optional) altitude.
10 * {@link http://code.google.com/apis/kml/documentation/kml_tags_21.html}
11 * @author jliang
12 *
13 */
14 public class GeoCoordinate implements Serializable, Cloneable{
15 private static final long serialVersionUID = 1060639455041268729L;
16 private double _latitude = -1d;
17 private double _longitude = -1d;
18 private GeoAltitude _altitude = new GeoAltitude();
19
20 public GeoCoordinate() {}
21
22 public GeoCoordinate(double longitude, double latitude, GeoAltitude altitude) {
23 _latitude = latitude;
24 _longitude = longitude;
25 _altitude = altitude;
26 }
27 public double getLatitude() {
28 return _latitude;
29 }
30 public void setLatitude(double latitude) {
31 _latitude = latitude;
32 }
33 public double getLongitude() {
34 return _longitude;
35 }
36 public void setLongitude(double longitude) {
37 _longitude = longitude;
38 }
39 /***
40 * Altitude in meters above sea level.
41 * @return
42 */
43 public GeoAltitude getAltitude() {
44 return _altitude;
45 }
46 public void setAltitude(GeoAltitude altitude) {
47 _altitude = altitude;
48 }
49
50 /***
51 * Returns the distance (in miles) between this geo coordinate and another geo coordinate.
52 * (This uses spherical law of cosines formula in {@link GeoUtils} )
53 * <br>
54 * Note the altitude is not being considered.
55 */
56 public double distanceTo(GeoCoordinate other){
57 return GeoUtils.distanceBetweenInMiles(this, other);
58 }
59 @Override
60 public GeoCoordinate clone(){
61 return new GeoCoordinate(_longitude, _latitude, _altitude.clone());
62 }
63
64 @Override
65 public boolean equals(Object o) {
66 return EqualsBuilder.reflectionEquals(this, o);
67 }
68
69 @Override
70 public int hashCode() {
71 return HashCodeBuilder.reflectionHashCode(this);
72 }
73
74 @Override
75 public String toString() {
76 return ToStringBuilder.reflectionToString(this);
77 }
78 }