使用Geocoder反转地址

时间:2012-06-30 13:26:47

标签: android google-maps reverse-geocoding

我正在尝试获取特定地址的地址但是当我尝试使用try并捕获它失败时。这是我的代码

 srcGeoPoint = new GeoPoint((int) (src_lat * 1E6),(int) (src_long * 1E6)); 

        Geocoder geocoder=new Geocoder(getBaseContext(), Locale.getDefault());
        try
        {
            List<Address> addresses=geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/1E6,
                    srcGeoPoint.getLongitudeE6()/1E6,1);
            String add="";
            if(addresses.size()>0)
            {
                for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); 
                        i++)
                      add += addresses.get(0).getAddressLine(i) + "\n";
            }
            tv.setText(add);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

这行失败了         列表地址= geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/ 1E6,                         srcGeoPoint.getLongitudeE6()/ 1E6,1); 任何帮助??

3 个答案:

答案 0 :(得分:2)

地理编码器在模拟器中不起作用,如下所述: Does geocoder.getFromLocationName not work on emulators?

我也实现了自己,它实际上不是在模拟器中,而是在设备上。

答案 1 :(得分:1)

我没有权力批准答案,但迭戈是100%正确的,如果你想调试它,地理编码器不适用于你必须使用真实设备的模拟器。相信我,我花了最长的时间撞到墙上,直到我发现了什么是错的。所以请帮个忙,这样你就不会受到脑震荡,只需使用真正的设备

答案 2 :(得分:0)

你会把这些转换为双打:

srcGeoPoint.getLatitudeE6()/1E6
srcGeoPoint.getLongitudeE6()/1E6

完整代码:

List addresses=geocoder.getFromLocation((double) (srcGeoPoint.getLatitudeE6()/1E6), (double) (srcGeoPoint.getLongitudeE6()/1E6),1);