Programmer:)
[Unity] Google Maps API 사용기(StaticMaps) 본문
google api : developers.google.com/maps
google map static maps api : console.cloud.google.com/marketplace/product/google/static-maps-backend.googleapis.com?q=search&referrer=search&project=lucky-apparatus-167403
지도api 참고 사이트 : blog.naver.com/qkrqkr21/221421747380
*2018년 부터 구글 api 유료화로 결제 카드 등록을 진행해야한다.
*static maps api 사이트에 들어가 사용을 클릭해줘야 한다.
*구글 key값 가져오는 방법은 duopix.co.kr/google-map-key/ 사이트를 참고 바람
api test용으로 간단하게 작성해봤다. (untiy ver. 2018.4.23f1)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GoogleMapAPI : MonoBehaviour
{
[SerializeField]
private string m_key;
public enum mapType
{
roadmap,
satellite,
hybrid,
terrain
}
public bool Maps(RawImage _rawImage, float _lat, float _lon, int _zoom, int _scale, mapType _mapType)
{
try
{
int mapWidth = (int)_rawImage.GetComponent<RectTransform>().rect.width;
int mapHeight = (int)_rawImage.GetComponent<RectTransform>().rect.height;
string url =
"https://maps.googleapis.com/maps/api/staticmap?" +
"center=" + _lat + "," + _lon +
"&zoom=" + _zoom +
"&size=" + mapWidth + "x" + mapHeight +
"&scale=" + _scale +
"&maptype=" + _mapType +
"&markers=color:blue%7Clabel:S%7C" + _lat + "," + _lon +
"&key=" + m_key;
Debug.Log("url : " + url);
WWW www = new WWW(url);
int delay = 1000;
int timer = 0;
bool done = false;
while(delay > timer)
{
System.Threading.Thread.Sleep(1);
timer++;
if(www.isDone)
{
done = true;
break;
}
}
if(done == false)
{
return false;
}
if(_rawImage != null)
{
_rawImage.texture = www.texture;
_rawImage.SetNativeSize();
}
}
catch(System.Exception e)
{
Debug.LogError(e);
return false;
}
return true;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIManager : MonoBehaviour
{
[SerializeField]
GoogleMapAPI m_GoogleMapAPI;
[SerializeField]
private RawImage m_rawImage;
[SerializeField]
private InputField m_let;
[SerializeField]
private InputField m_lon;
[SerializeField]
private int m_maxZoom; //zoom을 최대 몇까지 할 건지
private int m_zoom; //현재 zoom 값
private void Start()
{
m_zoom = 10; //기본 10으로 세팅
}
//줌 버튼 만들어서 이벤트 등록
public void ZoomButton(bool _plusMinus)
{
if(_plusMinus)
{
m_zoom++;
if(m_zoom > m_maxZoom)
{
m_zoom = m_maxZoom;
}
else
{
OkButtonEvent(m_zoom);
}
}
else
{
m_zoom--;
if (m_zoom < 0)
{
m_zoom = 0;
}
else
{
OkButtonEvent(m_zoom);
}
}
}
public void OkButtonEvent(int _zoom)
{
RawImage rawImage = m_rawImage;
float let = float.Parse(m_let.text);
float lon = float.Parse(m_lon.text);
int scale = 1;
m_GoogleMapAPI.Maps(rawImage, let, lon, _zoom, scale, GoogleMapAPI.mapType.roadmap);
}
}
ui화면
*추가 포스팅*
2021.03.09 - [DEV/Unity] - [Unity] Google Maps API 사용기(Distance Matrix)
(Unity) Google Maps API 사용기(Distance Matrix)
google api 가격책정 관련 정보 : cloud.google.com/maps-platform/pricing/?hl=ko google distance matrix api 활성화 console.cloud.google.com/marketplace/product/google/distance-matrix-backend.googleapis..
ryeggg.tistory.com
#############
22.02.19 작성
작동이 안된다는 답글이 있어 테스트해본 결과 google api 정책이 바뀌면서 설정 및 추가 변동사항이 있는것으로 보임..
웹페이지로 테스트해봤는데 이미지를 받아오다 못받아오다 하는 문제가 있음..
#####이 부분에 자기 키값만 넣어서 웹페이지에 테스트 후 사용하는게 좋을 듯 보인다..
내쪽에서는 더이상 작업이 불가하여 일단 중지.. 향후 해결방안 모색해서 다시 재 업로드 예정..(...이런..ㅠㅠ)
아.. 결제정책연결에 문제가 생겨서 계속 받아오다 못받아오다 하는 문제이슈가 생겼었음..
[Google Map API] you must enable billing on the google cloud project....
version : Google Static Map API error massege : You must enable Billing on the Google Cloud Project at https://console.cloud.google.com/project/_/billing/enable Learn more at https://..
ryeggg.tistory.com
위 방법으로 해결...
테스트하면서 유니티 버전업과 코드리펙토링 진행했고 잘 받아오는것도 확인했다.
추후 깃 업로드 예정 (아마 이번주..안에..)
'DEV > Unity' 카테고리의 다른 글
[Unity] Path정리 (0) | 2021.03.10 |
---|---|
[Unity] Google Maps API 사용기(Distance Matrix) (0) | 2021.03.09 |
[Unity] 2019.05 속초 청초누리 (봄) Hokuyo를 이용한 interactive game (4) | 2020.03.25 |
[Unity] 2019.01 VR shooting Hit (0) | 2020.03.16 |
[Unity] 2018.12 부산 BJFEZ 간단한 정보 키오스크 (0) | 2020.03.16 |