Использование DummyLocationManager как повысить точность и оперативность отображения объекта на карте?
На устройстве используется отдельный модуль высокоточной навигации. Используем режим UserLocation - UserLocationObjectListener с DummyLocationManager -> LocationManager - в который передаем LocationListener и прочие параметры:
val locationListener = object : LocationListener {
override fun onLocationUpdated(location: Location) {
//todo
}
override fun onLocationStatusUpdated(locationStatus: LocationStatus) {
//todo
}
}
val manager = MapKitFactory.getInstance().createDummyLocationManager()
MapKitFactory.getInstance().setLocationManager(manager)
manager.subscribeForLocationUpdates(
0.01,
500L,
0.0,
true,
FilteringMode.OFF,
locationListener
)
Модуль навигации передает координаты 1 раз в секунду в формате GPHDT и GPGGA (это максимальная скорость передачи пакетов содержащих навигационные данные) Передаем эти данные Location в locationManager
val location = Location(
MapPoint(lat, lon),
2.5, //радиус точности
altitude, //высота
null,
heading, //вектор направления объекта
null,
Date().time,
relativeTime // время в пакете навигационных данных
)
manager.setLocation(location)
Карта настроена следующим образом:
mvYandexMap.map.isZoomGesturesEnabled = true
mvYandexMap.map.isTiltGesturesEnabled = false
mvYandexMap.map.set2DMode(true)
mvYandexMap.map.isModelsEnabled = false
mvYandexMap.map.poiLimit = 0
mvYandexMap.map.mapType = MapType.NONE
mvYandexMap.map.mode = MapMode.DRIVING
Есть две проблемы:
Объект отрисовывается не очень оперативно, при поступлении новых координат и вызове метода setLocation(location), на карте перемещение объекта отображаются с задержкой - задержка разная - особенно это проявляется если объект изменим свое положение к примеру на 10-15 см, в таком случае порой объект на карте может и вовсе не изменить свое местоположение. Как добиться максимально оперативного изменения местоположения объекта на карте и максимально точного в сантиметровом диапазоне? Может ли на это влиять параметры метода subscribeForLocationUpdates(desiredAccuracy, minTime, minDistance) совместно с параметрами метода setLocation(accuracy,speed,absoluteTimestamp,relativeTimestamp), как конкретно они взаимосвязаны между собой, особенно параметры самих методов , к примеру minTime с absoluteTimestamp,relativeTimestamp, если вообще взаимосвязаны?
Координаты приходят с интервалом в 1 секунду, но объект перемещается по карте от предыдущей точки к новой не плавно а рывками. Есть способ сделать плавное перемещение средствами библиотеки? Как параметры влияют на это, кроме того что координаты передаются 1 раз в секунду?
Спасибо.