public class Location
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.location.Location |
代表地理位置的数据类。
一个位置可以包含纬度,经度,时间戳和其他信息,如方位,高度和速度。
由 LocationManager
生成的所有位置都保证具有有效的纬度,经度和时间戳(UTC时间和启动以来的实时实时时间),所有其他参数都是可选的。
Constants |
|
---|---|
int |
FORMAT_DEGREES 常量用于以“[+ - ] DDD.DDDDD格式指定经度或纬度的格式,其中D表示度数。 |
int |
FORMAT_MINUTES 常量用于以“[+ - ] DDD:MM.MMMMM”的形式指定经度或纬度的格式,其中D表示度数,M表示弧的分钟数(1分钟= 1/60度)。 |
int |
FORMAT_SECONDS 常量用于以“DDD:MM:SS.SSSSS”的形式指定经度或纬度的格式,其中D表示度数,M表示弧的分钟数,S表示弧的秒数(1分钟= 1/60度, 1秒= 1/3600度)。 |
Inherited constants |
---|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<Location> |
CREATOR |
Public constructors |
|
---|---|
Location(String provider) 使用指定的提供者构建新的位置。 |
|
Location(Location l) 构建一个从现有的位置对象复制的新位置对象。 |
Public methods |
|
---|---|
float |
bearingTo(Location dest) 当沿着这个位置和给定位置之间的最短路径行进时,返回真北方东方的近似初始方位。 |
static double |
convert(String coordinate) 将FORMAT_DEGREES,FORMAT_MINUTES或FORMAT_SECONDS描述的格式之一转换为双精度型。 |
static String |
convert(double coordinate, int outputType) 将坐标转换为字符串表示形式。 |
int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
static void |
distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results) 计算两个位置之间的大致距离(以米为单位),以及可选的两个位置之间最短路径的初始和最终方位。 |
float |
distanceTo(Location dest) 返回此位置与给定位置之间的近似距离(以米为单位)。 |
void |
dump(Printer pw, String prefix) |
float |
getAccuracy() 以米为单位获取此位置的估计准确度。 |
double |
getAltitude() 如果可用,请获取高度,WGS 84参考椭球面以上的高度。 |
float |
getBearing() 以度为单位获得轴承。 |
long |
getElapsedRealtimeNanos() 从系统引导开始,实时返回此修复程序的时间。 |
Bundle |
getExtras() 将有关位置修复程序的其他提供程序特定信息作为捆绑包返回。 |
double |
getLatitude() 以度为单位获取纬度。 |
double |
getLongitude() 获取经度,以度为单位。 |
String |
getProvider() 返回生成此修复程序的提供程序的名称。 |
float |
getSpeed() 如有可用,以米/秒为单位获得速度。 |
long |
getTime() 返回此修复程序的UTC时间,以毫秒为单位,自1970年1月1日起。 |
boolean |
hasAccuracy() 如果此位置有准确性,则为真。 |
boolean |
hasAltitude() 如果此位置有高度,则为真。 |
boolean |
hasBearing() 如果此位置有轴承,则为真。 |
boolean |
hasSpeed() 如果这个位置有速度,则为真。 |
boolean |
isFromMockProvider() 如果位置来自模拟提供者,则返回true。 |
void |
removeAccuracy() 从这个位置删除准确性。 |
void |
removeAltitude() 从此位置移除高度。 |
void |
removeBearing() 从这个位置移除轴承。 |
void |
removeSpeed() 从这个位置移除速度。 |
void |
reset() 清除位置的内容。 |
void |
set(Location l) 将位置的内容设置为给定位置的值。 |
void |
setAccuracy(float accuracy) 设置此位置的估计精度,米。 |
void |
setAltitude(double altitude) 设置WGS 84参考椭球面以上的高度。 |
void |
setBearing(float bearing) 以度为单位设置轴承。 |
void |
setElapsedRealtimeNanos(long time) 从系统引导开始,设置此修复的实时时间。 |
void |
setExtras(Bundle extras) 将与此修复相关的额外信息设置为给定的Bundle。 |
void |
setLatitude(double latitude) 以度为单位设置纬度。 |
void |
setLongitude(double longitude) 以度为单位设置经度。 |
void |
setProvider(String provider) 设置生成此修复程序的提供程序的名称。 |
void |
setSpeed(float speed) 设置速度,以米/秒为单位。 |
void |
setTime(long time) 设置此修复程序的UTC时间,以毫秒为单位,自1970年1月1日起。 |
String |
toString() 返回对象的字符串表示形式。 |
void |
writeToParcel(Parcel parcel, int flags) 将此对象平铺到一个包裹中。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
int FORMAT_DEGREES
常量用于以“[+ - ] DDD.DDDDD格式指定经度或纬度的格式,其中D表示度数。
常量值:0(0x00000000)
int FORMAT_MINUTES
常量用于以“[+ - ] DDD:MM.MMMMM”的形式指定经度或纬度的格式,其中D表示度数,M表示弧的分钟数(1分钟= 1/60度)。
常数值:1(0x00000001)
int FORMAT_SECONDS
常量用于以“DDD:MM:SS.SSSSS”的形式指定经度或纬度的格式,其中D表示度数,M表示弧的分钟数,S表示弧的秒数(1分钟= 1/60度, 1秒= 1/3600度)。
常量值:2(0x00000002)
Location (String provider)
使用指定的提供者构建新的位置。
默认时间,经度和纬度为0,并且该位置没有方位,高度,速度,准确度或附加值。
Parameters | |
---|---|
provider |
String : the name of the provider that generated this location |
float bearingTo (Location dest)
当沿着这个位置和给定位置之间的最短路径行进时,返回真北方东方的近似初始方位。 最短路径使用WGS84椭球定义。 (几乎)对映的位置可能会产生无意义的结果。
Parameters | |
---|---|
dest |
Location : the destination location |
Returns | |
---|---|
float |
the initial bearing in degrees |
double convert (String coordinate)
将FORMAT_DEGREES,FORMAT_MINUTES或FORMAT_SECONDS描述的格式之一转换为双精度型。 此转换是在区域设置不可知的方法中执行的,因此不保证与convert(double, int)
。
Parameters | |
---|---|
coordinate |
String
|
Returns | |
---|---|
double |
Throws | |
---|---|
NullPointerException |
if coordinate is null |
IllegalArgumentException |
if the coordinate is not in one of the valid formats. |
String convert (double coordinate, int outputType)
将坐标转换为字符串表示形式。 outputType可以是FORMAT_DEGREES,FORMAT_MINUTES或FORMAT_SECONDS中的一种。 坐标必须是-180.0到180.0之间的有效双精度。 此转换在依赖于默认区域设置的方法中执行,因此不保证与convert(String)
一起convert(String)
。
Parameters | |
---|---|
coordinate |
double
|
outputType |
int
|
Returns | |
---|---|
String |
Throws | |
---|---|
IllegalArgumentException |
if coordinate is less than -180.0, greater than 180.0, or is not a number. |
IllegalArgumentException |
if outputType is not one of FORMAT_DEGREES, FORMAT_MINUTES, or FORMAT_SECONDS. |
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
void distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
计算两个位置之间的大致距离(以米为单位),以及可选的两个位置之间最短路径的初始和最终方位。 距离和方位使用WGS84椭球定义。
计算出的距离存储在结果[0]中。 如果结果长度大于或等于2,则初始方位将存储在结果[1]中。 如果结果长度为3或更大,则最终方位将存储在结果[2]中。
Parameters | |
---|---|
startLatitude |
double : the starting latitude |
startLongitude |
double : the starting longitude |
endLatitude |
double : the ending latitude |
endLongitude |
double : the ending longitude |
results |
float : an array of floats to hold the results |
Throws | |
---|---|
IllegalArgumentException |
if results is null or has length < 1 |
float distanceTo (Location dest)
返回此位置与给定位置之间的近似距离(以米为单位)。 距离使用WGS84椭球定义。
Parameters | |
---|---|
dest |
Location : the destination location |
Returns | |
---|---|
float |
the approximate distance in meters |
float getAccuracy ()
以米为单位获取此位置的估计准确度。
我们将准确度定义为68%置信度的半径。 换句话说,如果您绘制一个以该位置的经度和纬度为中心的圆,其半径等于精度,则真实位置在圆内的概率为68%。
以统计学术语来说,假定位置误差是随机的,且具有正态分布,所以68%置信圈表示一个标准偏差。 请注意,在实践中,位置错误并不总是遵循如此简单的分布。
这种精度估算只涉及水平精度,并不表示方位精度,速度或高度(如果包含在此位置)。
如果这个位置没有准确性,则返回0.0。 由LocationManager
生成的所有位置LocationManager
包含准确性。
Returns | |
---|---|
float |
double getAltitude ()
如果可用,请获取高度,WGS 84参考椭球面以上的高度。
如果这个位置没有高度,则返回0.0。
Returns | |
---|---|
double |
float getBearing ()
以度为单位获得轴承。
方位是该设备的水平行进方向,与设备方向无关。 如果设备具有轴承,则保证在范围内(0.0,360.0)。
如果这个位置没有轴承,则返回0.0。
Returns | |
---|---|
float |
long getElapsedRealtimeNanos ()
从系统引导开始,实时返回此修复程序的时间。
此值可以与elapsedRealtimeNanos()
进行可靠比较,以计算修复的时间并比较位置修复。 这是可靠的,因为经过实时保证每个系统启动都是单调的,并且即使在系统处于深度睡眠时也会继续增加(与getTime()
不同)。
由 LocationManager
生成的所有位置都保证具有有效的实时实时数据。
Returns | |
---|---|
long |
elapsed real-time of fix, in nanoseconds since system boot. |
Bundle getExtras ()
将有关位置修复程序的其他提供程序特定信息作为捆绑包返回。 密钥和值由提供者决定。 如果没有可用的附加信息,则返回null。
下面列出了许多常用的键/值对。 使用此列表中的任何密钥的提供商必须按照以下说明提供相应的值。
Returns | |
---|---|
Bundle |
double getLatitude ()
以度为单位获取纬度。
由 LocationManager
生成的所有位置将具有有效的纬度。
Returns | |
---|---|
double |
double getLongitude ()
获取经度,以度为单位。
由 LocationManager
生成的所有位置将具有有效的经度。
Returns | |
---|---|
double |
String getProvider ()
返回生成此修复程序的提供程序的名称。
Returns | |
---|---|
String |
the provider, or null if it has not been set |
long getTime ()
返回此修复程序的UTC时间,以毫秒为单位,自1970年1月1日起。
请注意,设备上的UTC时间不是单调的:它可以不可预测地向前或向后跳转。 所以在计算时间增量时总是使用getElapsedRealtimeNanos()
。
另一方面, getTime()
对于向用户显示人类可读时间或在重新启动或跨设备时仔细比较位置修复很有用。
由 LocationManager
生成的所有位置都保证具有有效的UTC时间,但请记住自生成位置以来系统时间可能已更改。
Returns | |
---|---|
long |
time of fix, in milliseconds since January 1, 1970. |
boolean hasAccuracy ()
如果此位置有准确性,则为真。
由 LocationManager
生成的所有位置都具有准确性。
Returns | |
---|---|
boolean |
boolean isFromMockProvider ()
如果位置来自模拟提供者,则返回true。
Returns | |
---|---|
boolean |
true if this Location came from a mock provider, false otherwise |
void removeAccuracy ()
从这个位置删除准确性。
在此调用之后, hasAccuracy()
将返回false,而 getAccuracy()
将返回0.0。
void removeAltitude ()
从此位置移除高度。
在此调用之后, hasAltitude()
将返回false,并且 getAltitude()
将返回0.0。
void removeBearing ()
从这个位置移除轴承。
在此调用之后, hasBearing()
将返回false,并且 getBearing()
将返回0.0。
void removeSpeed ()
从这个位置移除速度。
在此调用 hasSpeed()
将返回false,并且 getSpeed()
将返回0.0。
void setAccuracy (float accuracy)
设置此位置的估计精度,米。
准确度的定义见 getAccuracy()
。
在此调用后 hasAccuracy()
将返回true。
Parameters | |
---|---|
accuracy |
float
|
void setAltitude (double altitude)
设置WGS 84参考椭球面以上的高度。
在此调用后 hasAltitude()
将返回true。
Parameters | |
---|---|
altitude |
double
|
void setBearing (float bearing)
以度为单位设置轴承。
方位是该设备的水平行进方向,与设备方向无关。
输入将被包裹到范围(0.0,360.0)中。
Parameters | |
---|---|
bearing |
float
|
void setElapsedRealtimeNanos (long time)
从系统引导开始,设置此修复的实时时间。
Parameters | |
---|---|
time |
long : elapsed real-time of fix, in nanoseconds since system boot. |
void setExtras (Bundle extras)
将与此修复相关的额外信息设置为给定的Bundle。
Parameters | |
---|---|
extras |
Bundle
|
void setLatitude (double latitude)
以度为单位设置纬度。
Parameters | |
---|---|
latitude |
double
|
void setLongitude (double longitude)
以度为单位设置经度。
Parameters | |
---|---|
longitude |
double
|
void setProvider (String provider)
设置生成此修复程序的提供程序的名称。
Parameters | |
---|---|
provider |
String
|
void setSpeed (float speed)
设置速度,以米/秒为单位。
在此调用后 hasSpeed()
将返回true。
Parameters | |
---|---|
speed |
float
|
void setTime (long time)
设置此修复程序的UTC时间,以毫秒为单位,自1970年1月1日起。
Parameters | |
---|---|
time |
long : UTC time of this fix, in milliseconds since January 1, 1970 |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void writeToParcel (Parcel parcel, int flags)
将此对象平铺到一个包裹中。
Parameters | |
---|---|
parcel |
Parcel : The Parcel in which the object should be written. |
flags |
int : Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . |