我的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-2290
,streetname
将返回Fillmore St
。
当我让朋友在加利福尼亚州的手机上运行相同的代码number
时null
而streetname
仍为Fillmore st
。
我已经看到其他SO问题提到区域设置但是地理位置可能会影响Android API中的查询吗?
Javascript Geocoding API提到了区域偏见。我想知道在Android API中可以做类似的事情。我确实尝试创建Geocoder
Geocoder geoCoder = new Geocoder(getApplicationContext(), Locale.US);
但这不会重新创建基于加州的结果。
答案 0 :(得分:1)
从让人们在不同的大陆上运行相同的代码,似乎位置确实是一个因素。
Javascript geocoding允许您指定region
但
答案 1 :(得分:0)
手机是否运行不同版本的Android?另外,要记住的另一件事是“Geocoder类需要一个未包含在核心android框架中的后端服务。”因此,如果这两部手机正在调用不同的后端服务来查询地理编码器,那么这可能会解释您所看到的输出。
我认为在Android 1.5中,它们包含了Geocoder的Google API后端服务实现。我不知道Android和Google API的新版本是否对Geocoder实施进行了更改,可能会给您带来不同的结果,或者来自其他一些后端服务。