From 37626209000edc0a15b090c8d9b856554915e5b4 Mon Sep 17 00:00:00 2001 From: LEE <dlwodyd4529@gmail.com> Date: Wed, 22 Nov 2023 22:26:23 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A3=BC=EC=86=8C=20=EA=B8=B0=EB=B0=98=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package-lock.json | 19 +++++++++++++++++ frontend/package.json | 1 + frontend/public/index.html | 2 ++ frontend/src/Search.js | 43 ++++++++++++++++++++++++++++---------- 4 files changed, 54 insertions(+), 11 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7d61652e..64974864 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -18,6 +18,7 @@ "jwt-decode": "^4.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-kakao-maps-sdk": "^1.1.24", "react-router-dom": "^6.18.0", "web-vitals": "^2.1.4" }, @@ -12935,6 +12936,11 @@ "node": ">=18" } }, + "node_modules/kakao.maps.d.ts": { + "version": "0.1.39", + "resolved": "https://registry.npmjs.org/kakao.maps.d.ts/-/kakao.maps.d.ts-0.1.39.tgz", + "integrity": "sha512-KXENJ8hHYtjb5G+0vf8TXx/PwWW4j5ndDiQTSMvGtF7EFWu2P3N/+Zivcj9/UKn3j29Iz/sIUaA7WL8Ug3IDGQ==" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -15848,6 +15854,19 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-kakao-maps-sdk": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/react-kakao-maps-sdk/-/react-kakao-maps-sdk-1.1.24.tgz", + "integrity": "sha512-leLbFwBj6zbTdDg6A9U7EwYT2oq0+2F+NHZSVTyCmmvyc4yt2zpRvUmcAt8I6h2SDUdgHbpvKAV1sZoRIxD4JQ==", + "dependencies": { + "@babel/runtime": "^7.22.15", + "kakao.maps.d.ts": "^0.1.39" + }, + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 4d6a8031..c45d5805 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "jwt-decode": "^4.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-kakao-maps-sdk": "^1.1.24", "react-router-dom": "^6.18.0", "web-vitals": "^2.1.4" }, diff --git a/frontend/public/index.html b/frontend/public/index.html index aa069f27..2c0e77db 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -15,6 +15,8 @@ user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ --> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> + <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=%REACT_APP_KAKAOMAP_API_KEY%&libraries=services&autoload=false" +></script> <!-- Notice the use of %PUBLIC_URL% in the tags above. It will be replaced with the URL of the `public` folder during the build. diff --git a/frontend/src/Search.js b/frontend/src/Search.js index 634b5b55..f4c0892c 100644 --- a/frontend/src/Search.js +++ b/frontend/src/Search.js @@ -1,4 +1,9 @@ import React, {useState} from "react"; +import { Map, MapMarker } from "react-kakao-maps-sdk"; + +const {kakao} = window; + +//카카오 지도 API를 이용한 검색(예정) function SearchMap(props){ // 아주대학교를 기본 위치로 설정 @@ -6,24 +11,43 @@ function SearchMap(props){ center: { lat: 37.28238488648025, lng: 127.04350967609274 }, isPanto: true, }); - const [searchAddress, SetSearchAddress] = useState(); //주소 + const [searchAddress, SetSearchAddress] = useState(); //주소 입력 const handleInput = (e) => { - SetSearchAddress(e.target.value) - } + SetSearchAddress(e.target.value); + } + const SearchStart = () => { - console.log('Start Search!'); + console.log('Start Search!');// action test + // 주소를 기반으로 한 검색 구현(제주특별자치도 제주시 첨단로 242 를 입력하면 kakao가 나온다) + const geocoder = new kakao.maps.services.Geocoder(); + let callback = function(result, status) { + if (status === kakao.maps.services.Status.OK) { + const newSearch = result[0] + setState({ + center: { lat: newSearch.y, lng: newSearch.x } + }) + } + }; + geocoder.addressSearch(`${searchAddress}`, callback); } - return ( <div className="UserInput"> - {/* 주소를 입력할 수 있는 '검색'창 만들기 */} - <input onChange={handleInput}/> + <input onChange={handleInput}/> <button onClick={SearchStart}>검색!</button> + <Map // 지도를 표시할 Container + center={state.center} + isPanto={state.isPanto} + style={{ + // 지도의 크기 + width: "100%", + height: "450px", + }} + level={3}> + </Map> </div> ) - } function Search(props) { @@ -31,9 +55,6 @@ function Search(props) { <div className="search"> <h1>검색페이지입니다.</h1> <SearchMap/> - <div className="map"> - 맵이 나타날 그림 - </div> </div> ); } -- GitLab