Place a 2D View on the Map

Place a 2D View on the screen, using the projected position of a Positioner. This works in both Unity and ECEF coordinate systems.

To run this example, open the Wrld/Demo/Examples.unity scene, click the Play button, and select Place a 2D View on the Map from the dropdown.

using System.Collections;
using UnityEngine;
using Wrld;
using Wrld.Space;
using Wrld.Space.Positioners;

public class Position2DViewOnMap: MonoBehaviour
{
    static LatLong targetPosition = LatLong.FromDegrees(37.802355, -122.405848);
    
    Positioner viewPositioner;
    public UnityEngine.RectTransform target2DView;

    private void OnEnable()
    {
        var positionerOptions = new PositionerOptions()
                                                .ElevationAboveGround(25)
                                                .LatitudeDegrees(targetPosition.GetLatitude())
                                                .LongitudeDegrees(targetPosition.GetLongitude());

        viewPositioner = Api.Instance.PositionerApi.CreatePositioner(positionerOptions);
        viewPositioner.OnScreenPointChanged += OnPositionerPositionChanged;
    }

    private void OnPositionerPositionChanged()
    {
        var screenPoint = Vector3.zero;
        if (viewPositioner.TryGetScreenPoint(out screenPoint))
        {
            target2DView.position = new Vector3(screenPoint.x, screenPoint.y);
        }
    }

    public void OnCollapseButtonClicked()
    {
        Api.Instance.EnvironmentFlatteningApi.SetIsFlattened(!Api.Instance.EnvironmentFlatteningApi.IsFlattened());
    }

    public void OnDisable()
    {
        viewPositioner.OnScreenPointChanged -= OnPositionerPositionChanged;
        viewPositioner.Discard();
    }
}
v0.8.17