๋ฌธ์ œ ํ•ด๊ฒฐ ๐Ÿ›  โ€“ vue

joyfulwaveยท2023๋…„ 4์›” 17์ผ
0

๋‚˜๋งŒ์˜ ์‚ฌ์ „ - VUE

๋ชฉ๋ก ๋ณด๊ธฐ
2/6
post-thumbnail

๐Ÿ”’ ๋ฌธ์ œ ์ƒํ™ฉ

ํ”„๋กœ์ ํŠธ์— ์นด์นด์˜ค์ง€๋„ OPEN API๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

๐Ÿ”‘ ๋ฌธ์ œ ํ•ด๊ฒฐ

  1. ์นด์นด์˜ค์ง€๋„ ๊ณต์‹๋ฌธ์„œ์—์„œ ์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€ ํ”„๋กœ์ ํŠธ/public/index.html์— head์— ์ถ”๊ฐ€ํ•œ๋‹ค. (๊ณต์‹๋ฌธ์„œ: https://postcode.map.daum.net/guide)

<!DOCTYPE html>
<html lang="">
  <head>
    <title>index</title>
    <script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
  </head>
  </body>
</html>
  1. ๋‹ค์Œ api๋ฅผ ์‚ฌ์šฉํ•  ์‹ฑ๊ธ€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ํ™œ์šฉํ•œ๋‹ค.
/* ๋ฐ›์•„์˜จ ์ฃผ์†Œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณผ ๊ณณ */
<template>
  <div class="daummap">
    <h1>์šฐํŽธ๋ฒˆํ˜ธ: <span>{{ zip }}</span></h1>
    <h1>๊ธฐ๋ณธ์ฃผ์†Œ: <span>{{ addr1 }}</span></h1>
    <h1>์ƒ์„ธ์ฃผ์†Œ: <span>{{ addr2 }}</span></h1>
    <div ref="embed"></div>
    <button @click="showApi">์ฃผ์†ŒAPI ํ˜ธ์ถœ</button>
  </div>
</template>

<script>
export default {
  name: 'daumMap',
  data() {
    return {
      zip: '',
      addr1: '',
      addr2: ''
    }
  },
  methods: {
    showApi() {
      new window.daum.Postcode({
        oncomplete: (data) => {
            // ํŒ์—…์—์„œ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ํ•ญ๋ชฉ์„ ํด๋ฆญํ–ˆ์„๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„.

            // ๋„๋กœ๋ช… ์ฃผ์†Œ์˜ ๋…ธ์ถœ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฃผ์†Œ๋ฅผ ์กฐํ•ฉํ•œ๋‹ค.
            // ๋‚ด๋ ค์˜ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ์—” ๊ณต๋ฐฑ('')๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ, ์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ถ„๊ธฐ ํ•œ๋‹ค.
            let fullRoadAddr = data.roadAddress; // ๋„๋กœ๋ช… ์ฃผ์†Œ ๋ณ€์ˆ˜
            let extraRoadAddr = ''; // ๋„๋กœ๋ช… ์กฐํ•ฉํ˜• ์ฃผ์†Œ ๋ณ€์ˆ˜

            // ๋ฒ•์ •๋™๋ช…์ด ์žˆ์„ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•œ๋‹ค. (๋ฒ•์ •๋ฆฌ๋Š” ์ œ์™ธ)
            // ๋ฒ•์ •๋™์˜ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ "๋™/๋กœ/๊ฐ€"๋กœ ๋๋‚œ๋‹ค.
            if(data.bname !== '' && /[๋™|๋กœ|๊ฐ€]$/g.test(data.bname)){
                extraRoadAddr += data.bname;
            }
            // ๊ฑด๋ฌผ๋ช…์ด ์žˆ๊ณ , ๊ณต๋™์ฃผํƒ์ผ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•œ๋‹ค.
            if(data.buildingName !== '' && data.apartment === 'Y'){
              extraRoadAddr += (extraRoadAddr !== '' ? ', ' + data.buildingName : data.buildingName);
            }
            // ๋„๋กœ๋ช…, ์ง€๋ฒˆ ์กฐํ•ฉํ˜• ์ฃผ์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๊ด„ํ˜ธ๊นŒ์ง€ ์ถ”๊ฐ€ํ•œ ์ตœ์ข… ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค.
            if(extraRoadAddr !== ''){
                extraRoadAddr = ' (' + extraRoadAddr + ')';
            }
            // ๋„๋กœ๋ช…, ์ง€๋ฒˆ ์ฃผ์†Œ์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ํ•ด๋‹น ์กฐํ•ฉํ˜• ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
            if(fullRoadAddr !== ''){
                fullRoadAddr += extraRoadAddr;
            }

            // ์šฐํŽธ๋ฒˆํ˜ธ์™€ ์ฃผ์†Œ ์ •๋ณด๋ฅผ ํ•ด๋‹น ํ•„๋“œ์— ๋„ฃ๋Š”๋‹ค.
            this.zip = data.zonecode; //5์ž๋ฆฌ ์ƒˆ์šฐํŽธ๋ฒˆํ˜ธ ์‚ฌ์šฉ
            this.addr1 = fullRoadAddr;
        }
      }).open() // ํŒ์—…์œผ๋กœ ๋„์šด๋‹ค.
    }
  }
}
</script>

<style>

</style>
  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์— ํ•ด๋‹น api๋ฅผ ๋„์šฐ๋ ค๋ฉด
}).open()

๋Œ€์‹ ์—

}).embed(this.$refs.embed)

๋กœ ๋ฐ”๊ฟ”ํ™œ์šฉํ•œ๋‹ค.

๐Ÿ“Œ TIP

  • ๋‹ค์Œ ์ง€๋„ api๊ฐ€ ํ•„์š”ํ•œ ์‹ฑ๊ธ€ ์ปดํฌ๋„ŒํŠธ vue ํŒŒ์ผ์— ์ง์ ‘ api script๋ฅผ ๋„ฃ์œผ๋ฉด ์•ˆ๋œ๋‹ค! ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.. ๋‚˜๋„ ์•Œ๊ณ ์‹ถ์ง€ ์•Š์•˜๋‹ค.. public ํด๋” - index.html ์•ˆ์— script๋ฅผ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค.

์ฐธ๊ณ ํ•œ ํฌ์ŠคํŠธ : https://chlost.tistory.com/53

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