diff --git a/PacticeSolution/ClockGadget/MainWindow.xaml b/PacticeSolution/ClockGadget/MainWindow.xaml
index e52b989..0b990d6 100644
--- a/PacticeSolution/ClockGadget/MainWindow.xaml
+++ b/PacticeSolution/ClockGadget/MainWindow.xaml
@@ -21,6 +21,7 @@
+
+
+
+
diff --git a/PacticeSolution/MapFinder/App.xaml.cs b/PacticeSolution/MapFinder/App.xaml.cs
new file mode 100644
index 0000000..57358be
--- /dev/null
+++ b/PacticeSolution/MapFinder/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace MapFinder
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/PacticeSolution/MapFinder/AssemblyInfo.cs b/PacticeSolution/MapFinder/AssemblyInfo.cs
new file mode 100644
index 0000000..8b5504e
--- /dev/null
+++ b/PacticeSolution/MapFinder/AssemblyInfo.cs
@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
diff --git a/PacticeSolution/MapFinder/Data/FoundLocale.cs b/PacticeSolution/MapFinder/Data/FoundLocale.cs
new file mode 100644
index 0000000..717d4f1
--- /dev/null
+++ b/PacticeSolution/MapFinder/Data/FoundLocale.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MapFinder.Data
+{
+ class FoundLocale
+ {
+ internal string Name { get; private set; }
+ internal double Lng { get; private set; }
+ internal double Lat { get; private set; }
+
+ public FoundLocale(string name, double lng, double lat)
+ {
+ this.Name = name;
+ this.Lng = lng;
+ this.Lat = lat;
+ }
+
+ public override string ToString()
+ {
+ return this.Name;
+ }
+ }
+}
diff --git a/PacticeSolution/MapFinder/MainWindow.xaml b/PacticeSolution/MapFinder/MainWindow.xaml
new file mode 100644
index 0000000..16d3778
--- /dev/null
+++ b/PacticeSolution/MapFinder/MainWindow.xaml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 검색어:
+
+
+
+
+
+
+
diff --git a/PacticeSolution/MapFinder/MainWindow.xaml.cs b/PacticeSolution/MapFinder/MainWindow.xaml.cs
new file mode 100644
index 0000000..1ceab35
--- /dev/null
+++ b/PacticeSolution/MapFinder/MainWindow.xaml.cs
@@ -0,0 +1,50 @@
+using MapFinder.Data;
+using MapFinder.Utility;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace MapFinder
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+
+ }
+
+ private void btnFind_Click(object sender, RoutedEventArgs e)
+ {
+ List localeList = KakaoAPI.Search(tbQuery.Text);
+ lbxFound.ItemsSource = localeList;
+ }
+
+ private void lbxFound_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (lbxFound.SelectedIndex == -1)
+ return;
+
+ FoundLocale selected = lbxFound.SelectedItem as FoundLocale;
+ if (selected == null)
+ return;
+
+ Uri uri = new Uri($"https://map.kakao.com/link/map/{selected.Name},{selected.Lat},{selected.Lng}");
+ wbMain.Source = uri;
+ }
+ }
+}
diff --git a/PacticeSolution/MapFinder/MapFinder.csproj b/PacticeSolution/MapFinder/MapFinder.csproj
new file mode 100644
index 0000000..72c5feb
--- /dev/null
+++ b/PacticeSolution/MapFinder/MapFinder.csproj
@@ -0,0 +1,14 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+
+
+
+
+
+
+
diff --git a/PacticeSolution/MapFinder/Utility/KakaoAPI.cs b/PacticeSolution/MapFinder/Utility/KakaoAPI.cs
new file mode 100644
index 0000000..c77548b
--- /dev/null
+++ b/PacticeSolution/MapFinder/Utility/KakaoAPI.cs
@@ -0,0 +1,50 @@
+using MapFinder.Data;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.Encodings.Web;
+using System.Threading.Tasks;
+
+namespace MapFinder.Utility
+{
+ static class KakaoAPI
+ {
+ internal static List Search(string query)
+ {
+ List localeList = new List();
+
+ string site = "https://dapi.kakao.com/v2/local/search/keyword.json";
+ string rquery = $"{site}?query={query}";
+ WebRequest request = WebRequest.Create(rquery);
+ string rkey = ""; // REST API KEY
+ string header = $"KakaoAK {rkey}";
+ request.Headers.Add("Authorization", header);
+
+ WebResponse response = request.GetResponse();
+ using (Stream resStream = response.GetResponseStream())
+ {
+ StreamReader reader = new StreamReader(resStream, Encoding.UTF8);
+ string json = reader.ReadToEnd();
+
+ dynamic dob = JsonConvert.DeserializeObject(json);
+ dynamic docs = dob["documents"];
+ JArray buff = docs;
+ int length = buff.Count;
+ for (int i = 0; i < length; i++)
+ {
+ string lname = docs[i]["place_name"];
+ double x = double.Parse(docs[i]["x"].ToString());
+ double y = double.Parse(docs[i]["y"].ToString());
+ localeList.Add(new FoundLocale(lname, x, y));
+ }
+ }
+
+ return localeList;
+ }
+ }
+}
diff --git a/PacticeSolution/PacticeSolution.sln b/PacticeSolution/PacticeSolution.sln
index 7ce5fea..80a5dd5 100644
--- a/PacticeSolution/PacticeSolution.sln
+++ b/PacticeSolution/PacticeSolution.sln
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PacticeSolution", "PacticeS
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClockGadget", "ClockGadget\ClockGadget.csproj", "{AED102C2-9E4B-4DE6-A843-616856F687DB}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapFinder", "MapFinder\MapFinder.csproj", "{4FCEAEAA-6A26-492F-95D1-9695F386DAB5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +23,10 @@ Global
{AED102C2-9E4B-4DE6-A843-616856F687DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AED102C2-9E4B-4DE6-A843-616856F687DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AED102C2-9E4B-4DE6-A843-616856F687DB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4FCEAEAA-6A26-492F-95D1-9695F386DAB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4FCEAEAA-6A26-492F-95D1-9695F386DAB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4FCEAEAA-6A26-492F-95D1-9695F386DAB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4FCEAEAA-6A26-492F-95D1-9695F386DAB5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE