试图从GPS或Android中的网络获取最准确的设备位置
作者:互联网
我正在尝试在尽可能短的时间内确定设备的最准确位置.
我将数据存储为地理位置,并将其显示在mapview上.
上一次我在设备上激活GPS并使其获得位置锁定时,距离现在的位置约80英里.
我有一个位置管理器设置和一个位置侦听器.
如果这样做,我将得到NULL.
myLocOverlay = new MyLocationOverlay(this, mapView);
GeoPoint test = myLocOverlay.getMyLocation();
但在接下来的几行中;
myLocOverlay.enableMyLocation();
mapView.getOverlays().add(myLocOverlay);
这样,地图上的叠加层就会显示当前位置.它使用的是网络提供商,但也尝试获取GPS修复(因为我在室内,而且在顶层附近也无法使用).
如果我像这样构造geopoint;
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?
解决方法:
由于尚未获得修复,它可能返回null.您应该注册一个LocationListener,它接受来自网络和GPS源的更新.然后,当您获得位置更新时,您可以查看位置的准确性并决定是否要使用它.
标签:gps,location,android-mapview,overlays,android 来源: https://codeday.me/bug/20191024/1918561.html