JavaでAndroidアプリケーション、Google Maps APIを使ったものを作っています。
このMapがなかなか出ない。
サーバーの認証に時間がかかるせいなのか?なぜか最初すんなり出ない、というような書き込みを見かけたので、
- Googleのアカウントを2つ取得し、それぞれにAPI Keyを取得してみたり、
- .android\debug.keystoreではなく、自分でkeytoolでフィンガープリントを生成したり
- そうして何度かKeyを変えて、クリーンしたり、エミュレータからアンインストールしたり…
結局、.android\debug.keystoreのキーで、地図が表示されました。
Geocoder
ところが、DBから住所を取り出して、その住所の場所を地図上に表示する、というところで、「住所の取得に失敗しました」と終ってしまいます。
日本の住所でも、N.Y.の住所でもダメ。Geocoder.getFromLocationName("住所",候補件数) で、 IOException:Service not availableが発生。 これは住所の問題ではない
なぜだか、Geocoderが、Google Maps APIのクラスだと思い込んでいて、検索していたので、余計な時間がかかってしまった。
Google Maps API for Androidのリファレンスに、Geocoderはありません。Androidの標準ライブラリだもの。
改めて、android.location.Geocoderで探すと、Android2.2のエミュレータではダメで、2.1なら動くよというやり取りを発見。
それでは2.2より上のバージョンなら解決しているのか?ということで、上から順に試してみました。
3.0は、そもそも私の環境では、WindowsXP / Windows7(64) どちらも、メモリ2GBですが、メモリ不足で満足に動きませんでした。
2.3.3、2.3.1、2.2 全て、Service not available 2.X台の 2.2以上は未対応らしい。
2.1で、住所の文字列から地図上の住所の候補、緯度経度を取得できました