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