【问题标题】:Android: Why does a new instance of Location require a provider?Android:为什么新的 Location 实例需要提供程序?
【发布时间】:2014-05-07 21:44:36
【问题描述】:

我有很多在线存储的经纬度地理数据,我想使用 distanceTo 方法而不是我自己的半正弦公式。

所以我需要将每条记录放入 Location 字段中,但这是我的问题:它需要一个“provider”字符串。为什么? Android 将如何处理这些信息?

    for (ArrayList<String> item : Places_Data) {
        Location itemloc = new Location("provider");
        itemloc.setLatitude(latIn);
        itemloc.setLongitude(lonIn);
        //do something with my new location
    }

【问题讨论】:

  • 没有getDistance() 方法——我假设你的意思是distanceTo()Location 上的 distanceBetween() 静态方法使用简单的 double 值,可能是您更好的选择。
  • 对不起,你是对的。我会编辑。

标签: java android constructor location


【解决方案1】:

Location 的源代码来看,它不使用字符串来做任何有意义的事情。它只是在内部使用它来描述Location。如果您执行Location#toString(),它会打印出坐标、提供者和其他详细信息(准确性等)。这就是它的全部用途,内部描述。

您可以使提供者成为任何东西,如以下答案所示:Creating Android Location Object

【讨论】:

    【解决方案2】:

    正确使用方式

    package android.location.LocationManager
    Location location = new Location(LocationManager.GPS_PROVIDER);
    

    使用 NETWORK_PROVIDER 或 GPS_PROVIDER

    https://developer.android.com/reference/android/location/LocationManager.html#GPS_PROVIDER

    https://developer.android.com/reference/android/location/LocationManager.html#NETWORK_PROVIDER

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2017-06-26
      相关资源
      最近更新 更多