0

文字列の住所行から緯度と経度を取得するサンプル アプリケーションを作成しました。これは、緯度と経度を取得するために使用した私の方法です

private void getFromLocation(String address) {
    Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
    try {
        List<Address> addresses = geoCoder.getFromLocationName(address, 1);

        if (addresses.size() > 0) {
            GeoPoint p = new GeoPoint(
                    (int) (addresses.get(0).getLatitude() * 1E6),
                    (int) (addresses.get(0).getLongitude() * 1E6));

            latitude = p.getLatitudeE6() / 1E6;
            longtitude = p.getLongitudeE6() / 1E6;
            HAMBURG = new LatLng(latitude, longtitude);
            Log.d("latitide", "" + latitude);
            Log.d("longtitude", "" + longtitude);

        } else {
            Log.d("Addess", "Address not found");
        }
    } catch (Exception ee) {
        Log.d("ex", ee.toString());
    }
}

このメソッドは例外 " " をスローしますjava.io.IOException: Unable to parse response from server 。私が犯した間違いはありますか?緯度と経度を取得する他の解決策はありますか?

4

2 に答える 2

0

IOException は、比較的低レベルの理由でリモート要求が失敗したことを示している可能性があります。

IOException: if the network is unavailable or any other I/O problem occurs


public List<Address> getFromLocationName (String locationName, int maxResults)

API レベル 1 で追加されました 名前付きの場所を記述することがわかっているアドレスの配列を返します。これは、「アイスランドのダルビック」などの地名、「1600 アンフィシアター パークウェイ、マウンテン ビュー、カリフォルニア州」などの住所、空港などです。 "SFO" などのコード。返されたアドレスは、このクラスのコンストラクターに提供されたロケールに合わせてローカライズされます。

クエリはブロックされ、返される値はネットワーク ルックアップによって取得されます。結果は最良の推測であり、意味があるか正しいかは保証されません。プライマリ UI スレッドとは別のスレッドからこのメソッドを呼び出すと便利な場合があります。

パラメーター

locationName: ユーザーが提供する場所の説明

maxResults:返される結果の最大数。小さい数字 (1 ~ 5) をお勧めします

戻り値:

Address オブジェクトのリスト。一致するものが見つからない場合、または利用可能なバックエンド サービスがない場合は、null または空のリストを返します。

スロー

IllegalArgumentException: locationName が null の場合

IOException: ネットワークが利用できない場合、またはその他の I/O 問題が発生した場合


だから、しなさい

1 分間に複数のアドレスがヒットしないようにしてください。このコードを別のデバイスで実行します。

詳細については、この記事を確認してください。

于 2013-04-22T06:49:00.593 に答える
0
     List<Address> foundGeocode = null;
   /* find the addresses  by using getFromLocationName() method with the given address*/
   try {
    foundGeocode = new Geocoder(MainActivity.this).getFromLocationName("Your location",1);
     Double s=foundGeocode.get(0).getLatitude(); //getting latitude
       Double n=foundGeocode.get(0).getLongitude();
        } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
        }
于 2013-04-22T06:57:03.157 に答える