DistanceTo вылетает при запуске приложения

Я пытаюсь получить разницу между двумя местоположениями, которые я взял из gps, всякий раз, когда я нажимаю кнопку, чтобы перейти в мою MapsActivity, я получаю сбой с этой ошибкой

Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference

И когда я комментирую код, который проверяет разницу в расстоянии, он работает нормально, я не понимаю связи между параметрами маркера и DistanceTo. Вот мой код (имейте в виду, что все работает нормально, просто DistanceTo не работает)

locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            //get the latitude and longitude from the location
            double latitude = location.getLatitude();
            double longitude = location.getLongitude();
            //get the location name from latitude and longitude
            Geocoder geocoder = new Geocoder(getApplicationContext());
            try {
                if (location != null) 
// this gives address list from the maps, not important and commented

                {
                    List<Address> addresses =
                            geocoder.getFromLocation(latitude, longitude, 1);
// Marker options where the issue occurs
                    //String result = addresses.get(0).getSubLocality()+":";
                    //result += addresses.get(0).getLocality()+":";
                    // result += addresses.get(0).getCountryCode();
                    LatLng latLng = new LatLng(latitude, longitude);
                    mMap.addMarker(new MarkerOptions().position(latLng).title("Marker Title"));
                    mMap.setMaxZoomPreference(20);
                    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
//Where it checks for the locations and the distance between them
            if (LocationA == null) {
                LocationA = location;
            }

            LocationB = location;


            LocationA = LocationB;

            DiffernceInDistance = LocationA.distanceTo(LocationB);

        }

Код, в котором я сделал карту

  public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
        if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {


            buildGoogleApiClient();
            mMap.setMyLocationEnabled(true);

        }
        else {
            buildGoogleApiClient();
            mMap.setMyLocationEnabled(true);


        }
}

мне кажется, что mMap не инстанцируется, а значит, и null.

Jan Mund 22.04.2018 13:31

не могли бы вы расширить фрагмент, указав свою декларацию / инициализацию mMap, пожалуйста?

Jan Mund 22.04.2018 13:31

Добавлен фрагмент, в котором я сделал mMap

captindfru 22.04.2018 13:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключалась в том, что я запрашивал местоположения и одновременно накладывал маркер, поэтому маркеры не могли загружаться в местоположение, чтобы решить эту проблему, я прокомментировал, он больше не вылетает, но это не решает мою основную проблему (DistanceTo не работает, но это не причина, по которой я написал этот пост, поэтому я больше не буду просить помощи, спасибо)

mMap.addMarker(new MarkerOptions().position(latLng).title("Marker Title"));

Вы можете получать обновления местоположения перед, ваша карта готова, поэтому вам необходимо это учесть.

Andy 22.04.2018 15:37

Другие вопросы по теме