1

このスタック オーバーフローに関する記事や、リバース ジオコーディングに関するその他の関連記事をいくつか読みました。

タッチイベントから指定された緯度と経度の場所の名前を見つけるつもりでした。タッチ イベントから緯度と経度を取得しましたが、その地理座標から住所を取得できませんでした。try エリアではなく、例外を渡します。

コードは次のとおりです。

public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
     //---when user lifts his finger---
        //---when user lifts his finger---
         if (event.getAction() == 1) {
         GeoPoint p = mapView.getProjection().fromPixels(
         (int) event.getX(),
         (int) event.getY());
                  Toast.makeText(getBaseContext(),
         p.getLatitudeE6() / 1E6 + "," +
         p.getLongitudeE6() /1E6 ,
         Toast.LENGTH_SHORT).show();

         Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
         try {
         List<Address> addresses = geoCoder.getFromLocation(p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1);

         String strCompleteAddress= "";
         if (addresses.size() > 0)
         {
         for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
        strCompleteAddress+= addresses.get(0).getAddressLine(i) + "\n";
         }
         Log.i("MyLocTAG => ", strCompleteAddress);
         Toast.makeText(getBaseContext(), strCompleteAddress,            Toast.LENGTH_LONG).show();
         }
         catch (IOException e) {

         e.printStackTrace();
         Toast.makeText(getBaseContext(), "exception", Toast.LENGTH_LONG).show();
         }
         return true;
         }
         else
         return false;
     }
}   

解決策を教えてください。

4

2 に答える 2

3

エミュレーター 2.2 には、リバース ジオコーディングに関連するバグがあります。そのため、2.1 などのバージョンをダウンロードして試す必要があります。それは望ましい結果を提供します

于 2012-10-01T15:31:51.643 に答える
0

どのような例外がありますか?アプリにはインターネット権限がありますか?ジオコーダーが機能するには、これが必要になると確信しています(インターネット経由でGoogleサービスを呼び出すため)。

于 2012-09-23T18:40:50.820 に答える