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 }