0

特定のジオポイントの住所を取得しようとしていますが、try and catchを使用して取得しようとすると、失敗します。これが私のコードです。

 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();
        }

この行では失敗します リストaddresses=geocoder.getFromLocation(srcGeoPoint.getLatitudeE6()/ 1E6、srcGeoPoint.getLongitudeE6()/ 1E6,1); 何か助けは?

4

3 に答える 3

2

ここで詳しく説明するように、ジオコーダーはエミュレーターで機能しません: geocoder.getFromLocationNameはエミュレーターで機能しませんか?

私も自分で実装しましたが、実際にはエミュレーターではなく、デバイスで実装します。

于 2012-06-30T14:17:47.550 に答える
1

私にはまだ回答を承認する権限がありませんが、Diegoは100%正しいです。ジオコーダーは、デバッグする場合に実際のデバイスを使用する必要があるエミュレーターでは機能しません。私を信じてください、私が何が悪いのかを見つけるまで、壁に頭をぶつけるのに最も長い時間がかかりました。ですから、脳震盪を起こさないように、実際のデバイスを使用するだけで、自分に有利に働きましょう。

于 2012-06-30T14:49:48.117 に答える
0

これらをdoubleにキャストします。

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 に答える