0

我在我的应用程序中使用 Yandex MapKit。目前我需要获取用户当前位置并在该位置为相机设置动画。问题是文档真的很差,互联网上的大多数答案似乎在最新版本的地图上已被弃用。如何获取当前位置和位置更新?

4

3 回答 3

3

我找到了一个简单的解决方案。map kit 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) {

        }
    });

此代码将触发设备位置。

不要忘记 在 setContentview 或在片段中返回视图之前包含MapKitFactory.setApiKey(MAPKIT_API_KEY);and 。MapKitFactory.initialize(this);

于 2019-10-24T06:43:55.640 回答
0

上面提供的答案是不正确的,它只允许您找出位置一次。您需要使用不同的代码

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) {
        }
});
于 2021-12-29T09:18:59.520 回答
0

首先,您需要获得位置许可!

var fusedLocationClient =LocationServices.getFusedLocationProviderClient(this@MapActivity)

fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->

    Log.d(TAG, "getUserLocation:  $location.latitude")

    Log.d(TAG, "getUserLocation:  $location.longitude")

    }
}
于 2021-10-21T05:12:33.810 回答