Estoy actualizando una aplicación en Windows Mobile para capturar información de ubicación mediante el GPS integrado de hardware. La API de Microsoft proporciona un método GPSGetPosition que devuelve la siguiente estructura (ref:GPS_POSITION):
typedef struct _GPS_POSITION {
DWORD dwVersion;
DWORD dwSize;
DWORD dwValidFields;
DWORD dwFlags;
SYSTEMTIME stUTCTime;
double dblLatitude;
double dblLongitude;
float flSpeed;
float flHeading;
double dblMagneticVariation;
float flAltitudeWRTSeaLevel;
float flAltitudeWRTEllipsoid;
GPS_FIX_QUALITY FixQuality;
GPS_FIX_TYPE FixType;
GPS_FIX_SELECTION SelectionType;
float flPositionDilutionOfPrecision;
float flHorizontalDilutionOfPrecision;
float flVerticalDilutionOfPrecision;
DWORD dwSatelliteCount;
DWORD rgdwSatellitesUsedPRNs[GPS_MAX_SATELLITES];
DWORD dwSatellitesInView;
DWORD rgdwSatellitesInViewPRNs[GPS_MAX_SATELLITES];
DWORD rgdwSatellitesInViewElevation[GPS_MAX_SATELLITES];
DWORD rgdwSatellitesInViewAzimuth[GPS_MAX_SATELLITES];
DWORD rgdwSatellitesInViewSignalToNoiseRatio[GPS_MAX_SATELLITES];
} GPS_POSITION, *PGPS_POSITION;
Lo que puede determinar la latitud y la longitud, pero me gustaría ser capaz de calcular la exactitud del resultado. La aplicación se ejecuta en un Trimble Juno y el Controlador GPS de la aplicación en el dispositivo proporciona una exactitud del valor en metros. Es esto algo que se puede determinar a partir de los valores en la estructura o se trata de algo específico para el hardware que requieren de una nativa llamada a la función? Es la precisión del valor basado en la heurística o es un cálculo común a través de los diferentes hardware?