Я создаю приложение, которое использует 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");
}
};