// 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;
        }
        public TransportPositioner CreatePositioner(TransportPositionerOptions options)
        {
            var optionsInterop = options.ToInterop();

            var transportPositionerId = NativeTransportApi_CreatePositioner(NativePluginRunner.API, ref optionsInterop);

            var transportPositioner = new TransportPositioner(
                this,
                transportPositionerId,
                options
                );

            m_positionerIdToObject.Add(transportPositionerId, transportPositioner);

            NotifyTransportPositionerPointOnGraphChanged(transportPositionerId);

            return(transportPositioner);
        }
 /// <summary>
 /// Creates an instance of a TransportPositioner.
 /// </summary>
 /// <param name="options">A TransportPositionerOptions object that provides creation parameters for this TransportPositioner.
 /// TransportPositionerOptionsBuilder may be used to help construct an appropriate options object.</param>
 public TransportPositioner CreatePositioner(TransportPositionerOptions options)
 {
     return(m_apiInternal.CreatePositioner(options));
 }