地図をタッチするとマップアクティビティで国名を取得しようとしています。 私はAndroid: Reverse geocoding - getFromLocationを追ってきたし、ここに私のコードはonTouchEventにあります:地図アクティビティで国名をリクエストすると、サービスが利用できなくなります。
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY());
Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(p.getLatitudeE6()/1E6, p.getLongitudeE6()/1E6, 1);
String add = "";
if (addresses.size() > 0)
{
for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); i++)
{
add += addresses.get(0).getAddressLine(i) + "\n";
add += addresses.get(0).getCountryName() + "\n";
}
}
Toast.makeText(mContext, add, Toast.LENGTH_LONG).show();
}
catch (IOException e) {
e.printStackTrace();
}
return false;
}
else
return false;
}
私が欲しいのは、ユーザーが指を持ち上げるときトーストがアドレスと国の名前が表示されるということです。アプリケーションが実行されると、エラーは表示されませんが、トーストも表示されません。ログキャットはjava.io.IOException: Service not Available
と表示されます。
最初にonTouchEvent
のコードにエラーがあると思っていましたので、トーストが表示されているかどうかを確認するためにこれを変更する実験を行いました。
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
// TODO Auto-generated method stub
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels((int)event.getX(), (int)event.getY());
Toast.makeText(mContext, p.getLatitudeE6()/1E6 + ", " + p.getLongitudeE6()/1E6, Toast.LENGTH_SHORT).show();
}
return false;
}
トーストは完全ので、私はちょうど国名を取得したいとき、私はまだ間違っているのだろう緯度と経度を示しています。 そして、私はまだログキャットについて何も考えていません:サービスが利用できません。 リバースジオコーディングを行うときに制限はありますか?