๐ ์นด์นด์ค๋งต api ์์ํ๊ธฐ
Kakao Developers
์นด์นด์ค API๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด๋ณด์ธ์. ์นด์นด์ค ๋ก๊ทธ์ธ, ๋ฉ์์ง ๋ณด๋ด๊ธฐ, ์น๊ตฌ API, ์ธ๊ณต์ง๋ฅ API ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
developers.kakao.com
๐ ์ง๋ ๋์ฐ๊ธฐ
Kakao Map API๋ฅผ ๋ฐ๊ธ ๋ฐ์๋ค๋ฉด ์ด์ ์ง๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. `html` ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ค.
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=YOUR_API_KEY&libraries=services"></script>
`html`์ `map`์ ๋์ธ ์ ๋นํ ์์๋ฅผ ๋ง๋ ๋ค.
<div class="map"></div>
๋ค์๊ณผ ๊ฐ์ด js ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ง๋๋ฅผ ๋์ธ ์ ์๋ค.
const mapContainer = document.querySelector(".map"); // ์ง๋๋ฅผ ํ์ํ div
const mapOption = {
center: new kakao.maps.LatLng(latitude, longitude), // ์ง๋์ ์ค์ฌ์ขํ (์๋, ๊ฒฝ๋)
level: 6, // ์ง๋์ ํ๋ ๋ ๋ฒจ. ํด์๋ก ๋ฉ๋ฆฌ ๋ณด์
};
// ์ง๋ ์์ฑ
const map = new kakao.maps.Map(mapContainer, mapOption);
[์ง๋ ์์ฑํ๊ธฐ]
https://apis.map.kakao.com/web/sample/basicMap/
๐ ์ง๋์ ๋ง์ปค ์ถ๊ฐํ๊ธฐ
const mapContainer = document.querySelector(".map"); // ์ง๋๋ฅผ ํ์ํ div
const mapOption = {
center: new kakao.maps.LatLng(latitude, longitude), // ์ง๋์ ์ค์ฌ์ขํ (์๋, ๊ฒฝ๋)
level: 6, // ์ง๋์ ํ๋ ๋ ๋ฒจ. ํด์๋ก ๋ฉ๋ฆฌ ๋ณด์
};
// ์ง๋ ๊ฐ์ฒด ์์ฑ
const map = new kakao.maps.Map(mapContainer, mapOption);
const marker = new kakao.maps.Marker({
map: map,
position: new kakao.maps.LatLng(latitude, longitude),
});
[๋ง์ปค ๋์ฐ๊ธฐ]
https://apis.map.kakao.com/web/sample/basicMarker/
๐ ์ปค์คํ ๋ง์ปค ๋ง๋ค๊ธฐ
const mapContainer = document.querySelector(".map"); // ์ง๋๋ฅผ ํ์ํ div
const mapOption = {
center: new kakao.maps.LatLng(latitude, longitude), // ์ง๋์ ์ค์ฌ์ขํ (์๋, ๊ฒฝ๋)
level: 6, // ์ง๋์ ํ๋ ๋ ๋ฒจ. ํด์๋ก ๋ฉ๋ฆฌ ๋ณด์
};
// ์ง๋ ์์ฑ
const map = new kakao.maps.Map(mapContainer, mapOption);
// ์ปค์คํ
๋ง์ปค ๋ง๋ค๊ธฐ
const customMarkerImage = new kakao.maps.MarkerImage(
"images/marker-red.png", // ๋ง์ปค ์ด๋ฏธ์ง URL
new kakao.maps.Size(35, 35), // ๋ง์ปค ์ด๋ฏธ์ง ํฌ๊ธฐ
{
offset: new kakao.maps.Point(17, 35), // ๋ง์ปค์ ์ค์ฌ์ ์์น
}
);
// ๋ด ์์น ๋ง์ปค ์ถ๊ฐ
new kakao.maps.Marker({
position: new kakao.maps.LatLng(
latitude,
longitude
),
map: map,
clickable: true,
image: customMarkerImage,
});
[์ปค์คํ ๋ง์ปค ๋ง๋ค๊ธฐ]
https://apis.map.kakao.com/web/sample/basicMarkerImage/
๐ ๋ง์ปค์ ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ
kakao.maps.event.addListener(marker, "mouseover", function () {
infowindow.open(map, marker);
spot.style.outline = "solid 2px #96b9ff";
});
kakao.maps.event.addListener(marker, "click", () => {
spot.style.backgroundColor = "#96b9ff";
spot.style.outline = "";
spot.style.color = "white";
const spotDiv = document.querySelector(`[data-id="${place.id}"]`);
if (spotDiv) {
spotDiv.scrollIntoView({
behavior: "smooth", // ์คํฌ๋กค ์ ๋๋ฉ์ด์
(๋ถ๋๋ฝ๊ฒ)
block: "start", // ์์์ ์๋จ์ผ๋ก ์คํฌ๋กค ์ ๋ ฌ
inline: "nearest", // ์ํ ์์น๋ ๋ง์ถค
});
}
});
[๋ง์ปค ๋ง์ฐ์ค ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ]
https://apis.map.kakao.com/web/sample/addMarkerMouseEvent/
[๋ง์ปค ํด๋ฆญ ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ]
https://apis.map.kakao.com/web/sample/addMarkerClickEvent/
๐ ์ง๋ ์ค์ฌ ๋ณ๊ฒฝํ๊ธฐ
// ์ด๋ํ ์๋ ๊ฒฝ๋ ์์น๋ฅผ ์์ฑ
var moveLatLon = new kakao.maps.LatLng(latitude, longitude);
// ์ง๋ ์ค์ฌ ์ด๋
map.panTo(moveLatLon); // ๋ถ๋๋ฝ๊ฒ ์ด๋. ๋จ, ์ง๋ ๋ด์ ํด๋น ์์น๊ฐ ์๋ค๋ฉด ์ผ๋ฐ ์ด๋
๐ ํค์๋๋ก ๊ฒ์ํ๊ธฐ
// ์ฅ์ ๊ฒ์ ๊ฐ์ฒด ์์ฑ
const ps = new kakao.maps.services.Places();
// ํค์๋ ๊ฒ์
ps.keywordSearch(
// keywordSearch(keyword, callback(data, status, pagination), locationInfo)
"ํค์๋",
(data, status, pagination) => {
// ์ฌ๊ธฐ์ ๊ฒ์ ํ ๋ก์ง
}, // callback ํจ์
{
location: new kakao.maps.LatLng(
myLocation.latitude,
myLocation.longitude
), // ์ค์ฌ ์์น
radius: 1000, // ๋ฐ๊ฒฝ 1km
sort: "distance", // ๊ฑฐ๋ฆฌ์ ์ ๋ ฌ
} // ์ค์ฌ์ด ๋ ์์น ์ ๋ณด
);
`radius` ์ฐพ๊ณ ์ ํ๋ ์ค์ฌ ์์น์ ๋ฐ๊ฒฝ์ ์ค์ ํ ์ ์๋ค.
`sort` ๊ฑฐ๋ฆฌ์, ์ด๋ฆ์, ๊ด๋ จ๋์์ผ๋ก ์ ๋ ฌํ ์ ์๋ค.
`keywordSearch` ๋ `data` `status` `pagination`์ ๋ฐํํ๋ค. `data`์๋ ๊ฒ์ ๊ฒฐ๊ณผ 15๊ฐ๊ฐ ๋ด๊ฒจ์๊ณ , ๊ฒฐ๊ณผ๊ฐ 15๊ฐ ์ด์์ผ ๊ฒฝ์ฐ `pagination` ์ ํตํด ์ ๊ทผํด์ผํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ํ๊ฐ ์ฌ๋ฐ๋ฅผ ๋๋ง ๋ก์ง์ ์ํํ ์ ์๋ค.
if (status === kakao.maps.services.Status.OK)
`data` ์๋ ๊ฒ์ ๊ฒฐ๊ณผ(1ํ์ด์ง)๊ฐ ๋ด๊ฒจ์๋ค.
`pagination` ์ ๊ฒ์ ๊ฒฐ๊ณผ์ ํ์ด์ง ๊ฐ์ฒด๋ค.
`hasNextPage`๋ ๋ค์ ํ์ด์ง์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๋ฐํํ๋ค.
`nextPage()` ๋ฅผ ํธ์ถํ๋ฉด ๋ค์ ํ์ด์ง๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ ํด๋น ๋ฉ์๋๋ `keywordSearch`์ ์ฝ๋ฐฑํจ์๋ฅผ ์๋์ผ๋ก ๋ค์ ํธ์ถํ๋ค.
[ํค์๋๋ก ์ฅ์ ๊ฒ์ํ๊ธฐ]
https://apis.map.kakao.com/web/sample/keywordBasic/
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋ฌธ์์ด ๋น๊ต (2) | 2024.10.07 |
---|---|
[JavaScript] ๋ฐฐ์ด (0) | 2024.06.19 |
[JavaScript] axios.get ํ๋ผ๋ฏธํฐ๊ฐ ์ ์ก๋์ง ์์ (1) | 2024.03.29 |
[JavaScript] url ํ๋ผ๋ฏธํฐ ํ์ฉํ๊ธฐ (0) | 2024.03.29 |
[JavaScript] ๊ฐ์ ํด๋์ค๋ฅผ ๊ฐ์ง ๋ฒํผ ํ๋ฒ์ eventListener ์ค์ ํ๊ธฐ (0) | 2024.03.21 |