2011-07-28 29 views
1

我有以下问题: 我写了一个函数来确定作为字符串参数传递一条街的具体位置:地理编码放缓了一切?

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),则它正常工作。 有人可以解释为什么地理编码会减慢我的应用程序吗? 谢谢! :)

回答

2

Geocoder类需要一个未包含在核心android框架中的后端服务。如果平台中没有后端服务,Geocoder查询方法将返回一个空列表。

使用线程像HandlerAsyncTask等,以将调用,然后背景更改UI

+0

感谢。它的工作:) – Arkde

0

我没有用过Android的API,但我想,地理编码会召唤出某种其中做的谷歌Web服务地理编码并返回结果。由于这涉及到网络通信,并且getFromLocationName()方法似乎被阻塞,所以遇到延迟并非不合理,甚至可能来自移动互联网连接。如果你打电话给你的方法临门,会有延迟更房型..

当然,这是假设我是正确的和地理编码是某处的服务器上完成..

+0

感谢您的答案。似乎Geocoder类需要运行后端服务。 – Arkde

相关问题