Android Geocoder - 从不同的地理位置调用时的结果不同

时间:2011-04-05 23:40:35

标签: android geolocation

我的Android程序中有以下代码

List<Address> addressList = geoCoder.getFromLocation(37.790551,-122.433931, 1);
if (!addressList.isEmpty()) {
            address = addressList.get(0);
            String number = address.getSubThoroughfare();
            String streetName = address.getThoroughfare();
.....
}

这是要求从旧金山的经纬度获得街道名称(因此1)。

当我在欧洲(特别是爱尔兰)的手机上执行此程序时,number将返回2250-2290streetname将返回Fillmore St

当我让朋友在加利福尼亚州的手机上运行相同的代码numbernullstreetname仍为Fillmore st

我已经看到其他SO问题提到区域设置但是地理位置可能会影响Android API中的查询吗?

Javascript Geocoding API提到了区域偏见。我想知道在Android API中可以做类似的事情。我确实尝试创建Geocoder

Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.US);

但这不会重新创建基于加州的结果。

2 个答案:

答案 0 :(得分:1)

从让人们在不同的大陆上运行相同的代码,似乎位置确实是一个因素。 Javascript geocoding允许您指定region

答案 1 :(得分:0)

手机是否运行不同版本的Android?另外,要记住的另一件事是“Geocoder类需要一个未包含在核心android框架中的后端服务。”因此,如果这两部手机正在调用不同的后端服务来查询地理编码器,那么这可能会解释您所看到的输出。

我认为在Android 1.5中,它们包含了Geocoder的Google API后端服务实现。我不知道Android和Google API的新版本是否对Geocoder实施进行了更改,可能会给您带来不同的结果,或者来自其他一些后端服务。