创建 Android 位置对象

Posted

技术标签:

【中文标题】创建 Android 位置对象【英文标题】:Creating Android Location Object 【发布时间】:2011-06-24 03:51:03 【问题描述】:

我正在使用 Geocoder 类通过以下代码获取多个位置对象:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
   List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
   Address[] addresses_array = new Address[addresses.size()];

    addresses.toArray(addresses_array);
    for( int i = 0; i < addresses_array.length; i++ )
       //create location object here
       locOBJ.setLatitude(LATITUDE);
       locOBJ.setLongitude(LONGITUDE);
    

此外,在 forloop 内部,我正在尝试动态创建位置对象以添加到数组中;

如何创建空白位置对象?

【问题讨论】:

【参考方案1】:

假设您引用android.location.Location 使用构造函数,该构造函数接受提供者字符串并将其设置为您想要的任何内容。

【讨论】:

谢谢,我没有意识到字符串可以是我选择的任何东西。文档说“位置(字符串提供者)” - 我一直想知道应该是什么提供者(gps,3G ...?) GPS 是一个提供商,“网络”是另一个提供商(这可能意味着 wifi mac 查找或最近的手机信号塔)。这些是 Location 对象的内置系统提供程序。由于提供(实例化)这些新 Location 对象的是您的代码,因此提供程序字符串完全取决于您。 嘿,我认为它实际上会验证和/或查询指定的提供程序。不错的,谢谢:) 非常糟糕的 Android 文档示例,在这方面浪费了相当长的时间。我的另一个问题是假设我提供了一个像 gps 这样的有效提供商,它会给我当前的位置吗?换句话说,它有什么意义。【参考方案2】:

这并不是它的真正用途,如果您想在谷歌地图上绘制东西,您可能需要查看GeoPoint 类。处理 Map OverlayItem 对象时必须使用 GeoPoint 类。您打算如何处理 Location 对象?此外,您应该在线程或 AsyncTask 中执行 getFromLocation 调用,因为它正在执行远程服务器调用。

使用 GeoPoint 类。

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
int size = addresses.size();
GeoPoint gp[] = new GeoPoint[size];
for(int i = 0; i<size; i++) 
   Address addr = addresses.get(i);
   gp[i] = new GeoPoint(addr.getLatitude()*1000000, 
                        address.getLongitude()*1000000);

这些值为 * 1000000,因为 GeoPoint 需要 E6 值。还要意识到,如果没有匹配,则数组的长度可能为 0。

【讨论】:

谢谢,你在异步类中这样做绝对是正确的。这将是我的下一步行动之一。现在我想在一个数组中收集多个位置对象,并用地图按钮关联每个位置对象。单击位置的地图按钮时,地图视图会打开并显示该位置。 那么你应该使用 Geopoint 类而不是 Location。更新了我的答案。 对不起,如果我很傻,但我只是尝试创建一个 Geopoint 对象,但该类未被识别。搜索这个论坛,我发现并尝试了以下内容: GeoPoint gp = GeoPointUtils.getGeoPoint(coords[0].trim(), coords[1].trim()); ..........??? GeoPoint 类是 Android Google Maps api 的一部分。它在我的答案中链接。 LatLong 类@RobbyPond 怎么样? developer.android.com/reference/com/google/android/gms/maps/…

以上是关于创建 Android 位置对象的主要内容,如果未能解决你的问题,请参考以下文章

Android 位置服务:我可以为 GPS 和网络位置使用单个位置侦听器吗?

android 怎么使用地图生成工具

Android 位置对象始终为空

android 动画属性动画

更多对象的CustomView android

Android - 未在 IntentService 中接收位置对象 - 使用 LocationServices FusedLocationApi requestLocationUpdates 使用未