Я реализовал отслеживание геолокации пользователей следующим образом:
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
mMap.clear();
repaintUserLocationPin(location);
}
locationProviderClient = LocationServices.getFusedLocationProviderClient(this);
locationRequest = new LocationRequest();
locationRequest.setInterval(3000);
locationRequest.setFastestInterval(3000);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
LocationCallback locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
List<Location> locationList = locationResult.getLocations();
if (locationList.size() > 0) {
//The last location in the list is the newest
Location location = locationList.get(locationList.size() - 1);
mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
repaintUserLocationPin(mLastLocation);
}
}
};
Подводя итог ИМХО:
С другой стороны, есть решение 3-й, но это не позволяет мне получить обновленное текущее местоположение пока не, я нажимаю Кнопка геолокации на карте. Я говорю о:
map.setOnMyLocationButtonClickListener(new GeolocateBtnClickListener(MapsActivity.this));
map.setOnMyLocationClickListener(new GeolocateClickListener(MapsActivity.this));
У этого есть одно БОЛЬШОЕ преимущество: маркер создается автоматически и намного лучше реагирует на движения пользователя. Например, он указывает на директорию, на которую указывает пользователь.
Итак, зачем использовать одно вместо другого или в каких случаях вы бы порекомендовали использовать одно вместо другого?




Все ниже только мое мнение
These both seem to achieve the same,track and update the current user's location.
Разницу можно понять с их расположением способов получения. LocationManager дает нам возможность выбрать источник местоположения. Итак, мы можем выбрать любой источник из gps, сетевых или пассивных альтернатив. Но LocationServices не дает такой возможности, вместо этого дает вкус местоположения, баланс между качеством и использованием батареи.
At the end of the day, they are both equally verbose and have the same complexity.
Их настройка кажется немного такой же, но LocationServices может быть первым вариантом. Выбор качества / мощности кажется более разумным, чем иметь дело с провайдерами.
#2 needs new 'implementation' libraries but, this isn't much of an overhead
LocationManager доступен с версии 1, а LocationServices доступен, если устройство поддерживает сервисы воспроизведения.