GPS Map Making (in Unity) (2)

이민철·2022년 1월 29일
1

GPSMap

목록 보기
2/3

파이썬으로 만드는 것을 포기하고 유니티로 GUI를 만들어 보려고 한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class GoogleMap : MonoBehaviour
{
    public RawImage testImage;
    public Text GPSInput;
    public Text SIZEInput;
    public string APIkey;

    string URL;

    IEnumerator LoadImage(string url)
    {
        UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);
        yield return www.SendWebRequest();
        testImage.texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
    }

    public void GetMapBtnClicked()
    {
        Debug.Log(URL);
        URLmake();
        Debug.Log(URL);
        StartCoroutine(LoadImage(URL));
    }

    public void URLmake()
    {
        URL = "https://maps.googleapis.com/maps/api/staticmap?"
        + "center=" + GPSInput.text
        + "&zoom=" + SIZEInput.text
        + "&maptype=roadmap"
        + "&size=800x800&scale=2"
        + "&markers=size:tiny%7color:red%7Clabel:S%7C"+GPSInput.text
        + "&key=" + APIkey;
    }
}

유니티 UI상에서 위도, 경도 데이터와 SIZE 입력 InputField를 생성한다.
GPSInput, SIZEInput 은 텍스트 형태의 객체로 text 속성을 가지고 있다.
IEnumerator를 이용하여 UnityWebRequest로 텍스쳐를 호출한다.

IEnumerator는 큐 방식 함수로 함수 대기열이라고 생각하면 편하다.
Web 데이터를 불러오거나 서버를 활용하여 불러오는데 시간이 걸리는 곳에 쓰이는 방식이다.
IEnumerator형 함수는 StartCoroutine()으로 호출할 수 있다.

이런 식으로 간단하게 유니티 UI에 MapImage를 출력하는 프로그램을 만들었다.

다음은 원래 계획인 지도위의 임의의 점을 클릭하였을 때 GPS값이 출력이 되도록 구현할 것이다.

0개의 댓글