์น ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ฉด ํ์๊ฐ์ ์ด๋ ์ฃผ์๊ด๋ฆฌ ๋ฑ ์ฃผ์ ํน์ ์ฐํธ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ฌ์ฉํด์ผํ๋ ์ํฉ์ด ์๋ค. ๋จ์ํ ์ด์ฉ์๊ฐ ๋ชจ๋ ๋ด์ฉ์ ์ ๋ ฅํ๊ฒ ํ ์ ์๋ค. ํ์ง๋ง ์ด ๊ธ์ ์ฝ๊ฒ ๋ ์ฌ๋๋ค์ ๋๋ถ๋ถ ๊ฒฝํํด ๋ดค์ ๋ฏ์ด ๋๋ค์์ ์๋น์ค๋ค์ ์ฐํธ๋ฒํธ ๊ฒ์ ์๋น์ค๋ฅผ ์ ๊ณตํด ์ด์ฉ์๋ค์๊ฒ ํธ๋ฆฌํจ์ ์ ๊ณตํ๋ค.
์ฒ์์ผ๋ก ์นํ์ด์ง๋ฅผ ์ ์ํ๊ณ ์๋ ๋ณธ์ธ์ด ํ๋ ์ฝ์ง๋ค์ ๊ณต์ ํ๋ฉด์ ์นด์นด์ค ์ฐํธ๋ฒํธ API ์ด์ฉํ๊ณ ์ ํ๋ ๊ฐ๋ฐ์๋ถ๋ค์๊ฒ ํ์ฉ๋ฒ์ ๊ณต์ ํ๊ณ ์ ํ๋ค.
https://postcode.map.daum.net/guide
์์ ์ฝ๋๋ ์น์ ํ๊ฒ ์ค๋ช ๋์ด ์๊ณ ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ค๊ณ ์๊ฐ๋์ง๋ง,
์ฒ์์ผ๋ก ์ ์ฉ์ ํด์ผํ๋ ์ ์ฅ์์๋ ๋ณด๊ณ ๋ ๋ง๋งํจ์ด ๋ ํด ์ ์๋ค๊ณ ์๊ฐํ๋ค.(๋ณธ์ธ๋ ๊ทธ๋ฌ๊ธฐ ๋๋ฌธ)
์ฌ์ค js๋ก๋ง ์ฌ์ฉํ๋ค๋ฉด ์์ ๋งํ๋ฏ์ด ๋ฐ๋ผํ๊ธฐ๋ง ํ๋ฉด ํฌ๊ฒ ์ด๋ ค์์ด ์๋ค. ํ์ง๋ง Vue๋ฅผ ์ ์ฉํด์ ์ฌ์ฉํ๋ ค๋ฉด ์ฝ๊ฐ์ ๋ณ๊ฒฝ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒฝํ์ ๊ณต์ ํ๊ฒ ๋ค.
Daum postcode API ํ์ฉ
<์ฌ์ฉ์ >
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
public ํจํค์ง์ index.htmlํ์ผ์ ์ถ๊ฐ
<ํ ํ๋ฆฟ>
<input type="text" v-model="postcode" placeholder="์ฐํธ๋ฒํธ">
<input type="button" @click="execDaumPostcode()" value="์ฐํธ๋ฒํธ ์ฐพ๊ธฐ"><br>
<input type="text" id="address" placeholder="์ฃผ์"><br>
<input type="text" id="detailAddress" placeholder="์์ธ์ฃผ์">
<input type="text" id="extraAddress" placeholder="์ฐธ๊ณ ํญ๋ชฉ">
์ฃผ์์ฐฝ์ ํตํด ์ ๋ ฅ ๋ฐ์ ์ฐํธ๋ฒํธ, ์ฃผ์, ์ฐธ๊ณ ํญ๋ชฉ ๋ฑ์ v-model, ์ฃผ์์ฐฝ์ ๋์ธ click ์ด๋ฒคํธ ๋ฉ์๋๊ฐ ์๋ค.
<์คํฌ๋ฆฝํธ>
export default {
data() {
return {
postcode: "",
address: "",
extraAddress: "",
};
},
methods: {
execDaumPostcode() {
new window.daum.Postcode({
oncomplete: (data) => {
if (this.extraAddress !== "") {
this.extraAddress = "";
}
if (data.userSelectedType === "R") {
// ์ฌ์ฉ์๊ฐ ๋๋ก๋ช
์ฃผ์๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ
this.address = data.roadAddress;
} else {
// ์ฌ์ฉ์๊ฐ ์ง๋ฒ ์ฃผ์๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ(J)
this.address = data.jibunAddress;
}
// ์ฌ์ฉ์๊ฐ ์ ํํ ์ฃผ์๊ฐ ๋๋ก๋ช
ํ์
์ผ๋ ์ฐธ๊ณ ํญ๋ชฉ์ ์กฐํฉํ๋ค.
if (data.userSelectedType === "R") {
// ๋ฒ์ ๋๋ช
์ด ์์ ๊ฒฝ์ฐ ์ถ๊ฐํ๋ค. (๋ฒ์ ๋ฆฌ๋ ์ ์ธ)
// ๋ฒ์ ๋์ ๊ฒฝ์ฐ ๋ง์ง๋ง ๋ฌธ์๊ฐ "๋/๋ก/๊ฐ"๋ก ๋๋๋ค.
if (data.bname !== "" && /[๋|๋ก|๊ฐ]$/g.test(data.bname)) {
this.extraAddress += data.bname;
}
// ๊ฑด๋ฌผ๋ช
์ด ์๊ณ , ๊ณต๋์ฃผํ์ผ ๊ฒฝ์ฐ ์ถ๊ฐํ๋ค.
if (data.buildingName !== "" && data.apartment === "Y") {
this.extraAddress +=
this.extraAddress !== ""
? `, ${data.buildingName}`
: data.buildingName;
}
// ํ์ํ ์ฐธ๊ณ ํญ๋ชฉ์ด ์์ ๊ฒฝ์ฐ, ๊ดํธ๊น์ง ์ถ๊ฐํ ์ต์ข
๋ฌธ์์ด์ ๋ง๋ ๋ค.
if (this.extraAddress !== "") {
this.extraAddress = `(${this.extraAddress})`;
}
} else {
this.extraAddress = "";
}
// ์ฐํธ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ค.
this.postcode = data.zonecode;
},
}).open();
},
},
};
๊ธฐ์กด ์ฝ๋๋ฅผ Vue ์ฝ๋์ ๋ง๊ฒ ๋ณ๊ฒฝํ์๋ค.
์ฃผ์ ๊ฒ์๊ธฐ๋ฅ์ฌ์ฉ์ ํ์๊ฐ์ ํ์ด์ง์์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ๋ ์ ์๋ค.
๋ค์๊ธฐํ์๋ ์ฌ์ฌ์ฉ์ ์ํ ๋ชจ๋ํ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋นํด ๋ณผ๊น ํ๋ค.