如何在Yandex MapKit 3.4.0上获取用户的当前位置和位置更新



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

我找到了一个简单的解决方案。地图工具包 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);

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

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) {
}
});

相关内容

  • 没有找到相关文章

最新更新