Обратное геокодирование для получения информации о местности - PullRequest
1 голос
/ 01 июля 2019

Я создаю мобильное приложение, которое будет принимать текущие координаты пользователя и отображать некоторую информацию о местности.

То, что я до сих пор делал, это:

Используя fusedLocationApi, я получаю текущие координаты пользователей.На основе координат я делаю некоторые вычисления радиуса на стороне сервера и отправляю информацию о площади в пользовательское приложение.В этом радиусе иногда у меня будет информация о более чем одной области.

Теперь я хочу поместить метку поверх своей информационной активности области, чтобы показать Имя текущей области (на основе координат).

Вот так я и получаю информацию о местности.(Код из другого вопроса здесь на SO)

        public void getAddress(double lat, double lng) {
    try {
        Geocoder myLocation = new Geocoder(getApplicationContext(), Locale.getDefault());
        List<Address> myList = null;

        myList = myLocation.getFromLocation(lat, lng, 1);

        Address address = myList.get(0);
        String addressStr = "";
        addressStr += address.getAddressLine(0) + ", \n";
        addressStr += address.getAddressLine(1) + ", \n";
        addressStr += address.getAddressLine(2);

        Log.e("IGA", "Address" + addressStr);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

Проблема с этим подходом заключается в том, что он вообще ненадежен, иногда он показывает полный доступный адрес, например.STREET_NUMBER,STREET_NAME,AREA_NAME,STATE_PROVINCE,CITY,COUNTRY и т. Д., А иногда адрес является краткими данными.

Пример данных 1 из LOG для первого набора координат

2344, Ar Rawabi, Olaya, Riyadh 34242 3432, Saudi Arabia
    Saudi Arabia

Здесь 2322 может быть номером улицы (неконечно), но Ar Rawabi - это небольшая область (2-3 км), которую я ищу.И Olaya может быть около 10-15 км.

Пример 2 данных из LOG для другого набора координат

3424, Al Fasiliyah, Riyadh 3443 5452, Saudi Arabia
    Saudi Arabia

Здесь 3424 может быть номером улицы, но название района не доступно.И снова Аль-Фасилия - большая территория.

Я хочу получить отсюда только название области.Есть ли способ получить только имя области?Я использовал эту ссылку из google docs , чтобы попытаться разобраться в деле, но даже здесь адреса противоречивы и ненадежны.

Я пытаюсь получить только Ar Rawabi и OtherAreaName откоординаты, так как это названия областей.

Любая помощь приветствуется.

...