๐Ÿ“…2024. 02.28 55์ผ์ฐจ


API ์ ์šฉ

๋‚ด๊ฐ€ ์ฐพ์€ 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์ผ ์ˆ˜๋„ ์žˆ์–ด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๊ฑด๊ฐ€?

๋ฌธ์ œ๊ฐ€ ๋„๋ฌด์ง€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•„ ์ž ๊น์˜ GPT์‚ฌ์šฉ

ChatGPT์˜ ๋Œ€๋‹ต
ํ•˜์ง€๋งŒ, getData2() ํ•จ์ˆ˜์˜ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ง€๋„ ๋ฐ ๋งˆ์ปค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ œ๊ณตํ•˜์‹  ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ, ๋ฌธ์ œ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค:

  1. ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ: getData2() ํ•จ์ˆ˜๊ฐ€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, lat์™€ lon ๋ณ€์ˆ˜๋Š” ์ด ํ•จ์ˆ˜๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—์•ผ ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, getData2() ํ•จ์ˆ˜์˜ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ง€๋„ ๋ฐ ๋งˆ์ปค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด lat์™€ lon์ด undefined ์ƒํƒœ์—์„œ kakao.maps.LatLng ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜์–ด, ๋งˆ์ปค๊ฐ€ ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋งˆ์ปค ๋ฐ ์ง€๋„ ์ค‘์‹ฌ ์„ค์ •: 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>

0๊ฐœ์˜ ๋Œ“๊ธ€