Geocoderクラスを使用して、GeoCodeの現在の緯度/経度データを管理エリアとサブ管理エリアのみに逆ジオコーディングしようとしています。ロケーションプロバイダーとしてNETWORK_PROVIDERを使用しています。これが私が使用するコードであり、それは機能します。問題は、時々それが私に場所を与えないことです。
私が使用しているAndroidマニフェストの権限。
<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"/>
これが、時々正しい場所を教えてくれる残りのコードですが、それ以外の場合は何も教えてくれません。
double latPoint = 0;
double lngPoint = 0;
List<Address> myList = null;
getApplicationContext();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location recentLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (recentLoc != null){
latPoint = recentLoc.getLatitude();
lngPoint = recentLoc.getLongitude();
Geocoder myLocation = new Geocoder(getApplicationContext(), Locale.getDefault());
if (myLocation != null){
try {
myList = myLocation.getFromLocation(latPoint, lngPoint, 1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (myList.size()> 0){
String AdminArea = myList.get(0).getAdminArea();
String SubAdminArea = myList.get(0).getSubAdminArea();
String Zipcode = myList.get(0).getPostalCode();
String urlocation = SubAdminArea + ", " + AdminArea + " " + Zipcode;
Context context1 = getApplicationContext();
int duration1 = Toast.LENGTH_LONG;
CharSequence text1 = urlocation;
Toast toast1 = Toast.makeText(context1, text1, duration1);
toast1.show();
}
}
位置データを要求できる頻度にネットワークプロバイダーに制限はありますか?
実行するたびに、これで有効な位置データが得られることを確認するにはどうすればよいですか。
これについての洞察を事前に感謝します。
PS:Froyo 2.2(Verizon Wireless)を実行している実際のデバイスでこのコードを実行しました。ターゲットAPIレベル8。
これは私がデバッグから得たものです。
緯度経度は常にフェッチされますが、getFromLocationは、渡された緯度経度データに対してnullを返すことがよくあります。では、回避策は何ですか?逆ジオコーディングのために、緯度/経度の情報をGoogleMapsAPIに渡すことができます。ご意見をお待ちしております。