Androidがどのように動作するかを知りたがってから、私は最初のアプリケーションを作成することにしました:ユーザーが提供するアドレスから簡単なEditText
ウィジェットを使ってGMapを表示する単純なアプリケーション。
私はそれを行うためにGeocoder
を使用します。 logcatで少しバグ追跡後ジオコーダでRPCエラーが発生する
は、ここにADBによって返された例外です:
E/LocationMasfClient( 53): forwardGeocode(): RPC failed with status 1
W/System.err( 262): java.io.IOException: RPC failed with status 1
W/System.err( 262): at android.location.Geocoder.getFromLocationName(Geocoder.java:166)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.testGeoCoder(MapViewActivity.java:104)
W/System.err( 262): at fr.meetopia.tinymap.MapViewActivity.onCreate(MapViewActivity.java:38)
W/System.err( 262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err( 262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
W/System.err( 262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
W/System.err( 262): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
W/System.err( 262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
そして今、ここでは、スタックトレースが指すコードです:
明らかGeocoder geoCoder = new Geocoder(this);
MapView mapView = (MapView) findViewById(R.id.mapview);
MapController mc = mapView.getController();
GeoPoint p;
try {
List<Address> addresses = geoCoder.getFromLocationName("paris france", 50);
if (addresses.size() > 0) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mc.animateTo(p);
mapView.invalidate();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
、このコードがありますMapActivity
インスタンシエーションの一部。
Google APIS(8,7,4)のさまざまなバージョンと SDKプラットフォーム(2.2,2.1,1.6)のさまざまなバージョンでいくつかのテストを行いましたが、運はありません。 Google API 8に既知のバグがあり、RPC Failed 1
の代わりにService Unavailable Exception
が返されたことに気がつきました。
一方、自分のデバイス(HTC Desire 2.1)で直接アプリケーションを実行しようとしたところ、同じ動作(つまり、動作していない、中心の米国マップ)に気付きました。ここで
は、Androidマニフェストのユーザー権限来る:私のジオコーディング機能、そのGoogleのAPIに細かい作業7.希望ザッツ<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
あなたは原因を見つけることができましたか?私はまったく同じ問題を抱えています! –
GoogleマップのAPIキーを正しく設定しましたか? Googleマップを使用せずにジオコーディングを使用することはできません。キーについてはこちらhttp://code.google.com/intl/de-DE/android/maps-api-signup.html – Stefan
ジオコーディングサービスが存在することを確認しましたか?例えばgeocoder.isPresent()はtrueを返しますか? – Kyle