Как искать местоположения оффлайн в здесь картах? - PullRequest
2 голосов
/ 11 марта 2020

Вот пример кода для функции поиска, которая работает только при включенных данных.

  private void searching() {

        Log.d(TAG, "init: initializing");
        search = (EditText) findViewById(R.id.input_search);
        search.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                    Log.d(TAG, "geolocate: Geolocating");
                    Geocoder geocoder = new Geocoder(MainActivity.this);
                    List<Address> list = new ArrayList<>();
                    String searchString = search.getText().toString();
                    try {
                        list = geocoder.getFromLocationName(searchString, 1);
                    } catch (IOException e) {
                        Log.e(TAG, "geolocater: IO exception" + e.getMessage());
                    }
                    if (list.size() > 0) {
                        final Address address = list.get(0);
                        Log.d(TAG, "Found the address:" + address.toString());
                        GeoCoordinate geoCoordinate=new GeoCoordinate(address.getLatitude(),address.getLongitude());
                        Image image=new Image();
                        try {
                            image.setImageResource(R.drawable.marker1);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        if (mm != null) {
                            mm.setVisible(false);
                        }
                        mm=new MapMarker(geoCoordinate,image);
                       map.addMapObject(mm);
                        map.setCenter(geoCoordinate,
                                Map.Animation.BOW, 13.0d, 180, 45);
                        map.setZoomLevel((map.getMaxZoomLevel() + map.getMinZoomLevel()) / 1.5);
                    }
                }
                return false;
            }
        });
    }

Но я думал, что он будет работать так же в автономном режиме, но это не так. Я также скачал карту в автономном режиме, но кое-как этот код не работает на загруженной карте. как я могу решить это

1 Ответ

0 голосов
/ 13 марта 2020

Вы можете запустить онлайн или офлайн поиск без изменения подключения устройства или HERE SDK с помощью метода setConnectivity (Connectivity) в экземпляре Request.

Чтобы убедиться, что применяется режим подключения, вызовите setConnectivity (Connectivity) перед выполнением запроса.

Если запрос поиска Connectivity.ONLINE не удается из-за проблем с подключением, HERE SDK возвращает код ошибки ErrorCode.UNKNOWN. Если запрос геокодирования или обратного геокодирования Connectivity.ONLINE не выполняется из-за проблем с подключением, HERE SDK возвращает код ошибки ErrorCode.NETWORK_COMMUNICATION. Если запрос поиска Connectivity.OFFLINE завершается неудачно из-за недостатка кэшированных данных, HERE SDK возвращает результат с нулевым результатом. Если вы попытаетесь выполнить TextAutoSuggestionRequest с режимом подключения Connectivity.OFFLINE, HERE SDK вернет код ошибки ErrorCode.SERVICE_UNAVAILABLE, поскольку автоматические предложения поддерживаются только онлайн.

Пожалуйста, обратитесь https://developer.here.com/documentation/android-premium/dev_guide/topics/places-offline.html

Также поделитесь ответом об ошибке, который вы получили при запуске этого кода.

...