Как получить текущее местоположение пользователя и обновления местоположения на Яндекс 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) {
        }
});
Другие вопросы по тегам