001 package com.google.gwt.maps.client.base; 002 003 import com.google.gwt.core.client.JavaScriptObject; 004 005 /** 006 * LatLng is a point in geographical coordinates, latitude and longitude. 007 * 008 * Notice that although usual map projections associate longitude with the x-coordinate of the map, and latitude with the y-coordinate, the latitude coordinate is always written first, followed by the longitude. 009 * Notice also that you cannot modify the coordinates of a LatLng. If you want to compute another point, you have to create a new one. 010 * 011 * <br><br> 012 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#LatLng">LatLng API Doc</a> 013 */ 014 public class LatLng extends JavaScriptObject { 015 016 /** 017 * LatLng is a point in geographical coordinates, latitude and longitude. 018 */ 019 protected LatLng() {} 020 021 /** 022 * Notice the ordering of latitude and longitude. If the noWrap flag is true, then the numbers will be used as passed, otherwise latitude will be clamped to lie between -90° and +90 °, and longitude will be wrapped to lie between -180 ° and +180 °. 023 * @param lat 024 * @param lng 025 */ 026 public static LatLng newInstance(double lat, double lng) { 027 return newInstance(lat, lng, false); 028 } 029 030 /** 031 * Notice the ordering of latitude and longitude. If the noWrap flag is true, then the numbers will be used as passed, otherwise latitude will be clamped to lie between -90° and +90 °, and longitude will be wrapped to lie between -180 ° and +180 °. 032 * @param lat 033 * @param lng 034 * @param noWrap 035 */ 036 public static LatLng newInstance(double lat, double lng, boolean noWrap) { 037 return createJso(lat, lng, noWrap); 038 } 039 040 /** 041 * Notice the ordering of latitude and longitude. If the noWrap flag is true, then the numbers will be used as passed, otherwise latitude will be clamped to lie between -90° and +90°, and longitude will be wrapped to lie between -180° and +180°. 042 * LatLng(lat:number, lng:number, noWrap?:boolean) 043 * @return LatLng 044 */ 045 private static native LatLng createJso(double lat, double lng, boolean noWrap) /*-{ 046 return new $wnd.google.maps.LatLng(lat, lng, noWrap); 047 }-*/; 048 049 /** 050 * is equal? 051 * @param other 052 */ 053 public final native boolean equals(LatLng other) /*-{ 054 return this.equals(other); 055 }-*/; 056 057 /** 058 * get latitude 059 * @return double 060 */ 061 public final double getLatitude() { 062 return getLat(); 063 } 064 065 /** 066 * Returns the latitude in degrees. 067 * @return double 068 */ 069 private final native double getLat() /*-{ 070 return this.lat(); 071 }-*/; 072 073 /** 074 * Returns the longitude in degrees. 075 * @return double 076 */ 077 public final double getLongitude() { 078 return getLng(); 079 } 080 081 /** 082 * Returns the latitude in degrees. 083 * @return double 084 */ 085 private final native double getLng() /*-{ 086 return this.lng(); 087 }-*/; 088 089 /** 090 * Converts to string representation. 091 */ 092 public final native String getToString() /*-{ 093 return this.toString(); 094 }-*/; 095 096 /** 097 * Returns a string of the form "lat,lng" for this LatLng. We round the lat/lng values to 6 decimal places by default. 098 * @param precision 099 * @return String 100 */ 101 public final native String getToUrlValue(int precision) /*-{ 102 return this.toUrlValue(precision); 103 }-*/; 104 105 }