我的Android应用上的位置管理器/监听器出现问题

时间:2019-01-08 22:05:24

标签: android google-maps android-studio

我正在创建一个使用GPS和Google地图的应用程序。我想在位置更改(onLocationChanged)时在位置之间画一条线。它可以工作,但是地图(谷歌地图)上的蓝点并不总是与我使用location.getLattitude和.getLongtitude发现的坐标相同(线在最后位置和新位置之间画线)。新位置/ =蓝点。为什么它并不总是相同的位置?我想在最后一个蓝点位置和新的蓝点位置之间画线。我有许可等 (位置从下到上):https://tinypic.pl/hu8p4zyhhz7f

onMapReady(GoogleMap地图)上的public void {

    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(String provider,int status,Bundle extras){

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

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

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

0 个答案:

没有答案