Проблема с Location Manager / Listener в моем приложении для Android - PullRequest
0 голосов
/ 09 января 2019

Я создаю приложение, которое использует GPS и Google Maps. Я хочу нарисовать линию между местоположениями, когда местоположение меняется (onLocationChanged). Это работает, но синяя точка на карте (карта Google) не всегда находится на тех же координатах, что и я, используя location.getLattitude и .getLongtitude (линия рисуется между последней позицией и новой позицией). Новая позиция / = синяя точка. Почему это не всегда одна и та же позиция? Я хочу нарисовать линию между последней синей точкой и новой синей точкой. У меня есть разрешение и т. Д. (Позиция идет снизу вверх): https://tinypic.pl/hu8p4zyhhz7f

public void onMapReady (карта GoogleMap) {

    mMap = map;


    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED) {
        mMap.setMyLocationEnabled(true);

        lokalizacja();

    } else {

        ActivityCompat.requestPermissions(WorkoutActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_LOCATION_REQUEST_CODE);
    }


    routeOpts = new PolylineOptions()
            .color(Color.BLUE)
            .width(5 /* TODO: respect density! */)
            .geodesic(true);
    route = mMap.addPolyline(routeOpts);
    route.setVisible(drawTrack);

    mMap.setOnMyLocationButtonClickListener(this);
    mMap.setOnMyLocationClickListener(this); }

}

public void lokalizacja () { // Context context = getApplicationContext ();

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    locationListener = new LocationListener() {


        @Override
        public void onLocationChanged(Location location) {




            if (routeOpts != null) {                                               
                    lat = (float) location.getLatitude();
                    lng = (float) location.getLongitude();

                LatLng myLatLng = new LatLng(lat, lng);
                List<LatLng> points = route.getPoints();
                points.add(myLatLng);
                route.setPoints(points);
            }


        }

@ Override public void onStatusChanged (поставщик строк, состояние int, дополнительные функции пакета) {

            Log.d("tocos","StatusChanged");
        }

        @Override
        public void onProviderEnabled(String provider) {
            Log.d("tocos","Enabled");
        }

        @Override
        public void onProviderDisabled(String provider) {
            Log.d("tocos","Disabled");
        }
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...