過去 2 日間IllegalArgumentException
、住所から座標を取得しようとしたり、逆に経度と緯度から住所を取得しようとしたりするときに、Android コードでエラーが発生して頭がおかしくなりました。これはコードですが、エラーが表示されません。これは、Google 検索で簡単に見つかる標準的なコード スニペットです。
public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
GeoPoint g = null;
try {
System.out.println("str addres: " + strAddress);
List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
if (addresses.size() > 0) {
g = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6)
);
}
} catch (Exception e) {
throw new IllegalArgumentException("locationName == null");
}
return g;
}
これらは、manifest.xml ファイルのアクセス許可です。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Google API キーも宣言しています。<uses-library android:name="com.google.android.maps" />
上記のコード スニペットから、geocoder
is は notnull
であり、address
orもありません。appContext
ここでつまずきます:geocoder.getFromLocationName(strAddress, 5);
私は多くの Google 検索を行いましたが、機能するものは何も見つかりませんでした。私が見つけた最も重要な情報は次のとおりです。
Geocoder クラスには、コア Android フレームワークに含まれていないバックエンド サービスが必要です。
すっごく、私は今混乱しています。これを機能させるには、コードで何を呼び出し、インポート、追加、使用する必要がありますか? 私は Google API 2.2、API レベル 8 を使用しています。誰かがこれに対する解決策やドキュメントへのポインタを見つけた場合、私が発見できなかったものを教えてください。