void Update()
    {
        // Update target position from input
        float latitudeDelta  = Input.GetAxis("Vertical") * movementSpeed * Time.deltaTime;
        float longitudeDelta = Input.GetAxis("Horizontal") * movementSpeed * Time.deltaTime;

        targetPosition.SetLatitude(targetPosition.GetLatitude() + (latitudeDelta * 0.00006f));
        targetPosition.SetLongitude(targetPosition.GetLongitude() + (longitudeDelta * 0.00006f));

        // Command positioner to move using lat-long
        positioner.SetLocation(targetPosition.GetLatitude(), targetPosition.GetLongitude());

        // Update physical location via GeometryTransform, with corrected ECEF fetched from positioner
        coordinateFrame.SetPosition(positioner.GetECEFLocation());
    }
    void OnEnable()
    {
        Api.Instance.GeographicApi.RegisterGeographicTransform(coordinateFrame);
        targetPosition = startPosition;
        positioner     = Api.Instance.PositionerApi.CreatePositioner(new PositionerOptions()
                                                                     .LatitudeDegrees(targetPosition.GetLatitude())
                                                                     .LongitudeDegrees(targetPosition.GetLongitude())
                                                                     .ElevationAboveGround(100));



        Api.Instance.CameraApi.MoveTo(targetPosition, distanceFromInterest: 1700, headingDegrees: 0, tiltDegrees: 45);
        coordinateFrame.SetPosition(targetPosition);

        box.SetParent(coordinateFrame.transform);
        box.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
        box.localRotation = Quaternion.identity;
        positioner.SetLocation(targetPosition.GetLatitude(), targetPosition.GetLongitude());
    }