Skip to main content

About POI

XR Scene에서 POI(point of interest)를 획득 하는 방법을 설명 합니다.

tip

POI란 Space SDK를 사용하여 XR 환경 위에 띄울 수 있는 장소들에 대한 정보들을 말합니다. 음식점, 카페 등 다양한 POI 정보가 존재합니다. 개발자는 획득한 POI의 좌표를 이용하여 네비게이션 등에 활용 할 수 있습니다.

MaxstSceneManager.cs

public void OnClickGetPOI()
    {
        poiDatas.Clear()
        if (!XRStudioController.Instance.ARMode)
        {
            VPSTrackable eachTrackable = vPSTrackablesList[0];
            POIController.GetPOI(this, XRAPI.Instance.GetAccessToken(), eachTrackable.spaceId, success: (pois) =>
            {
                poiDatas.AddRange(pois);
                GameObject poiGameObject = new GameObject();
                poiGameObject.name = "POI";
                poiGameObject.transform.position = new Vector3(0, 0, 0);
                poiGameObject.transform.eulerAngles = new Vector3(0, 0, 0);
                poiGameObject.transform.localScale = new Vector3(1, 1, 1);
                poiGameObject.transform.parent = arContent.transform;
                foreach (POIData eachPOI in pois)
                {
                    GameObject eachPoiGameObject = Instantiate(poiPrefab);
                    eachPoiGameObject.transform.position = eachPOI.GetVPSPosition();
                    eachPoiGameObject.transform.parent = poiGameObject.transform;
                    eachPoiGameObject.name = eachPOI.poi_name_ko;
                    poiItems.Add(eachPoiGameObject);
                }
            },
            fail: () =>
            {
            });
            return;
        }
        if (currentLocalizerSpaceId != "")
        {
            POIController.GetPOI(this, XRAPI.Instance.GetAccessToken(), currentLocalizerSpaceId, success: (pois) =>
            {
                poiDatas.AddRange(pois);
                GameObject poiGameObject = new GameObject();
                poiGameObject.name = "POI";
                poiGameObject.transform.position = new Vector3(0, 0, 0);
                poiGameObject.transform.eulerAngles = new Vector3(0, 0, 0);
                poiGameObject.transform.localScale = new Vector3(1, 1, 1);
                poiGameObject.transform.parent = arContent.transform;
                foreach (POIData eachPOI in pois)
                {
                    GameObject eachPoiGameObject = Instantiate(poiPrefab);
                    eachPoiGameObject.transform.position = eachPOI.GetVPSPosition();
                    eachPoiGameObject.transform.parent = poiGameObject.transform;
                    eachPoiGameObject.name = eachPOI.poi_name_ko;
                    poiItems.Add(eachPoiGameObject);
                }
            },
            fail: () =>
            {
            });
        }
    }
  • POI를 호출하는 번호는 Trackable에 포함 되어 있습니다.
  • POI는 SpaceId를 통해서 획득하게 됩니다.
  • POIController.GetPOI()함수를 통해서 해당 위치의 POI를 획득 할 수 있습니다.