我有以下问题: 我写了一个函数来确定作为字符串参数传递的街道的确切位置:
private GeoPoint LocationToGeoPointParser(String address) throws IOException
{
Geocoder geoCoder = new Geocoder(this.context,Locale.ENGLISH);
List<Address> addr = null;
addr = geoCoder.getFromLocationName(address, 1);
double la = addr.get(0).getLatitude();
double lo = addr.get(0).getLongitude();
Double longitude = addr.get(0).getLongitude()*1E6;
Double latitude = addr.get(0).getLatitude()*1E6;
return new GeoPoint(latitude.intValue(),longitude.intValue());
//return new GeoPoint(73,32);
}
如果我以这种方式使用这个功能,当加载地图时,一切都工作得非常慢。如果我评论地理编码代码并使用返回新的GeoPoint(73,32),它正常工作。 有人可以解释一下为什么地理编码会减慢我的应用程序速度吗? 谢谢! :)
答案 0 :(得分:2)
Geocoder类需要一个未包含在核心android框架中的后端服务。如果平台中没有后端服务,则Geocoder查询方法将返回空列表。
使用Handler
或AsyncTask
之类的线程来调用背景,然后更改用户界面
答案 1 :(得分:0)
我没有使用Android API,但我想地理编码会调用某种类型的Google网络服务来执行地理编码并返回结果。由于这涉及网络通信,并且getFromLocationName()方法似乎是阻塞的,因此从移动互联网连接中体验延迟也许并非不合理。如果你快速连续调用你的方法,就会有更多的延迟时间..
当然,这是假设我是正确的,并且地理编码是在某个地方的服务器上完成的。