2012-07-18 114 views
1

我使用下面的代码来获取经度和纬度。总是依赖网络服务提供商很好吗?从网络读取经度和纬度

public static String getLatitudeLongitudeString() { 
    LocationManager lm = (LocationManager) GlobalApplication 
      .getAppContext().getSystemService(Context.LOCATION_SERVICE); 

    Location location = lm 
      .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

    if (location == null) { 
     return ""; 
    } else { 
     Geocoder geocoder = new Geocoder(GlobalApplication.getAppContext()); 
     try { 
      List<Address> user = geocoder.getFromLocation(
        location.getLatitude(), location.getLongitude(), 1); 
      double lat = (double) user.get(0).getLatitude(); 
      double lng = (double) user.get(0).getLongitude(); 
      return lat + "," + lng; 
     } catch (Exception e) { 
      Trace.e("Failed to get latitude and longitude", e); 
      return ""; 
     } 
    } 
} 

回答

1

老实说它“依赖”。但我会说审查this article并找出选项的最佳组合。您可能需要一个被动提供商(Froyo +)从其他应用程序捕获一些GPS更新......也取决于您使用的是哪个。如果它的地图应用程序,那么你想要的GPS,但如果它只是为“你在旧金山”类型的文字,那么准确性就不错了...

+0

文章真的很有见地。 – ssk 2012-07-21 22:08:17

+0

很高兴我能帮忙:) – 2012-07-22 18:28:23

0

它取决于Salil在你的用例中提到。换句话说,它将归结为您需要的位置详细信息的粒度。例如,如果您要编写天气应用程序,那么在大多数情况下,了解城市就足够了。如果您正在寻找随着用户移动而更新地图,那么您将需要很好的位置,最好由GPS提供商提供。