// Use Api.Instance.TransportApi.CreatePositioner for public construction
        internal TransportPositioner(
            TransportApiInternal transportApiInternal,
            int id,
            TransportPositionerOptions options)
        {
            if (transportApiInternal == null)
            {
                throw new ArgumentNullException("transportApiInternal");
            }

            if (id == InvalidId)
            {
                throw new ArgumentException("invalid id");
            }

            m_transportApiInternal = transportApiInternal;

            Id = id;
            InputLatitudeDegrees  = options.InputLatitudeDegrees;
            InputLongitudeDegrees = options.InputLongitudeDegrees;
            InputHeadingDegrees   = options.InputHeadingDegrees;
            MaxHeadingDeviationToMatchedPointDegrees = options.MaxHeadingDeviationToMatchedPointDegrees;
            MaxDistanceToMatchedPointMeters          = options.MaxDistanceToMatchedPointMeters;
            TransportNetworkType = options.TransportNetworkType;
            HasInputHeading      = options.HasHeading;
        }
        internal TransportApi(
            TransportApiInternal apiInternal
            )
        {
            m_apiInternal = apiInternal;

            m_apiInternal.OnTransportNetworkCellAdded   += (networkType, cellKey) => RaiseEvent(OnTransportNetworkCellAdded, networkType, cellKey);
            m_apiInternal.OnTransportNetworkCellRemoved += (networkType, cellKey) => RaiseEvent(OnTransportNetworkCellRemoved, networkType, cellKey);
            m_apiInternal.OnTransportNetworkCellUpdated += (networkType, cellKey) => RaiseEvent(OnTransportNetworkCellUpdated, networkType, cellKey);
        }