次のコードを使用して、Geocoderクラスを使用して複数のロケーションオブジェクトをフェッチしています。
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
Address[] addresses_array = new Address[addresses.size()];
addresses.toArray(addresses_array);
for( int i = 0; i < addresses_array.length; i++ ){
//create location object here
locOBJ.setLatitude(LATITUDE);
locOBJ.setLongitude(LONGITUDE);
}
さらに、forloop内で、配列に追加するロケーションオブジェクトを動的に作成しようとしています。
空白の場所オブジェクトを作成するにはどうすればよいですか?
Android.location.Location
を参照すると仮定すると、プロバイダー文字列を取得して任意の値に設定するコンストラクターを使用します。
それは実際には意図されたものではありません。グーグルマップに何かをプロットしようとしているなら、 GeoPoint クラスを調べたいと思うかもしれません。 Map OverlayItem オブジェクトを処理するときは、GeoPointクラスを使用する必要があります。 Locationオブジェクトで何をする予定ですか?また、リモートサーバー呼び出しを実行しているため、スレッドまたはAsyncTaskでgetFromLocation呼び出しを実行する必要があります。
geoPointクラスを使用します。
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
int size = addresses.size();
GeoPoint gp[] = new GeoPoint[size];
for(int i = 0; i<size; i++) {
Address addr = addresses.get(i);
gp[i] = new GeoPoint(addr.getLatitude()*1000000,
address.getLongitude()*1000000);
}
GeoPointはE6値を必要とするため、値は* 1000000です。また、一致するものがない場合、配列の長さは0になる可能性があることにも注意してください。