Я просто пытаюсь получить название страны в своей карте активности, когда я касаюсь карты.
Я следовал за Android: обратное геокодирование - 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;
}
Все, что я хочу, это чтобы тост показывал адрес и название страны, когда пользователь поднимает палец. Когда приложение запускается, оно не показывает никакой ошибки, но также не показывает Toast. Logcat показывает 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;
}
Тост прекрасно показывает широту и долготу, поэтому мне все еще интересно, что не так, когда я просто хочу получить название страны.
И я до сих пор не имею представления о logcat, который говорит: Сервис недоступен .
Есть ли какие-либо ограничения, когда я хочу сделать обратное геокодирование?