카카오API를 이용해 위도(latitude) 경도(longitude) 구하기
.env
[code]
# 카카오 API
KAKAO_API_URL=https://dapi.kakao.com/v2/local/search/address.json?query=
KAKAO_API_KEY=카카오restapi키
[/code]
[code]
func GetLatLng(address string) (map[string]string, error) {
url := fmt.Sprintf(“%s%s”, os.Getenv(“KAKAO_API_URL”), url.QueryEscape(address))
apikey := os.Getenv(“KAKAO_API_KEY”)
req, _ := http.NewRequest(“GET”, url, nil)
req.Header.Add(“Authorization”, fmt.Sprintf(“KakaoAK %s”, apikey))
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return nil, errors.New(resp.Status)
}
bytes, _ := ioutil.ReadAll(resp.Body)
var result map[string]interface{}
json.Unmarshal(bytes, &result)
errMsg, _ := result[“message”]
if errMsg != nil {
msg := result[“message”].(string)
return nil, errors.New(msg)
}
documents := result[“documents”].([]interface{})
if len(documents) <= 0 {
return nil, errors.New(“No Content”)
}
mapdoc := documents[0].(map[string]interface{})
x := mapdoc[“x”].(string)
y := mapdoc[“y”].(string)
return map[string]string{
“lat”: x,
“lng”: y,
}, nil
}
func main() {
_ = godotenv.Load()
latlng, err := GetLatLng(“판교역로 230”)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf(“Lat: %s\n”, latlng[“lat”])
fmt.Printf(“Lng: %s\n”, latlng[“lng”])
}
[/code]
결과
[code]
Lat: 127.11045570879
Lng: 37.4012850380545
[/code]