728x90
//map 완성코드
import React, { useEffect } from "react";
// import styled from "styled-components";
import { markerdata } from "./MarkerData";
declare global {
interface Window {
kakao: any;
closeOverlay: () => void;
}
}
const MapComponent = () => {
useEffect(() => {
mapscript();
}, []);
const mapscript = () => {
const container = document.getElementById("map");
const options = {
center: new window.kakao.maps.LatLng(37.32569664033685, 127.10734442799804),
level: 2,
};
const map = new window.kakao.maps.Map(container, options);
//사용자 현재위치 정보
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
const lat = position.coords.latitude,
lon = position.coords.longitude;
const locPosition = new window.kakao.maps.LatLng(lat, lon),
message = "<div>현재위치</div>";
// console.log(locPosition, message); // 이게 현재위치 잡히는거다 !!!!!!!!
displayMarker(locPosition, message);
});
} else {
const locPosition = new window.kakao.maps.LatLng(37.57022168346011, 126.98314742271637), //종각역
message = "<div>아니야</div>";
// console.log(locPosition, message);
displayMarker(locPosition, message);
}
function displayMarker(locPosition: any, message: any) {
const marker = new window.kakao.maps.Marker({
map: map,
position: locPosition,
});
const iwContent = message,
iwRemoveable = true;
const infowindow = new window.kakao.maps.InfoWindow({
content: iwContent,
removable: iwRemoveable,
});
infowindow.open(map, marker);
map.setCenter(locPosition);
}
markerdata.forEach((el) => {
const marker = new window.kakao.maps.Marker({
map: map,
position: new window.kakao.maps.LatLng(el.lat, el.lng),
});
const content =
'<div className="overlayContainer" style="background-color: red;">' +
`<div style="color: black;" >${el.title}</div>` +
`<div className="shopPhone">${el.telphone}</div>` +
"</div>";
const customOverlay = new window.kakao.maps.CustomOverlay({
content: content,
position: new window.kakao.maps.LatLng(el.lat, el.lng),
});
//마우스오버하면 커스텀어레이가 생성된다.
window.kakao.maps.event.addListener(marker, "click", () => {
customOverlay.setMap(map);
});
window.kakao.maps.event.addListener(marker, "mouseover", () => {
customOverlay.setMap(null);
});
});
};
return <div id="map" style={{ width: "800px", height: "500px" }}></div>;
};
export default MapComponent;
728x90
'개인공부 > 메인프로젝트' 카테고리의 다른 글
지도페이지 완료 (0) | 2023.05.17 |
---|---|
suspense, lazy 적용 (0) | 2023.05.16 |
카카오맵 - 마커 클릭하면 설정한 창 뜨기 (0) | 2023.05.16 |
카카오맵 - 드디어 검색기능 성공!!!!! (0) | 2023.05.16 |
카카오맵이용 - 사용자 현재위치조회 (0) | 2023.05.16 |