其他分享
首页 > 其他分享> > 试图从GPS或Android中的网络获取最准确的设备位置

试图从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