Услуга недоступна при запросе названия страны на карте Android деятельности - PullRequest
0 голосов
/ 20 марта 2012

Я просто пытаюсь получить название страны в своей карте активности, когда я касаюсь карты. Я следовал за 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, который говорит: Сервис недоступен . Есть ли какие-либо ограничения, когда я хочу сделать обратное геокодирование?

1 Ответ

0 голосов
/ 20 марта 2012

У меня есть альтернативный подход, где вы можете получить полный адрес широты и долготы определенной точки. Просто передайте широту и долготу по указанному ниже URL-адресу карт Google и верните точный адрес этой конкретной точки в формате XML..

http://maps.google.com/maps/api/geocode/xml?address=

...