파이썬으로 만드는 것을 포기하고 유니티로 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값이 출력이 되도록 구현할 것이다.