View Javadoc

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  }