0

我正在尝试获取特定地理点的地址,但是当我尝试使用 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();
        }

它在这一行失败 List addresses=geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/1E6, srcGeoPoint.getLongitudeE6()/1E6,1); 有什么帮助吗??

4

3 回答 3

2

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

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

于 2012-06-30T14:17:47.550 回答
1

我还没有批准答案的权力,但 Diego 是 100% 正确的,地理编码器在模拟器上不起作用,如果你想调试它,你必须使用真实设备。相信我,直到我发现出了什么问题,我才用了最长的时间把头撞在墙上。所以帮自己一个忙,这样你就不会受到脑震荡,只需使用真实的设备

于 2012-06-30T14:49:48.117 回答
0

您可以将这些转换为双打:

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

完整代码:

List addresses=geocoder.getFromLocation((double) (srcGeoPoint.getLatitudeE6()/1E6), (double) (srcGeoPoint.getLongitudeE6()/1E6),1);
于 2012-06-30T14:21:04.803 回答