๐ 2024. 02.28 55์ผ์ฐจ
๋ด๊ฐ ์ฐพ์ API ์ ๋ณด์์ API Key๋ ์์์ผ๋ฉฐ URL๋ง ์์์. ๋ด๊ฐ ์ฌ์ฉํ๋ ค๋ ์ฝ๋๋ API Key๋ฅผ ์ ๋ ฅํ๋ ๋ถ๋ถ์ด ์์๋๋ฐ, ๊ทธ๋ฅ API Key ์ ๋ ฅํ๋ ๋ถ๋ถ์ ์ฃผ์์ฒ๋ฆฌํ๊ณ url๋ง ์ ๋ ฅํ๋ค.
async function getData2() {
const API_KEY = '๋ฐ๊ธ๋ฐ์ API ํค'; // API ํค๊ฐ ์์ด์ ์ฃผ์์ฒ๋ฆฌ ํจ
const url = 'URL';
const response = await fetch(url);
const data = await response.json();
๋ด๊ฐ ํ๊ณ ์ถ์๋๊ฑด ๋งํฌ ํด๋ฆญํ๋ฉด ์ง๋๋ฅผ ์ด๋์ํค๊ณ , ํด๋น ์ฅ์์ ๋ง์ปค๊ฐ ํ์๋๋ ๊ฒ์ด์๋๋ฐ,
๋ถ๋ช
์ฝ์์ ๋ฐฐ์ด์์ ๊ฐ(๋ฐ์ดํฐ)๋ ์ ์ฐํ๊ณ ์๋์ ๊ฒฝ๋๋ ์ ์ฐํ์.
์๋์ ๊ฒฝ๋๋ฅผ ์ซ์๊ฐ ์์ฒด๋ก ์
๋ ฅํ๋ฉด ๋ง์ปค๊ฐ ์ ์ฐํ์ง๋ง ์๋์ ๊ฒฝ๋๋ฅผ ์ ์ญ๋ณ์์ ๋ด์ ์ฌ์ฉํ๋ฉด
๋ง์ปค๊ฐ ์ฌ๋ผ์ง๋ค! ํ์ง๋ง ์ํ๋ ์ฅ์๋ก ์ด๋์ ๊ฐ๋ฅ! ใ
ใ
var markerPosition = new kakao.maps.LatLng(lat, lon); // ๋ณ์๋ก ์ง์ด ๋ฃ์ผ๋ฉด ์๋์..
var markerPosition = new kakao.maps.LatLng(36.34919313, 127.3955023); //์ด๋์ด ๋ฌธ์ !!!
์นด์นด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ค์ด๊ฐ๋ณด๋ LatLng(lat, lon) ์๋์ ๊ฒฝ๋๋ Numberํ์์ด์ด์ผ์ง ๋๋ค๊ณ ์ ํ์์. ๊ทธ๋ผ ๋ด๊ฐ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ ๋ณด์ด๋๊ฑด ์ซ์๋ก ๋ณด์ด๋๊ฑฐ์ง๋ง ์ค์ ๋ก String์ผ ์๋ ์์ด์ ๋ฌธ์ ๊ฐ ์๊ธด๊ฑด๊ฐ?
ChatGPT์ ๋๋ต
ํ์ง๋ง, getData2() ํจ์์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ง๋ ๋ฐ ๋ง์ปค๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค.
์ ๊ณตํ์ ์ฝ๋๋ฅผ ์ดํด๋ณธ ๊ฒฐ๊ณผ, ๋ฌธ์ ์ ์์ธ์ด ๋ ์ ์๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๋ฐ๊ฒฌํ์ต๋๋ค:
๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ: getData2() ํจ์๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํ๊ณ ์์ผ๋ฉฐ, lat์ lon ๋ณ์๋ ์ด ํจ์๊ฐ ์๋ฃ๋ ํ์์ผ ๊ฐ์ ๊ฐ์ง๋๋ค. ํ์ง๋ง, getData2() ํจ์์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ง๋ ๋ฐ ๋ง์ปค๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค. ์ด๋ก ์ธํด lat์ lon์ด undefined ์ํ์์ kakao.maps.LatLng ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฒ ๋์ด, ๋ง์ปค๊ฐ ์ ๋๋ก ํ์๋์ง ์์ ์ ์์ต๋๋ค.
๋ง์ปค ๋ฐ ์ง๋ ์ค์ฌ ์ค์ : getData2() ํจ์์์ ๋ฐ์์จ ์๋์ ๊ฒฝ๋๋ก ์ง๋์ ์ค์ฌ์ ์ค์ ํ๊ฑฐ๋ ๋ง์ปค๋ฅผ ์์ฑํ๋ ค๋ฉด, ์ด ์์ ๋ค์ getData2() ํจ์ ๋ด๋ถ ๋๋ ํด๋น ํจ์๊ฐ ์๋ฃ๋ ์ดํ์ ์ํํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฝ๋ ์์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
<script>
async function getData2() {
const API_KEY = '๋ฐ๊ธ๋ฐ์ API ํค';
const url = 'URL';
const response = await fetch(url);
const data = await response.json();
// ์ฌ๊ธฐ์์ lat๊ณผ lon์ ์ค์
lat = data.response.body.items[0].item.latitude;
lon = data.response.body.items[0].item.longitude;
// ์ง๋ ์ค์ฌ๊ณผ ๋ง์ปค ์์น๋ฅผ ์
๋ฐ์ดํธ
var moveLatLon = new kakao.maps.LatLng(lat, lon);
map.setCenter(moveLatLon);
// ๋ง์ปค ์์ฑ ๋ฐ ํ์
var marker = new kakao.maps.Marker({
position: moveLatLon
});
marker.setMap(map);
}
// ์นด์นด์ค์ง๋ ๊ธฐ๋ณธ ์ค์ ๋ฐ ์์ฑ
var mapContainer = document.getElementById('map'), // ์ง๋๋ฅผ ํ์ํ div
mapOption = {
center: new kakao.maps.LatLng(33.450701, 126.570667), // ๊ธฐ๋ณธ ์ค์ฌ์ขํ ์ค์
level: 3 // ์ง๋์ ํ๋ ๋ ๋ฒจ
};
var map = new kakao.maps.Map(mapContainer, mapOption);
// ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ง๋ ์
๋ฐ์ดํธ ํจ์ ํธ์ถ
getData2();
</script>
์์ ์์ ๋ ์ฝ๋๋ getData2() ํจ์๊ฐ ์๋ฃ๋ ํ์ ์ง๋์ ์ค์ฌ์ ์ ๋ฐ์ดํธํ๊ณ ๋ง์ปค๋ฅผ ์์ฑํ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด lat์ lon ๋ณ์๊ฐ ์ ์๋ ํ์ ์ง๋ ๊ด๋ จ ์์ ์ด ์ํ๋๋ฏ๋ก, ๋ง์ปค๊ฐ ์ ์์ ์ผ๋ก ํ์๋ ๊ฒ์ ๋๋ค.
<body>
<div id="map" style="width: 100%; height: 350px;"></div>
<p>
<button onclick="setCenter()">์ง๋ ์ค์ฌ์ขํ ์ด๋์ํค๊ธฐ</button>
<button onclick="panTo()">์ง๋ ์ค์ฌ์ขํ ๋์ ์ผ๋ก ์ด๋์ํค๊ธฐ</button>
</p>
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=APPKEY์
๋ ฅ"></script>
<script>
var lat;
var lon;
async function getData2() {
//const API_KEY = '๋ฐ๊ธ๋ฐ์ API ํค';
const url = 'URL์
๋ ฅ';
const response = await fetch(url);
const data = await response.json();
// ์ฌ๊ธฐ์์ lat๊ณผ lon์ ์ค์
lat = data.response.body.items[10].la;
lon = data.response.body.items[10].lo;
console.log(lat);
console.log(lon);
// ์ง๋ ์ค์ฌ๊ณผ ๋ง์ปค ์์น๋ฅผ ์
๋ฐ์ดํธ
var moveLatLon = new kakao.maps.LatLng(lat, lon);
map.setCenter(moveLatLon);
// ๋ง์ปค ์์ฑ ๋ฐ ํ์
var marker = new kakao.maps.Marker({
position : moveLatLon
});
marker.setMap(map);
}
// ์นด์นด์ค์ง๋ ๊ธฐ๋ณธ ์ค์ ๋ฐ ์์ฑ
var mapContainer = document.getElementById('map'), // ์ง๋๋ฅผ ํ์ํ div
mapOption = {
center : new kakao.maps.LatLng(33.450701, 126.570667), // ๊ธฐ๋ณธ ์ค์ฌ์ขํ ์ค์
level : 3
// ์ง๋์ ํ๋ ๋ ๋ฒจ
};
var map = new kakao.maps.Map(mapContainer, mapOption);
function setCenter() {
// ์ด๋ํ ์๋ ๊ฒฝ๋ ์์น๋ฅผ ์์ฑํฉ๋๋ค
var moveLatLon = new kakao.maps.LatLng(33.452613, 126.570888);
// ์ง๋ ์ค์ฌ์ ์ด๋ ์ํต๋๋ค
map.setCenter(moveLatLon);
}
function panTo() {
// ์ด๋ํ ์๋ ๊ฒฝ๋ ์์น๋ฅผ ์์ฑํฉ๋๋ค
var moveLatLon = new kakao.maps.LatLng(lat, lon);
// ์ง๋ ์ค์ฌ์ ๋ถ๋๋ฝ๊ฒ ์ด๋์ํต๋๋ค
// ๋ง์ฝ ์ด๋ํ ๊ฑฐ๋ฆฌ๊ฐ ์ง๋ ํ๋ฉด๋ณด๋ค ํฌ๋ฉด ๋ถ๋๋ฌ์ด ํจ๊ณผ ์์ด ์ด๋ํฉ๋๋ค
map.panTo(moveLatLon);
}
// ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ ์ง๋ ์
๋ฐ์ดํธ ํจ์ ํธ์ถ
getData2();
</script>
</body>