Nuestro proyecto Android actualmente declara ArcGIS Maps SDK para Kotlin 300.0.0. Usamos CustomLocationDataSource para mostrar posiciones de receptores GNSS externos, incluidos receptores que proporcionan datos de ubicación decodificados en lugar de sentencias NMEA.
Estamos investigando reportes de actualizaciones retrasadas de la posición en el mapa e inconsistencias en la posición o precisión al usar GPS externo. Nos gustaría validar nuestro proveedor personalizado contra el contrato previsto del SDK; no hemos establecido que el SDK cause estos síntomas.
Nuestro CustomLocationDataSource.LocationProvider suministra flujos separados Flow<Location> y Flow<Double>. Convertimos cada ubicación externa de Android a una Location de ArcGIS usando coordenadas WGS84, precisión horizontal y vertical, velocidad y rumbo. Para receptores externos, el flujo de rumbo deriva el rumbo del bearing de la posición. Nuestra llamada a Location.create no pasa explícitamente la marca temporal original de la posición del receptor. Algunos valores de precisión y movimiento no disponibles o inválidos se convierten actualmente a 0.
¿Podrían aconsejarnos sobre lo siguiente?
- ¿Cómo debería una fuente personalizada representar precisión, velocidad, rumbo o dirección no disponibles? ¿Podría usar 0 para una medición faltante afectar cómo LocationDisplay trata una posición?
- ¿Cómo deberíamos preservar o validar la hora original de la posición del receptor? ¿Debería el proveedor descartar posiciones obsoletas o fuera de orden antes de emitirlas, especialmente después de una reconexión o cambio de fuente?
- ¿Es apropiado derivar el flujo separado de dirección del bearing de la posición? ¿Existen requisitos de orden o sincronización entre los flujos de ubicación y dirección?
- ¿Qué recomendaciones sobre almacenamiento en búfer, tasa de actualización o instrumentación nos ayudarían a distinguir retrasos antes de que nuestro proveedor emita una posición de retrasos en CustomLocationDataSource o su visualización en pantalla? ¿LocationDisplay anima o interpola las posiciones entrantes?
Para receptores externos que no proporcionan NMEA, ¿es CustomLocationDataSource el enfoque recomendado? Más allá del ejemplo básico, ¿qué orientación pueden darnos para una implementación en producción que maneje frescura de posiciones, mediciones faltantes, reconexiones y tasas variables de actualización?