0

地図をタッチするとマップアクティビティで国名を取得しようとしています。 私はAndroid: Reverse geocoding - getFromLocationを追ってきたし、ここに私のコードはonTouchEventにあります:地図アクティビティで国名をリクエストすると、サービスが利用できなくなります。

public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    { 
     //---when user lifts his finger--- 

     if (event.getAction() == 1) {     
      GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY()); 

      Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault()); 
      try { 
       List<Address> addresses = geoCoder.getFromLocation(p.getLatitudeE6()/1E6, p.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"; 
         add += addresses.get(0).getCountryName() + "\n"; 
        } 
       } 

       Toast.makeText(mContext, add, Toast.LENGTH_LONG).show(); 
      } 
      catch (IOException e) {     
       e.printStackTrace(); 
      } 
      return false; 
     } 
     else     
      return false; 
    } 

私が欲しいのは、ユーザーが指を持ち上げるときトーストがアドレスと国の名前が表示されるということです。アプリケーションが実行されると、エラーは表示されませんが、トーストも表示されません。ログキャットはjava.io.IOException: Service not Availableと表示されます。

最初にonTouchEventのコードにエラーがあると思っていましたので、トーストが表示されているかどうかを確認するためにこれを変更する実験を行いました。

public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
     // TODO Auto-generated method stub 
     if (event.getAction() == 1) { 
      GeoPoint p = mapView.getProjection().fromPixels((int)event.getX(), (int)event.getY()); 
      Toast.makeText(mContext, p.getLatitudeE6()/1E6 + ", " + p.getLongitudeE6()/1E6, Toast.LENGTH_SHORT).show(); 
     } 
     return false; 
    } 

トーストは完全ので、私はちょうど国名を取得したいとき、私はまだ間違っているのだろう緯度と経度を示しています。 そして、私はまだログキャットについて何も考えていません:サービスが利用できません。 リバースジオコーディングを行うときに制限はありますか?

答えて

0

私は、特定のポイントのlatとlngの完全なアドレスを取得できる代わりの方法があります。ちょうどlatとlngを下のGoogle mapsのURLに渡して、その特定のポイントの正確なアドレスをXMLで返しますフォーマット。

http://maps.google.com/maps/api/geocode/xml?address=

関連する問題