web-dev-qa-db-ja.com

Androidロケーションオブジェクトの作成

次のコードを使用して、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内で、配列に追加するロケーションオブジェクトを動的に作成しようとしています。

空白の場所オブジェクトを作成するにはどうすればよいですか?

19
sisko

Android.location.Locationを参照すると仮定すると、プロバイダー文字列を取得して任意の値に設定するコンストラクターを使用します。

38
Reuben Scratton

それは実際には意図されたものではありません。グーグルマップに何かをプロットしようとしているなら、 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になる可能性があることにも注意してください。

4
Robby Pond