http://codezine.jp/article/detail/4878?p=2
前回の続き。
マップアクティビティの呼び出し側はインテントで住所を突っ込んでいますが、呼ばれる側では見ていませんでした。
引き渡された住所をチェックして、マップの初期位置としてセットするにはMapView.getController().setCenter()などを使用しますが、この引数は経緯度で設定する必要があったりします。
そこで住所→経緯度への変換用にGeocorderというものが用意されています。
さっそく使ってみましょう。
/src/com.google.android.maps/MapActivity.java 
	public void onCreate(Bundle savedInstanceState) {
	
		/* ここに前回までの内容 */
		
		//Geocoder
		    Geocoder geocoder = new Geocoder( this, Locale.getDefault());
		//インテント
		    String strAddress = getIntent().getStringExtra( BizCard.COLUMN_ADDRESS);
		
		//Geocoderで住所からAddressへ変換
		    try {
		    	//最初の一件を取得
				List<Address> addressList = geocoder.getFromLocationName(strAddress, 1);
				Address address = null;
				address = addressList.get( 0);
				//目的地を設定
			        if( address != null){
			            setDist(address);
			        }
			} catch (Exception e) {
				Toast toast = Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG);
				toast.show();
			}
	}
/res/values/strings.xml
<string name="select_target">対象を選択してください</string> <string name="cannot_get_address">住所の取得に失敗しました</string>サンプルではいきなりいろいろやってますが、とりあえず最低限の、一件だけ取得して目的地をセットするという簡単な内容にしてみました。
ところが、検索文字列に何入れてもGeocoder.getFromLocationName()で100%Exceptionが発動するんだがなんだこれ。
getMessage()すると"Service not Available"って言われた。なんだこれ?
map.xmlのAPIキーをちがう値にしてみると地図の取得自体できないからAPIキーが間違っているということもなさそうだし。
http://groups.google.co.jp/group/android-developers/browse_thread/thread/b02c29d746471358/81f09bbc825ffb26?lnk=raot
> I have seen the same issue when I updated from 2.1 and API Level 7
> (where it works) to 2.2 API Level 8 (where it does not).
> Seems to be in the level 8 package. I also noticed quite a bit of
> slowdown in the map view scrolling after updating to 2.2.
日本語での同様な症状がまったく見つからない。
GoogleAPI4を入れ、サンプルとまったく同じ環境にして実行してみたがそれでも駄目でした。
本当にただ単にGoogleMapAPIが非対応になってただけだったりしたらどうしよう。
先に進めないのでBizCardアプリケーションは一旦中断。
残念。
Androidの記事
PR
							トラックバック
								トラックバックURL: