地理编码减缓了一切?

时间:2011-07-28 11:19:38

标签: android google-maps geocoding

我有以下问题: 我写了一个函数来确定作为字符串参数传递的街道的确切位置:

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 个答案:

答案 0 :(得分:2)

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

使用HandlerAsyncTask之类的线程来调用背景,然后更改用户界面

答案 1 :(得分:0)

我没有使用Android API,但我想地理编码会调用某种类型的Google网络服务来执行地理编码并返回结果。由于这涉及网络通信,并且getFromLocationName()方法似乎是阻塞的,因此从移动互联网连接中体验延迟也许并非不合理。如果你快速连续调用你的方法,就会有更多的延迟时间..

当然,这是假设我是正确的,并且地理编码是在某个地方的服务器上完成的。