【发布时间】:2010-03-11 21:14:20
【问题描述】:
我正在尝试在尽可能短的时间内确定设备的最准确位置。
我将数据存储为地理点,并将其显示在地图视图上。
上次我在设备上激活 GPS 并让它获得位置锁定时,我距离现在的位置大约 80 英里。
我有一个位置管理器设置和一个位置监听器。
如果我这样做,我会得到 NULL。
myLocOverlay = new MyLocationOverlay(this, mapView);
GeoPoint test = myLocOverlay.getMyLocation();
但在接下来的几行中;
myLocOverlay.enableMyLocation();
mapView.getOverlays().add(myLocOverlay);
这样,地图上的叠加层会显示当前位置。它正在使用网络提供商,但也在尝试获取 GPS 定位(它不能,因为我在室内并且没有靠近顶层的地方)。
如果我这样构建地理点;
if(lm.getLastKnownLocation("gps") != null)
{
test = new GeoPoint(
(int) (lm.getLastKnownLocation("gps").getLatitude() * 1E6),
(int) (lm.getLastKnownLocation("gps").getLongitude() * 1E6));
}
else
{
if(lm.getLastKnownLocation("network") != null)
{
test = new GeoPoint(
(int) (lm.getLastKnownLocation("network").getLatitude() * 1E6),
(int) (lm.getLastKnownLocation("network").getLongitude() * 1E6));
}
//bad things
}
然后我得到令人困惑的结果。如果我禁用设备 GPS 提供程序,则代码将移至网络提供程序并给我一个相当准确的结果。如果我启用 GPS 提供程序,那么地理点会作为我允许设备获得 GPS 锁定的最后一个位置返回。
我想避免上面的结果,所以正在考虑使用;
GeoPoint test = myLocOverlay.getMyLocation();
但正如我上面所说,我只是从中得到 NULL。
没有从 GPS 和网络获取地理点,然后比较它们,如果它是说 1 英里以外的网络位置,则忽略 GPS 结果 - 我有点卡住了。为什么 getMyLocation() 不起作用,不应该返回 myLocOverlay 在地图视图上显示的 GeoPoint?
【问题讨论】:
-
请注意,您也可以致电
Location.getTime()来查看何时发现“最后已知”位置。
标签: android gps location android-mapview overlays