6

以前によく質問されたことはありますが、回答や検索結果から解決策を得ることができません。この問題をできるだけ早く解決する必要があります..ユーザーが入力したアドレスから緯度と経度を取得しようとしていますが、引き続き取得しています:

java.io.IOException: Unable to parse response from server 

私はこのコードを使用しています:

        Geocoder geocoder = new Geocoder(this ,Locale.getDefault());
        String newAddress = (String)saveas.getText().toString();
        List<Address> addresses = geocoder.getFromLocationName(newAddress, 1);

さまざまな方法で多くのことを試しましたが、何も機能しません...デフォルトのマップアプリケーションはうまく機能します。ユーザーがアドレスを入力すると、マップにそのアドレスが表示されます。どうすれば同じことができますか。

必要なすべての権限を追加し、実際のデバイス(バージョン2.3)でテストしています...

4

7 に答える 7

2

3G接続を試しましたか?Wi-Fiから複数の逆ジオロケーション要求を送信すると、しばらくするとIPがブロックされ、逆ジオロケーションがしばらく応答しないように見えることに気付きました。同様の問題が発生したときに、3Gに切り替えることでリクエストが機能しました。

于 2012-03-16T10:47:35.507 に答える
2

Samsung Galaxy Tab 10.1 でも同じ問題が発生しました。解決策を何時間も探しましたが、何も役に立ちませんでした。問題を解決するには、次のことを試してください。

場所の設定に移動して有効にします。

1.ワイヤレス ネットワークを使用する 2.GPS 衛星を使用する

GPS位置修正を待つ

この後、ジオコーダー サーバーが応答を開始します。ワイヤレスと GPS 位置情報を無効にしても、サーバーは引き続き機能します。ジオコーダーは、現在地を Google と共有している場合にのみ使用できると思います。

于 2012-10-15T09:59:38.007 に答える
2

コンテキストを変更して同じ問題を解決しました。

私はフラグメントを使用しているので、私のコードは次のようになります

    public class SearchRoteFragment extends Fragment{

        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.teste_mapa, container, false);
        context = getActivity();
...
}

ジオコードを呼び出すと、これを行います

Geocoder geoCoder = new Geocoder(context, Locale.getDefault());
于 2013-10-03T23:00:24.563 に答える
1

Geocoder の作成時に locale パラメータを設定すると便利な場合があります。

yourGeocoder = new Geocoder(this, Locale.CANADA); 

2 番目のパラメーターを最適な値に置き換えてください。

デフォルトのロケール値は、使用している地図の地域に対応していない可能性があると思います。

于 2011-11-05T15:02:50.243 に答える
0

私は Android 2.3.4 でテストしていて、「サーバーからの応答を解析できません」という例外を受け取りました。

Google マップが機能していることを確認してください。私のものは機能していませんでした。Google マップが機能し始めたら、Geocoder は問題ありませんでした。

「場所とセキュリティ」設定から「ワイヤレスネットワークを使用する」と「GPS衛星を使用する」を切り替えました。

于 2014-01-24T00:22:18.803 に答える
0

それが役立つかどうかはわかりませんが、以下は私のプロジェクトのスニペットです。ニーズに合わせて修正してください。

String newAddress = saveas.getText().toString();
searchFromLocationName(newAddress);


private void searchFromLocationName(String name){
 try {
  List<Address> result
  = myGeocoder.getFromLocationName(name, MAX_RESULT);

  if ((result == null)||(result.isEmpty())){
   Toast.makeText(AndroidgetFromLocationNameActivity.this,
     "No matches were found or there is no backend service!",
     Toast.LENGTH_LONG).show();
  }else{

   MyArrayAdapter adapter = new MyArrayAdapter(this,
         android.R.layout.simple_list_item_1, result);
   listviewResult.setAdapter(adapter);

   Toast.makeText(AndroidgetFromLocationNameActivity.this,
     "Finished!",
     Toast.LENGTH_LONG).show();
  }


 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  Toast.makeText(AndroidgetFromLocationNameActivity.this,
    "The network is unavailable or any other I/O problem occurs!",
    Toast.LENGTH_LONG).show();
 }
}
于 2011-10-31T12:06:12.600 に答える
0

電話が接続されておらず、サーバーから応答を取得できない可能性があります。

ここで説明したようにジオコーダー

throws IOException if the network is unavailable or any other I/O problem occurs
于 2013-05-01T22:16:23.013 に答える