Как получить текущее местоположение пользователя и обновления местоположения на Яндекс MapKit 3.4.0
Я использую Яндекс MapKit в моем приложении. В настоящее время мне нужно получить текущее местоположение пользователей и анимировать камеру в этом месте. Проблема в том, что документация действительно плохая, и большинство ответов в Интернете, кажется, устарели в последней версии карты. Как я могу получить текущее местоположение и обновления местоположения?
3 ответа
Я нашел одно простое решение. Набор карт 3.0.4, похоже, обновил свои методы api.
MapKit mapKit = MapKitFactory.getInstance();
mapKit.createLocationManager().requestSingleUpdate(new LocationListener() {
@Override
public void onLocationUpdated(@NonNull Location location) {
Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLongitude());
Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLatitude());
mapView.getMap().move(
new CameraPosition(location.getPosition(), 14.0f, 0.0f, 0.0f),
new Animation(Animation.Type.SMOOTH, 1),
null);
}
@Override
public void onLocationStatusUpdated(@NonNull LocationStatus locationStatus) {
}
});
этот код будет запускать местоположение устройства.
не забудьте включить MapKitFactory.setApiKey(MAPKIT_API_KEY);
а также MapKitFactory.initialize(this);
перед setContentview или возвращением представления во фрагментах.
Для начала вам нужно получить разрешение на Местоположение !!!
var fusedLocationClient =LocationServices.getFusedLocationProviderClient(this@MapActivity)
fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
Log.d(TAG, "getUserLocation: $location.latitude")
Log.d(TAG, "getUserLocation: $location.longitude")
}
}
Приведенный выше ответ неверный, он позволяет узнать местоположение только один раз. Вам нужно использовать другой код
mapKit = MapKitFactory.getInstance();
mapKit.createLocationManager().subscribeForLocationUpdates(0,0, 0, true, FilteringMode.ON, new LocationListener() {
@Override
public void onLocationUpdated(@NonNull Location location) {
Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLongitude());
Log.d("TagCheck", "LocationUpdated " + location.getPosition().getLatitude());
}
@Override
public void onLocationStatusUpdated(@NonNull LocationStatus locationStatus) {
}
});