Spaces:
Sleeping
Sleeping
Update places.json
Browse files- places.json +596 -34
places.json
CHANGED
|
@@ -1,34 +1,596 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
"name": "
|
| 4 |
-
"category": "
|
| 5 |
-
"lat":
|
| 6 |
-
"
|
| 7 |
-
"
|
| 8 |
-
"
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
"name": "
|
| 12 |
-
"category": "
|
| 13 |
-
"lat":
|
| 14 |
-
"
|
| 15 |
-
"
|
| 16 |
-
"
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
"name": "
|
| 20 |
-
"category": "distillery",
|
| 21 |
-
"lat":
|
| 22 |
-
"
|
| 23 |
-
"
|
| 24 |
-
"
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
"name": "
|
| 28 |
-
"category": "
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
"
|
| 32 |
-
"
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"South Korea ๐ฐ๐ท": [
|
| 3 |
+
{"name": "Zest", "category": "Bar", "label": "๐ธ Asia's Best", "lat": 37.526, "lon": 127.040, "desc_ko": "์์์ ๋ฒ ์คํธ ๋ฐ 2์, ์ ๋ก์จ์ด์คํธ ์งํ ๋ ์ฑ์ง", "desc_en": "Asia's leading zero-waste bar."},
|
| 4 |
+
{"name": "Bar Cham", "category": "Bar", "label": "๐ธ Hanok Bar", "lat": 37.578, "lon": 126.970, "desc_ko": "์์ด ํ์ฅ์์ ์ฆ๊ธฐ๋ ๋
์ฐฝ์ ์ธ ์ ํต์ฃผ ์นตํ
์ผ", "desc_en": "Cocktails with Korean spirits in a Hanok."},
|
| 5 |
+
{"name": "Charles H.", "category": "Bar", "label": "๐ธ Speakeasy", "lat": 37.570, "lon": 126.975, "desc_ko": "๊ดํ๋ฌธ ํฌ์์ฆ์ค ์งํ์ ์ ์ค์ ์ธ ์คํผํฌ์ด์ง ๋ฐ", "desc_en": "Legendary speakeasy at Four Seasons."},
|
| 6 |
+
{"name": "Le Chamber", "category": "Bar", "label": "๐ธ Secret", "lat": 37.524, "lon": 127.041, "desc_ko": "์ฑ
์ฅ์ ๋ฐ๊ณ ๋ค์ด๊ฐ๋ ์ฒญ๋ด๋ ์คํผํฌ์ด์ง", "desc_en": "Hidden bar behind a bookshelf."},
|
| 7 |
+
{"name": "Pine & Co.", "category": "Bar", "label": "๐ธ Trendy", "lat": 37.523, "lon": 127.028, "desc_ko": "์๊ตฌ์ ์ ํํ ๋ชจ๋ ๋ฐ, ํ๊ตญ ์์ฌ๋ฃ ์ฌํด์", "desc_en": "Modern bar reinterpreting Korean ingredients."},
|
| 8 |
+
{"name": "Mr. Ahn's Craft Makgeolli", "category": "Bar", "label": "๐ถ Michelin Pub", "lat": 37.540, "lon": 126.987, "desc_ko": "๋ฏธ์๋ญ ๊ฐ์ด๋ ๋ฑ์ฌ, ์ ํต์ฃผ ๊ฐ์คํธ๋ก ํ", "desc_en": "Michelin-recognized Korean gastropub."},
|
| 9 |
+
{"name": "Alice Cheongdam", "category": "Bar", "label": "๐ธ Concept", "lat": 37.525, "lon": 127.041, "desc_ko": "์ด์ํ ๋๋ผ์ ์จ๋ฆฌ์ค ์ปจ์
์ ํ์์ ์ธ ๋ฐ", "desc_en": "Alice in Wonderland themed bar."},
|
| 10 |
+
{"name": "Hwayo Distillery", "category": "Spirits", "label": "๐ญ Premium Soju", "lat": 37.294, "lon": 127.632, "desc_ko": "ํ๊ตญ ํ๋ฆฌ๋ฏธ์ ์์ฃผ 'ํ์'์ ๋ณธ์ฐ", "desc_en": "Home of Hwayo Soju."},
|
| 11 |
+
{"name": "Andong Soju Museum", "category": "Traditional", "label": "๐ถ Heritage", "lat": 36.568, "lon": 128.729, "desc_ko": "700๋
์ญ์ฌ, ๋ช
์ธ ๋ฐ์ฌ์ ์๋์์ฃผ", "desc_en": "Museum of Andong Soju."},
|
| 12 |
+
{"name": "Sansawon", "category": "Traditional", "label": "๐๏ธ Museum", "lat": 37.899, "lon": 127.279, "desc_ko": "๋๋ฆฐ๋ง์ ๋ง๊ฑธ๋ฆฌ์ ์ ํต์ฃผ ์ ์(์ฐ์ฌ์)", "desc_en": "Traditional liquor museum and brewery park."},
|
| 13 |
+
{"name": "Haechang Brewery", "category": "Traditional", "label": "๐ถ Premium", "lat": 34.428, "lon": 126.588, "desc_ko": "๋ง๊ฑธ๋ฆฌ๊ณ์ ๋กค์ค๋ก์ด์ค, ํด๋จ ํด์ฐฝ", "desc_en": "The Rolls-Royce of Makgeolli."},
|
| 14 |
+
{"name": "Boksoondoga", "category": "Traditional", "label": "๐ถ Champagne", "lat": 35.539, "lon": 129.106, "desc_ko": "์์ผ๋ก ๋น๋ ์ฒ์ฐ ํ์ฐ ์ดํ์ธ ๋ง๊ฑธ๋ฆฌ", "desc_en": "Hand-brewed sparkling Makgeolli."},
|
| 15 |
+
{"name": "Jindo Hongju", "category": "Traditional", "label": "๐ถ Red Spirit", "lat": 34.482, "lon": 126.261, "desc_ko": "์ง์ด๋ก ๋ถ์ ๋น์ ๋ธ ์ง๋ ๋ช
์ฃผ", "desc_en": "Traditional red liquor from Jindo."},
|
| 16 |
+
{"name": "Jeonju Igangju", "category": "Traditional", "label": "๐ถ Pear & Ginger", "lat": 35.845, "lon": 127.108, "desc_ko": "๋ฐฐ์ ์๊ฐ์ผ๋ก ๋น์ ์กฐ์ 3๋ ๋ช
์ฃผ", "desc_en": "Top 3 liquor of Joseon Dynasty."},
|
| 17 |
+
{"name": "Hansan Sogokju", "category": "Traditional", "label": "๐ถ Rice Wine", "lat": 36.066, "lon": 126.657, "desc_ko": "ํ๋ฒ ์์ผ๋ฉด ๋ชป ์ผ์ด๋๋ ์์๋ฑ
์ด ์ ", "desc_en": "Sogokju, known as 'cripple wine'."},
|
| 18 |
+
{"name": "Munbaeju", "category": "Traditional", "label": "๐ถ Royal", "lat": 37.457, "lon": 126.677, "desc_ko": "ํ์ ์ ๋, ๋จ๋ถ์ ์ํ๋ด ๋ง์ฐฌ์ฃผ", "desc_en": "Royal spirit from Pyongyang."},
|
| 19 |
+
{"name": "Gamhongro", "category": "Traditional", "label": "๐ถ Herbal", "lat": 37.948, "lon": 126.745, "desc_ko": "๋ณ์ฃผ๋ถ์ ์ ๋์ค๋ ์ ์ค์ ๋ช
์ฃผ", "desc_en": "Legendary herbal liquor."},
|
| 20 |
+
{"name": "Three Societies", "category": "Whiskey", "label": "๐ญ Single Malt", "lat": 37.625, "lon": 127.189, "desc_ko": "ํ๊ตญ ์ต์ด ์ฑ๊ธ๋ชฐํธ ์์คํค ์ฆ๋ฅ์ '๊ธฐ์'", "desc_en": "Korea's first single malt distillery."},
|
| 21 |
+
{"name": "Kimchangsoo Whisky", "category": "Whiskey", "label": "๐ญ Craft", "lat": 37.660, "lon": 126.770, "desc_ko": "๊น์ฐฝ์ ๋ช
์ธ์ ํ๊ตญ ์ ํต ์์คํค", "desc_en": "Authentic whisky made by Kim Chang-soo."},
|
| 22 |
+
{"name": "Jeju Beer Company", "category": "Beer", "label": "๐บ Craft", "lat": 33.364, "lon": 126.242, "desc_ko": "์ ์ฃผ ์ํธ ์์ผ์ ํ์์ง", "desc_en": "Birthplace of Jeju Wit Ale."},
|
| 23 |
+
{"name": "Magpie Brewing", "category": "Beer", "label": "๐บ Craft", "lat": 33.523, "lon": 126.559, "desc_ko": "์ ์ฃผ์ ํํ ๊ฐ์ฑ, ๋งฅํ์ด", "desc_en": "Jeju's hippest craft beer brewery."},
|
| 24 |
+
{"name": "Amazing Brewing", "category": "Beer", "label": "๐บ Brewpub", "lat": 37.545, "lon": 127.056, "desc_ko": "์ฑ์๋ ์์ ๋งฅ์ฃผ์ ๋๋๋งํฌ", "desc_en": "Landmark of craft beer in Seongsu."},
|
| 25 |
+
{"name": "Cheongdo Wine Tunnel", "category": "Wine", "label": "๐ท Persimmon", "lat": 35.617, "lon": 128.734, "desc_ko": "ํฐ๋์์ ์์ฑ๋๋ ๊ฐ ์์ธ", "desc_en": "Persimmon wine tunnel."},
|
| 26 |
+
{"name": "Gochang Seonun", "category": "Wine", "label": "๐ท Bokbunja", "lat": 35.483, "lon": 126.583, "desc_ko": "๊ณ ์ฐฝ ๋ณต๋ถ์์ฃผ(๋ธ๋ ๋ผ์ฆ๋ฒ ๋ฆฌ) ํน๊ตฌ", "desc_en": "Famous for Bokbunja wine."},
|
| 27 |
+
{"name": "Yesan Apple Winery", "category": "Wine", "label": "๐ท Apple", "lat": 36.745, "lon": 126.742, "desc_ko": "์ถ์ฌ ์ฌ๊ณผ ์์ธ๊ณผ ๋ธ๋๋", "desc_en": "Apple wine and brandy distillery."},
|
| 28 |
+
{"name": "Muju Meoru", "category": "Wine", "label": "๐ท Wild Grape", "lat": 35.975, "lon": 127.688, "desc_ko": "๋์ ์ฐ ๋๊ตด ์์ฑ ๋จธ๋ฃจ ์์ธ", "desc_en": "Wild grape wine aged in cave."}
|
| 29 |
+
],
|
| 30 |
+
"Vietnam ๐ป๐ณ": [
|
| 31 |
+
{"name": "Bia Hoi Junction", "category": "Beer", "label": "๐บ Street Beer", "lat": 21.035, "lon": 105.852, "desc_ko": "ํ๋
ธ์ด ๋งฅ์ฃผ ๊ฑฐ๋ฆฌ. ๋ชฉ์ํ ์์์ ์์ ๋ง์๋ 500์ ์๋งฅ์ฃผ(๋น์ ํ์ด).", "desc_en": "Famous beer corner with cheap fresh beer."},
|
| 32 |
+
{"name": "Train Street", "category": "Bar", "label": "๐ Photo Spot", "lat": 21.030, "lon": 105.844, "desc_ko": "๊ธฐ์ฐป๊ธธ ๋ฐ๋ก ์์์ ๋งฅ์ฃผ ํ ์. ์ค๋ฆด๊ณผ ๋ญ๋ง.", "desc_en": "Iconic street where trains pass inches away."},
|
| 33 |
+
{"name": "Binh Minh Jazz Club", "category": "Bar", "label": "๐ท Legend", "lat": 21.035, "lon": 105.855, "desc_ko": "๋ฒ ํธ๋จ ์ฌ์ฆ์ ์๋ฒ์ง Quyen Van Minh์ ์ ์ค์ ์ธ ํด๋ฝ.", "desc_en": "Legendary jazz club behind the Opera House."},
|
| 34 |
+
{"name": "Ne Cocktail Bar", "category": "Bar", "label": "๐ธ Pho Cocktail", "lat": 21.031, "lon": 105.846, "desc_ko": "ํ๋
ธ์ด ์๊ทธ๋์ฒ 'ํฌ(Pho) ์นตํ
์ผ'์ ๋ฐ์์ง.", "desc_en": "Home of the famous Pho Cocktail."},
|
| 35 |
+
{"name": "Kumquat Tree", "category": "Bar", "label": "๐ธ Speakeasy", "lat": 21.036, "lon": 105.853, "desc_ko": "๋น๋ฐ์ค๋ฌ์ด ๋ถ์ ๋ฌธ์ ์ด๊ณ ๋ค์ด๊ฐ๋ ๋์์ ์คํผํฌ์ด์ง.", "desc_en": "Atmospheric speakeasy bar."},
|
| 36 |
+
{"name": "Pasteur Street", "category": "Beer", "label": "๐บ Craft", "lat": 21.031, "lon": 105.852, "desc_ko": "ํธ์๋ผ์ ๊ทผ์ฒ, ๋ฒ ํธ๋จ ํฌ๋ํํธ ๋งฅ์ฃผ์ ์ ์.", "desc_en": "Vietnam's original craft brewery taproom."},
|
| 37 |
+
{"name": "Standing Bar", "category": "Beer", "label": "๐บ Lake View", "lat": 21.042, "lon": 105.839, "desc_ko": "์ํธ(West Lake)๋ฅผ ๋ฐ๋ผ๋ณด๋ฉฐ ์ฆ๊ธฐ๋ ํญ ํ์ฐ์ค.", "desc_en": "Craft beer with a view of West Lake."},
|
| 38 |
+
{"name": "Lang Thang", "category": "Traditional", "label": "๐ถ Local Spirit", "lat": 21.034, "lon": 105.830, "desc_ko": "๋ฒ ํธ๋จ ์ ํต์ฃผ์ ํจ์ ํํ์ค๋ฅผ ์ฆ๊ธธ ์ ์๋ ํํ ๊ณต๊ฐ.", "desc_en": "Hip spot for local spirits and tapas."},
|
| 39 |
+
{"name": "Long Bien Bridge", "category": "Traditional", "label": "๐
Sunset", "lat": 21.042, "lon": 105.855, "desc_ko": "์ํ ํ ์ค๊ณ์๊ฐ ๋ง๋ ๋ค๋ฆฌ ์์์ ์ฆ๊ธฐ๋ ๋
ธ์๊ณผ ๋งฅ์ฃผ.", "desc_en": "Historic bridge perfect for sunset drinks."},
|
| 40 |
+
{"name": "Le Mat Snake Village", "category": "Traditional", "label": "๐ Snake Wine", "lat": 21.042, "lon": 105.896, "desc_ko": "๋ฑ ์ฌ์ฅ์ด ๋ค์ด๊ฐ ์ ์ ์ฒดํํ ์ ์๋ ๊ธฐ๋ฌํ ๋ง์.", "desc_en": "Traditional snake wine village."},
|
| 41 |
+
{"name": "Ruou Can (Highland)", "category": "Traditional", "label": "๐บ Jar Wine", "lat": 21.028, "lon": 105.850, "desc_ko": "๊ธด ๋๋๋ฌด ๋นจ๋๋ก ํญ์๋ฆฌ ์ ์ ๋๋ ๋ง์๋ ์ ํต ์ฒดํ.", "desc_en": "Traditional jar wine experience."}
|
| 42 |
+
],
|
| 43 |
+
"Japan ๐ฏ๐ต": [
|
| 44 |
+
{"name": "Suntory Yamazaki", "category": "Whiskey", "label": "๐ญ Legend", "lat": 34.892, "lon": 135.674, "desc_ko": "์ผ๋ณธ ์์คํค์ ์์ด", "desc_en": "Birthplace of Japanese whisky."},
|
| 45 |
+
{"name": "Suntory Hakushu", "category": "Whiskey", "label": "๐ญ Forest", "lat": 35.807, "lon": 138.303, "desc_ko": "์ฒ์์ ์ฆ๋ฅ์", "desc_en": "Distillery in the forest."},
|
| 46 |
+
{"name": "Nikka Yoichi", "category": "Whiskey", "label": "๐ญ Hokkaido", "lat": 43.186, "lon": 140.798, "desc_ko": "ํ์ผ์ธ ๋ฃจ์ ๊ฟ", "desc_en": "Masataka Taketsuru's dream."},
|
| 47 |
+
{"name": "Nikka Miyagikyo", "category": "Whiskey", "label": "๐ญ Sendai", "lat": 38.312, "lon": 140.654, "desc_ko": "๋ถ๋๋ฝ๊ณ ์ฐ์ํ ์์คํค", "desc_en": "Distillery known for fruity elegance."},
|
| 48 |
+
{"name": "Chichibu", "category": "Whiskey", "label": "๐ญ Craft", "lat": 36.026, "lon": 139.055, "desc_ko": "์ด์น๋ก์ค ๋ชฐํธ", "desc_en": "Home of Ichiro's Malt."},
|
| 49 |
+
{"name": "Dassai Brewery", "category": "Traditional", "label": "๐ถ Premium", "lat": 34.120, "lon": 132.029, "desc_ko": "์ค๋ฐ๋ง ๋ง์ฐฌ์ฃผ ๋ท์ฌ์ด", "desc_en": "Famous Dassai Sake."},
|
| 50 |
+
{"name": "Gekkeikan Okura", "category": "Traditional", "label": "๐ถ Sake", "lat": 34.929, "lon": 135.761, "desc_ko": "๊ตํ ์ฌ์ผ ๋ฐ๋ฌผ๊ด", "desc_en": "History of sake brewing."},
|
| 51 |
+
{"name": "Ki No Bi Kyoto", "category": "Spirits", "label": "๐ธ Craft Gin", "lat": 34.969, "lon": 135.756, "desc_ko": "๊ตํ ์ ์๋ฌผ๋ก ๋ง๋๋ ํฌ๋ํํธ ์ง", "desc_en": "Kyoto's dry gin distillery."},
|
| 52 |
+
{"name": "Sapporo Beer Museum", "category": "Beer", "label": "๐๏ธ Museum", "lat": 43.071, "lon": 141.369, "desc_ko": "์ฟํฌ๋ก ๋งฅ์ฃผ์ ์ญ์ฌ", "desc_en": "Japan's only beer museum."},
|
| 53 |
+
{"name": "Bar High Five", "category": "Bar", "label": "๐ธ Ginza", "lat": 35.671, "lon": 139.764, "desc_ko": "๊ธด์์ ์ ์ค์ ์ธ ๋ฐ", "desc_en": "Legendary bar in Ginza."}
|
| 54 |
+
],
|
| 55 |
+
"Sweden ๐ธ๐ช": [
|
| 56 |
+
{"name": "O.P. Anderson", "category": "Traditional", "label": "๐ฅ Aquavit", "lat": 62.336, "lon": 17.039, "desc_ko": "์ค์จ๋ด ์์ฟ ์๋นํธ์ ์ ์", "desc_en": "King of Swedish Aquavit."},
|
| 57 |
+
{"name": "Absolut Home", "category": "Spirits", "label": "๐ญ Vodka", "lat": 55.923, "lon": 14.294, "desc_ko": "์ฑ์๋ฃจํธ ๋ณด๋์นด์ ๊ณ ํฅ", "desc_en": "Home of Absolut Vodka."},
|
| 58 |
+
{"name": "Mackmyra", "category": "Whiskey", "label": "๐ญ Nordic", "lat": 60.638, "lon": 17.037, "desc_ko": "์ค์จ๋ด ์ค๋ ฅ ์ฆ๋ฅ์", "desc_en": "Gravity distillery."},
|
| 59 |
+
{"name": "Hernรถ Gin", "category": "Spirits", "label": "๐ธ Best Gin", "lat": 62.684, "lon": 17.794, "desc_ko": "์ธ๊ณ ์ต๋ค ์์ ์ง ์ฆ๋ฅ์", "desc_en": "Most awarded gin in Europe."},
|
| 60 |
+
{"name": "High Coast", "category": "Whiskey", "label": "๐ญ Northern", "lat": 62.983, "lon": 17.817, "desc_ko": "๋ถ์ 63๋, ์น๋ฌ์ ์์คํค", "desc_en": "Whisky from the High Coast."},
|
| 61 |
+
{"name": "Akkurat", "category": "Bar", "label": "๐บ Beer", "lat": 59.319, "lon": 18.070, "desc_ko": "์ ์ธ๊ณ ๋งฅ์ฃผ ๋ํ๋ค์ ์ฑ์ง", "desc_en": "World-famous beer bar."}
|
| 62 |
+
],
|
| 63 |
+
"Norway ๐ณ๐ด": [
|
| 64 |
+
{"name": "Himkok", "category": "Bar", "label": "๐ธ Distillery", "lat": 59.916, "lon": 10.750, "desc_ko": "์์ฒด ์ฆ๋ฅ ์์ฟ ์๋นํธ ๋ฐ", "desc_en": "In-house distillery bar."},
|
| 65 |
+
{"name": "Lรธiten Brรฆnderi", "category": "Traditional", "label": "๐ฅ Aquavit", "lat": 60.821, "lon": 11.343, "desc_ko": "๋
ธ๋ฅด์จ์ด ์์ฟ ์๋นํธ ์ญ์ฌ๊ด", "desc_en": "Aquavit history."},
|
| 66 |
+
{"name": "Arcus (Linie)", "category": "Traditional", "label": "๐ข Aquavit", "lat": 59.970, "lon": 10.930, "desc_ko": "์ ๋๋ฅผ ๋ ๋ฒ ํต๊ณผํ ๋ฆฌ๋์", "desc_en": "Equator aged Aquavit."},
|
| 67 |
+
{"name": "Aurora Spirit", "category": "Whiskey", "label": "๐ญ Arctic", "lat": 69.619, "lon": 20.272, "desc_ko": "์ธ๊ณ ์ต๋ถ๋จ ์ฆ๋ฅ์", "desc_en": "Northernmost distillery."},
|
| 68 |
+
{"name": "Nรธgne ร", "category": "Beer", "label": "๐บ Craft", "lat": 58.398, "lon": 8.643, "desc_ko": "์ ๋ฝ ํฌ๋ํํธ ๋งฅ์ฃผ์ ์ ์ค", "desc_en": "Legendary craft brewery."},
|
| 69 |
+
{"name": "รgir Bryggeri", "category": "Beer", "label": "๐บ Viking", "lat": 60.863, "lon": 7.114, "desc_ko": "ํผ์๋ฅด๋ ์ ๋ฐ์ดํน ์์กฐ์ฅ", "desc_en": "Viking style brewery."}
|
| 70 |
+
],
|
| 71 |
+
"China ๐จ๐ณ": [
|
| 72 |
+
{"name": "Kweichow Moutai", "category": "Traditional", "label": "๐ถ National", "lat": 27.842, "lon": 106.378, "desc_ko": "์ค๊ตญ์ ๊ตญ์ฃผ ๋ง์คํ์ด", "desc_en": "China's national liquor."},
|
| 73 |
+
{"name": "Wuliangye", "category": "Traditional", "label": "๐ถ Baijiu", "lat": 28.752, "lon": 104.607, "desc_ko": "๋ํฅํ ๋ฐฑ์ฃผ์ ์", "desc_en": "King of strong-aroma baijiu."},
|
| 74 |
+
{"name": "Fenjiu", "category": "Traditional", "label": "๐ถ Light", "lat": 37.332, "lon": 111.758, "desc_ko": "์ฒญํฅํ ๋ฐฑ์ฃผ์ ๋ํ", "desc_en": "Representative of light-aroma."},
|
| 75 |
+
{"name": "The Chuan", "category": "Whiskey", "label": "๐ญ Emeishan", "lat": 29.548, "lon": 103.376, "desc_ko": "ํ๋ฅด๋
ธ๋ฆฌ์นด ์ค๊ตญ ์ฆ๋ฅ์", "desc_en": "Pernod Ricard's iconic distillery."},
|
| 76 |
+
{"name": "Laizhou", "category": "Whiskey", "label": "๐ญ Sichuan", "lat": 30.297, "lon": 103.023, "desc_ko": "๋ฐ์ปค์ค ๊ทธ๋ฃน ๊ฑฐ๋ ์ฆ๋ฅ์", "desc_en": "Massive whisky distillery."},
|
| 77 |
+
{"name": "Tsingtao Museum", "category": "Beer", "label": "๐๏ธ Beer", "lat": 36.077, "lon": 120.344, "desc_ko": "์นญ๋ค์ค ๋งฅ์ฃผ ๋ฐ๋ฌผ๊ด", "desc_en": "Historic Tsingtao beer museum."},
|
| 78 |
+
{"name": "Hope & Sesame", "category": "Bar", "label": "๐ธ Speakeasy", "lat": 23.129, "lon": 113.292, "desc_ko": "๊ด์ ์ฐ ํ๋ ๋ฐ", "desc_en": "Legendary speakeasy."},
|
| 79 |
+
{"name": "Chateau Changyu", "category": "Wine", "label": "๐ท Ningxia", "lat": 38.337, "lon": 106.079, "desc_ko": "์ค๊ตญ์ ๋ชจ์ ค ์์ด๋๋ฆฌ", "desc_en": "Iconic chateau in Ningxia."}
|
| 80 |
+
],
|
| 81 |
+
"Scotland ๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": [
|
| 82 |
+
{"name": "The Macallan", "category": "Whiskey", "label": "๐ญ Speyside", "lat": 57.484, "lon": -3.206, "desc_ko": "์์คํค์ ๋กค์ค๋ก์ด์ค", "desc_en": "The Rolls-Royce of whisky."},
|
| 83 |
+
{"name": "Laphroaig", "category": "Whiskey", "label": "๐ญ Islay", "lat": 55.629, "lon": -6.153, "desc_ko": "ํผํธ ํฅ์ ์ ์", "desc_en": "Richly flavoured peaty whisky."},
|
| 84 |
+
{"name": "Glenfiddich", "category": "Whiskey", "label": "๐ญ Speyside", "lat": 57.454, "lon": -3.128, "desc_ko": "์ธ๊ณ ํ๋งค 1์ ์ฑ๊ธ๋ชฐํธ", "desc_en": "World's most awarded single malt."},
|
| 85 |
+
{"name": "Lagavulin", "category": "Whiskey", "label": "๐ญ Islay", "lat": 55.635, "lon": -6.126, "desc_ko": "์ค๋ชจํค์ ์ ์", "desc_en": "The King of Islay."},
|
| 86 |
+
{"name": "Ardbeg", "category": "Whiskey", "label": "๐ญ Islay", "lat": 55.642, "lon": -6.112, "desc_ko": "๊ถ๊ทน์ ํผํธ ๊ดด๋ฌผ", "desc_en": "The ultimate Islay malt."},
|
| 87 |
+
{"name": "The Balvenie", "category": "Whiskey", "label": "๐ญ Craft", "lat": 57.455, "lon": -3.126, "desc_ko": "์ ํต ์์ ๋ฐฉ์", "desc_en": "Dedicated to the traditional craft."},
|
| 88 |
+
{"name": "Talisker", "category": "Whiskey", "label": "๐ญ Skye", "lat": 57.302, "lon": -6.356, "desc_ko": "์ค์นด์ด ์ฌ์ ํ์ฐ ๊ฐ์ ๊ฐ๋ ฌํจ", "desc_en": "Made by the sea on Isle of Skye."},
|
| 89 |
+
{"name": "Highland Park", "category": "Whiskey", "label": "๐ญ Orkney", "lat": 58.974, "lon": -2.953, "desc_ko": "๋ฐ์ดํน์ ํผ", "desc_en": "The Viking soul of whisky."},
|
| 90 |
+
{"name": "Springbank", "category": "Whiskey", "label": "๐ญ Campbeltown", "lat": 55.426, "lon": -5.606, "desc_ko": "100% ์์ ์์คํค", "desc_en": "Handmade whisky legend."},
|
| 91 |
+
{"name": "Dalmore", "category": "Whiskey", "label": "๐ญ Highland", "lat": 57.694, "lon": -4.240, "desc_ko": "12๋ฟ ์ฌ์ด์ ์ ์ค", "desc_en": "A masterpiece of malt whisky."},
|
| 92 |
+
{"name": "Oban", "category": "Whiskey", "label": "๐ญ Highland", "lat": 56.414, "lon": -5.471, "desc_ko": "๋ฐ๋ค์ ์ก์ง๊ฐ ๋ง๋๋ ๊ณณ", "desc_en": "Where the Highlands meet the Islands."}
|
| 93 |
+
],
|
| 94 |
+
"USA ๐บ๐ธ": [
|
| 95 |
+
{"name": "Jack Daniel's", "category": "Whiskey", "label": "๐ญ Tennessee", "lat": 35.284, "lon": -86.368, "desc_ko": "๋ฏธ๊ตญ ์์คํค์ ์์ง", "desc_en": "Top selling American whiskey."},
|
| 96 |
+
{"name": "Buffalo Trace", "category": "Whiskey", "label": "๐ญ Bourbon", "lat": 38.217, "lon": -84.870, "desc_ko": "๋ฒ๋ฒ ์์คํค์ ์ ์ค", "desc_en": "Legendary bourbon distillery."},
|
| 97 |
+
{"name": "Jim Beam", "category": "Whiskey", "label": "๐ญ Bourbon", "lat": 37.931, "lon": -85.654, "desc_ko": "์ธ๊ณ 1์ ๋ฒ๋ฒ", "desc_en": "World's No.1 Bourbon."},
|
| 98 |
+
{"name": "Maker's Mark", "category": "Whiskey", "label": "๐ญ Bourbon", "lat": 37.647, "lon": -85.349, "desc_ko": "๋ถ์ ์์ค ๋ด์ธ", "desc_en": "Iconic red wax dipped."},
|
| 99 |
+
{"name": "Woodford Reserve", "category": "Whiskey", "label": "๐ญ Bourbon", "lat": 38.113, "lon": -84.811, "desc_ko": "์ผํฐํค ๋๋น ๊ณต์ ๋ฒ๋ฒ", "desc_en": "Historic distillery."},
|
| 100 |
+
{"name": "Wild Turkey", "category": "Whiskey", "label": "๐ญ Bourbon", "lat": 38.043, "lon": -84.857, "desc_ko": "๊ฐ๋ ฌํ ์ผ์์ ๋ง", "desc_en": "Authentic Kentucky Straight Bourbon."},
|
| 101 |
+
{"name": "Robert Mondavi", "category": "Wine", "label": "๐ท Napa", "lat": 38.427, "lon": -122.404, "desc_ko": "๋ํ ๋ฐธ๋ฆฌ์ ์๋ฒ์ง", "desc_en": "Soul of Napa Valley."},
|
| 102 |
+
{"name": "Opus One", "category": "Wine", "label": "๐ท Cult", "lat": 38.428, "lon": -122.409, "desc_ko": "๋ฏธ๊ตญ ์ปฌํธ ์์ธ", "desc_en": "Ultra-premium winery."},
|
| 103 |
+
{"name": "Sierra Nevada", "category": "Beer", "label": "๐บ Craft", "lat": 39.724, "lon": -121.816, "desc_ko": "ํฌ๋ํํธ ๋งฅ์ฃผ ์ ๊ตฌ์", "desc_en": "Pioneers of craft brewing."},
|
| 104 |
+
{"name": "The Dead Rabbit", "category": "Bar", "label": "๐ธ NYC Icon", "lat": 40.703, "lon": -74.011, "desc_ko": "๋ด์ ์ต๊ณ ์ ์นตํ
์ผ ํ", "desc_en": "World's best bar winner."}
|
| 105 |
+
],
|
| 106 |
+
"Ireland ๐ฎ๐ช": [
|
| 107 |
+
{"name": "Guinness Storehouse", "category": "Beer", "label": "๐บ Stout", "lat": 53.341, "lon": -6.286, "desc_ko": "๋๋ธ๋ฆฐ์ ์ฌ์ฅ, ๊ธฐ๋ค์ค", "desc_en": "Ireland's No.1 attraction."},
|
| 108 |
+
{"name": "Jameson Bow St.", "category": "Whiskey", "label": "๐ญ Whiskey", "lat": 53.348, "lon": -6.277, "desc_ko": "์ ์์จ ์์คํค", "desc_en": "Birthplace of Irish whiskey."},
|
| 109 |
+
{"name": "Teeling", "category": "Whiskey", "label": "๐ญ Whiskey", "lat": 53.337, "lon": -6.277, "desc_ko": "๋๋ธ๋ฆฐ ์์คํค ๋ถํ", "desc_en": "Reviving Dublin whiskey."},
|
| 110 |
+
{"name": "Bushmills", "category": "Whiskey", "label": "๐ญ Oldest", "lat": 55.207, "lon": -6.524, "desc_ko": "์ธ๊ณ ์ต๊ณ (ๆๅค) ๋ฉดํ ์ฆ๋ฅ์", "desc_en": "World's oldest licensed distillery."},
|
| 111 |
+
{"name": "The Temple Bar", "category": "Bar", "label": "๐ธ Pub", "lat": 53.345, "lon": -6.264, "desc_ko": "๊ฐ์ฅ ์ ๋ช
ํ ๋ถ์ ํ", "desc_en": "Dublin's iconic red pub."}
|
| 112 |
+
],
|
| 113 |
+
"France ๐ซ๐ท": [
|
| 114 |
+
{"name": "Moรซt & Chandon", "category": "Wine", "label": "๐ท Champagne", "lat": 49.043, "lon": 3.957, "desc_ko": "์นํ๋ด ์งํ ๋๊ตด, ๋ ํ๋ฆฌ๋ฝ", "desc_en": "Cellars of Dom Pรฉrignon."},
|
| 115 |
+
{"name": "Maison Hennessy", "category": "Spirits", "label": "๐ญ Cognac", "lat": 45.694, "lon": -0.327, "desc_ko": "์ธ๊ณ 1์ ์ฝ๋", "desc_en": "World's finest cognac."},
|
| 116 |
+
{"name": "Chรขteau Margaux", "category": "Wine", "label": "๐ท Bordeaux", "lat": 45.044, "lon": -0.668, "desc_ko": "๋ณด๋ฅด๋ 5๋ ์คํ ", "desc_en": "Legendary Bordeaux wine."},
|
| 117 |
+
{"name": "Citรฉ du Vin", "category": "Wine", "label": "๐๏ธ Museum", "lat": 44.862, "lon": -0.550, "desc_ko": "๋ณด๋ฅด๋ ์์ธ ๋ฐ๋ฌผ๊ด", "desc_en": "Immersive wine museum."}
|
| 118 |
+
],
|
| 119 |
+
"Germany ๐ฉ๐ช": [
|
| 120 |
+
{"name": "Hofbrรคuhaus", "category": "Beer", "label": "๐บ Beer Hall", "lat": 48.137, "lon": 11.580, "desc_ko": "๋ฎํจ ๋งฅ์ฃผํ", "desc_en": "World's famous beer hall."},
|
| 121 |
+
{"name": "Weihenstephan", "category": "Beer", "label": "๐บ Oldest", "lat": 48.395, "lon": 11.729, "desc_ko": "์ธ๊ณ ์ต๊ณ ์์กฐ์ฅ", "desc_en": "Oldest brewery."},
|
| 122 |
+
{"name": "Paulaner", "category": "Beer", "label": "๐บ Brewery", "lat": 48.121, "lon": 11.582, "desc_ko": "๋ฎํจ ๋ํ ๋ฐ๋งฅ์ฃผ", "desc_en": "Famous Munich brewery."},
|
| 123 |
+
{"name": "Schloss Johannisberg", "category": "Wine", "label": "๐ท Riesling", "lat": 50.003, "lon": 7.986, "desc_ko": "๋ฆฌ์ฌ๋ง์ ๋ฐ์์ง", "desc_en": "First Riesling winery."}
|
| 124 |
+
],
|
| 125 |
+
"Belgium ๐ง๐ช": [
|
| 126 |
+
{"name": "Cantillon", "category": "Beer", "label": "๐บ Lambic", "lat": 50.841, "lon": 4.335, "desc_ko": "์์ฐ ๋ฐํจ ๋๋น
", "desc_en": "Traditional lambic brewery."},
|
| 127 |
+
{"name": "Westvleteren", "category": "Beer", "label": "๐บ Trappist", "lat": 50.896, "lon": 2.720, "desc_ko": "์๋์ ๋งฅ์ฃผ", "desc_en": "Best beer in the world."},
|
| 128 |
+
{"name": "Delirium Cafรฉ", "category": "Bar", "label": "๐บ Pub", "lat": 50.848, "lon": 4.354, "desc_ko": "2000์ข
์ด์์ ๋งฅ์ฃผ", "desc_en": "2000+ beers on menu."}
|
| 129 |
+
],
|
| 130 |
+
"Italy ๐ฎ๐น": [
|
| 131 |
+
{"name": "Antinori", "category": "Wine", "label": "๐ท Tuscany", "lat": 43.616, "lon": 11.196, "desc_ko": "ํ ์ค์นด๋ ๊ฑธ์", "desc_en": "Architectural masterpiece."},
|
| 132 |
+
{"name": "Poli Grappa", "category": "Spirits", "label": "๐๏ธ Grappa", "lat": 45.679, "lon": 11.638, "desc_ko": "๊ทธ๋ผํ ๋ฐ๋ฌผ๊ด", "desc_en": "Museum of Grappa."},
|
| 133 |
+
{"name": "Casa Martini", "category": "Spirits", "label": "๐ธ Vermouth", "lat": 44.968, "lon": 7.769, "desc_ko": "๋งํฐ๋์ ๊ณ ํฅ", "desc_en": "Home of Martini & Rossi."}
|
| 134 |
+
],
|
| 135 |
+
"Spain ๐ช๐ธ": [
|
| 136 |
+
{"name": "Marquรฉs de Riscal", "category": "Wine", "label": "๐ท Rioja", "lat": 42.511, "lon": -2.622, "desc_ko": "๋ฆฌ์คํ ๋๋๋งํฌ", "desc_en": "Architectural wonder."},
|
| 137 |
+
{"name": "Tio Pepe", "category": "Wine", "label": "๐ท Sherry", "lat": 36.681, "lon": -6.141, "desc_ko": "์
ฐ๋ฆฌ์ ๋๋ช
์ฌ", "desc_en": "Famous Sherry winery."},
|
| 138 |
+
{"name": "Estrella Damm", "category": "Beer", "label": "๐บ Barcelona", "lat": 41.319, "lon": 2.093, "desc_ko": "๋ฐ๋ฅด์
๋ก๋ ๋งฅ์ฃผ", "desc_en": "The beer of Barcelona."}
|
| 139 |
+
],
|
| 140 |
+
"Taiwan ๐น๐ผ": [
|
| 141 |
+
{"name": "Kavalan", "category": "Whiskey", "label": "๐ญ World Class", "lat": 24.711, "lon": 121.691, "desc_ko": "๋๋ง์ ์์กด์ฌ, ์นด๋ฐ๋", "desc_en": "World-class Taiwanese whisky."},
|
| 142 |
+
{"name": "Nantou (Omar)", "category": "Whiskey", "label": "๐ญ Fruit Cask", "lat": 23.931, "lon": 120.675, "desc_ko": "๊ณผ์ผํฅ ๊ฐ๋ํ ์ค๋ง๋ฅด", "desc_en": "Famous for fruit liqueur finish."},
|
| 143 |
+
{"name": "Draft Land", "category": "Bar", "label": "๐ธ Cocktail", "lat": 25.042, "lon": 121.548, "desc_ko": "ํญ ์นตํ
์ผ ๋ฐ", "desc_en": "Cocktails on tap."}
|
| 144 |
+
],
|
| 145 |
+
"Russia ๐ท๐บ": [
|
| 146 |
+
{"name": "Russian Vodka Museum", "category": "Spirits", "label": "๐๏ธ Vodka", "lat": 59.932, "lon": 30.298, "desc_ko": "์ํธํํ
๋ฅด๋ถ๋ฅดํฌ ๋ณด๋์นด ๋ฐ๋ฌผ๊ด", "desc_en": "Museum of Russian Vodka."},
|
| 147 |
+
{"name": "Cristall Distillery", "category": "Spirits", "label": "๐ญ Historic", "lat": 55.757, "lon": 37.678, "desc_ko": "๋ชจ์คํฌ๋ฐ ์ ์ค์ ๊ณต์ฅ", "desc_en": "Legendary Moscow distillery."},
|
| 148 |
+
{"name": "El Copitas", "category": "Bar", "label": "๐ธ Bar", "lat": 59.928, "lon": 30.346, "desc_ko": "์จ๊ฒจ์ง ๋ฉ์์นธ ๋ฐ", "desc_en": "Hidden gem bar."}
|
| 149 |
+
],
|
| 150 |
+
"Poland ๐ต๐ฑ": [
|
| 151 |
+
{"name": "Polish Vodka Museum", "category": "Spirits", "label": "๐๏ธ Heritage", "lat": 52.253, "lon": 21.041, "desc_ko": "ํด๋๋ ๋ณด๋์นด ๋ฐ๋ฌผ๊ด", "desc_en": "Polish vodka heritage."},
|
| 152 |
+
{"name": "Chopin Distillery", "category": "Spirits", "label": "๐ญ Potato", "lat": 52.197, "lon": 22.315, "desc_ko": "๊ฐ์ ๋ณด๋์นด ๋ช
๊ฐ", "desc_en": "Famous potato vodka."}
|
| 153 |
+
],
|
| 154 |
+
"Finland ๐ซ๐ฎ": [
|
| 155 |
+
{"name": "Kyrรถ Distillery", "category": "Whiskey", "label": "๐ญ Rye", "lat": 62.973, "lon": 22.353, "desc_ko": "100% ํธ๋ฐ ์์คํค", "desc_en": "All-rye distillery."},
|
| 156 |
+
{"name": "Helsinki Distilling", "category": "Spirits", "label": "๐ญ Urban", "lat": 60.185, "lon": 24.975, "desc_ko": "ํฌ์ฑํค ๋์ฌ ์ฆ๋ฅ์", "desc_en": "Urban distillery."}
|
| 157 |
+
],
|
| 158 |
+
"Mexico ๐ฒ๐ฝ": [
|
| 159 |
+
{"name": "Mundo Cuervo", "category": "Spirits", "label": "๐ญ Tequila", "lat": 20.878, "lon": -103.836, "desc_ko": "๋ฐํฌ๋ผ์ ์ญ์ฌ", "desc_en": "Oldest distillery."},
|
| 160 |
+
{"name": "Los Danzantes", "category": "Spirits", "label": "๐ญ Mezcal", "lat": 16.903, "lon": -96.423, "desc_ko": "์ค์
์ฌ์นด ๋ฉ์ค์นผ", "desc_en": "Artisanal Mezcal."},
|
| 161 |
+
{"name": "Museo del Pulque", "category": "Traditional", "label": "๐ต Pulque", "lat": 19.437, "lon": -99.140, "desc_ko": "์ ๋ค์ ์๋ฃ ํ์ผ", "desc_en": "Museum of Pulque."}
|
| 162 |
+
],
|
| 163 |
+
"Brazil ๐ง๐ท": [
|
| 164 |
+
{"name": "Weber Haus", "category": "Spirits", "label": "๐น Cachaรงa", "lat": -29.567, "lon": -51.272, "desc_ko": "์นด์ค์ฌ ๋ช
๊ฐ", "desc_en": "Artisanal Cachaรงa."},
|
| 165 |
+
{"name": "Cervejaria Colorado", "category": "Beer", "label": "๐บ Craft", "lat": -21.170, "lon": -47.810, "desc_ko": "๋ธ๋ผ์ง ํฌ๋ํํธ ๋งฅ์ฃผ", "desc_en": "Brazilian craft beer."}
|
| 166 |
+
],
|
| 167 |
+
"Peru ๐ต๐ช": [
|
| 168 |
+
{"name": "Hacienda La Caravedo", "category": "Spirits", "label": "๐ Pisco", "lat": -14.005, "lon": -75.762, "desc_ko": "๋จ๋ฏธ ์ต๊ณ ํผ์ค์ฝ ์์กฐ์ฅ", "desc_en": "Oldest distillery in Americas."},
|
| 169 |
+
{"name": "Museo del Pisco", "category": "Bar", "label": "๐ธ Pisco Sour", "lat": -13.516, "lon": -71.978, "desc_ko": "ํผ์ค์ฝ ๋ฐ๋ฌผ๊ด ๋ฐ ๋ฐ", "desc_en": "Pisco tasting."},
|
| 170 |
+
{"name": "La Chicherรญa", "category": "Traditional", "label": "๐ฝ Chicha", "lat": -13.516, "lon": -71.978, "desc_ko": "์์นด ์ฅ์์ ๋ฐํจ์ฃผ", "desc_en": "Inca corn beer."}
|
| 171 |
+
],
|
| 172 |
+
"Argentina ๐ฆ๐ท": [
|
| 173 |
+
{"name": "Catena Zapata", "category": "Wine", "label": "๐ท Malbec", "lat": -33.155, "lon": -68.929, "desc_ko": "๋ฉ๋์ฌ ์์ธ ์์ง", "desc_en": "Icon of Argentine Malbec."}
|
| 174 |
+
],
|
| 175 |
+
"Canada ๐จ๐ฆ": [
|
| 176 |
+
{"name": "Canadian Club", "category": "Whiskey", "label": "๐ญ Historic", "lat": 42.324, "lon": -83.013, "desc_ko": "์ ์นดํฌ๋ค์ ์์คํค", "desc_en": "Historic Canadian whisky."},
|
| 177 |
+
{"name": "Steam Whistle", "category": "Beer", "label": "๐บ Pilsner", "lat": 43.641, "lon": -79.387, "desc_ko": "ํ ๋ก ํ ํ์ค๋", "desc_en": "Premium pilsner brewery."}
|
| 178 |
+
],
|
| 179 |
+
"India ๐ฎ๐ณ": [
|
| 180 |
+
{"name": "Amrut", "category": "Whiskey", "label": "๐ญ Single Malt", "lat": 12.868, "lon": 77.447, "desc_ko": "์ธ๋ ์์คํค ์ธ๊ณํ", "desc_en": "Pioneer of Indian single malt."},
|
| 181 |
+
{"name": "Paul John", "category": "Whiskey", "label": "๐ญ Goa Malt", "lat": 15.226, "lon": 74.004, "desc_ko": "๊ณ ์์ ์ด๋ ์์คํค", "desc_en": "Tropical whisky from Goa."},
|
| 182 |
+
{"name": "Cazulo Feni", "category": "Traditional", "label": "๐ฅฅ Heritage", "lat": 15.345, "lon": 73.921, "desc_ko": "๊ณ ์ ์ ํต์ฃผ 'ํ๋' ์ฒดํ", "desc_en": "Heritage Feni tour in Goa."}
|
| 183 |
+
],
|
| 184 |
+
"Thailand ๐น๐ญ": [
|
| 185 |
+
{"name": "Chalong Bay", "category": "Spirits", "label": "๐น Rum", "lat": 7.832, "lon": 98.349, "desc_ko": "ํธ์ผ ์ฌํ์์ ๋ผ", "desc_en": "Phuket sugarcane rum."},
|
| 186 |
+
{"name": "Tep Bar", "category": "Bar", "label": "๐ถ Thai", "lat": 13.740, "lon": 100.514, "desc_ko": "ํ๊ตญ ์ ํต์ฃผ ์ผ๋", "desc_en": "Thai herbal liquor."}
|
| 187 |
+
],
|
| 188 |
+
"Malaysia ๐ฒ๐พ": [
|
| 189 |
+
{"name": "The Old Tuak House", "category": "Traditional", "label": "๐ถ Tribal", "lat": 3.147, "lon": 101.708, "desc_ko": "๋ณด๋ฅด๋ค์ค ์ ํต์ฃผ ํฌ์
", "desc_en": "Authentic Borneo rice wine."},
|
| 190 |
+
{"name": "Bar Trigona", "category": "Bar", "label": "๐ธ Best Bar", "lat": 3.155, "lon": 101.714, "desc_ko": "์์์ ๋ฒ ์คํธ, ํ ์ข
๊ฟ", "desc_en": "Asia's 50 Best."},
|
| 191 |
+
{"name": "JungleBird", "category": "Bar", "label": "๐น Rum", "lat": 3.153, "lon": 101.621, "desc_ko": "์ธ๊ณ์ ๋ผ ๋ฐ", "desc_en": "World-renowned Rum house."}
|
| 192 |
+
],
|
| 193 |
+
"Singapore ๐ธ๐ฌ": [
|
| 194 |
+
{"name": "Long Bar", "category": "Bar", "label": "๐ธ Historic", "lat": 1.294, "lon": 103.854, "desc_ko": "์ฑ๊ฐํฌ๋ฅด ์ฌ๋ง ํ์์ง", "desc_en": "Birthplace of Singapore Sling."},
|
| 195 |
+
{"name": "Atlas", "category": "Bar", "label": "๐ธ Gin", "lat": 1.300, "lon": 103.858, "desc_ko": "์ธ๊ณ ์ต๋ ์ง ์ปฌ๋ ์
", "desc_en": "World's largest gin collection."}
|
| 196 |
+
],
|
| 197 |
+
"Mongolia ๐ฒ๐ณ": [
|
| 198 |
+
{"name": "Genghis Khan", "category": "Traditional", "label": "๐ Airag", "lat": 47.858, "lon": 107.595, "desc_ko": "์ด์์ ๋ง์ ์ฃผ ์ฒดํ", "desc_en": "Experience Airag."}
|
| 199 |
+
],
|
| 200 |
+
"Ethiopia ๐ช๐น": [
|
| 201 |
+
{"name": "Yod Abyssinia", "category": "Traditional", "label": "๐ฏ Tej", "lat": 8.995, "lon": 38.770, "desc_ko": "๋ฒ๊ฟ์ ํ
์ง", "desc_en": "Honey Wine Tej."}
|
| 202 |
+
],
|
| 203 |
+
"Georgia ๐ฌ๐ช": [
|
| 204 |
+
{"name": "Pheasant's Tears", "category": "Wine", "label": "๐บ Qvevri", "lat": 41.621, "lon": 45.922, "desc_ko": "8000๋
ํญ์๋ฆฌ ์์ธ", "desc_en": "Ancient Qvevri wine."}
|
| 205 |
+
],
|
| 206 |
+
"Czech Republic ๐จ๐ฟ": [
|
| 207 |
+
{"name": "Pilsner Urquell", "category": "Beer", "label": "๐บ Pilsner", "lat": 49.747, "lon": 13.388, "desc_ko": "๋ผ๊ฑฐ์ ์์กฐ", "desc_en": "Birthplace of Pilsner."}
|
| 208 |
+
]
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
db_json = json.dumps(PLACE_DB)
|
| 212 |
+
|
| 213 |
+
# 4. HTML/JS ์ ์ฒด ์ฝ๋
|
| 214 |
+
html_code = f"""
|
| 215 |
+
<!DOCTYPE html>
|
| 216 |
+
<html>
|
| 217 |
+
<head>
|
| 218 |
+
<meta charset="utf-8">
|
| 219 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
| 220 |
+
<title>Drunken Plane Tour</title>
|
| 221 |
+
|
| 222 |
+
<script src="https://js.puter.com/v2/"></script>
|
| 223 |
+
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
|
| 224 |
+
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
|
| 225 |
+
|
| 226 |
+
<style>
|
| 227 |
+
:root {{ --gold: #d4af37; --dark: #0a0a0a; --card-bg: #1c1c1c; --text: #e0e0e0; --accent: #c5a059; }}
|
| 228 |
+
body {{ margin: 0; padding: 0; background: var(--dark); color: var(--text); font-family: 'Segoe UI', sans-serif; overflow: hidden; }}
|
| 229 |
+
|
| 230 |
+
#main-page {{
|
| 231 |
+
position: absolute; top: 0; left: 0; width: 100%; height: 100vh;
|
| 232 |
+
background: linear-gradient(rgba(0,0,0,0.7), rgba(0,0,0,0.95)), url('https://images.unsplash.com/photo-1516981879613-9f5da904015f?q=80&w=2560&auto=format&fit=crop');
|
| 233 |
+
background-size: cover; background-position: center;
|
| 234 |
+
z-index: 5000; display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
|
| 235 |
+
padding-top: 20px; box-sizing: border-box;
|
| 236 |
+
transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
| 237 |
+
}}
|
| 238 |
+
|
| 239 |
+
.lang-switcher {{ position: absolute; top: 20px; right: 20px; z-index: 6000; display: flex; gap: 8px; }}
|
| 240 |
+
.lang-btn {{ background: rgba(0,0,0,0.5); border: 1px solid #555; color: #aaa; padding: 5px 10px; border-radius: 15px; cursor: pointer; font-size: 12px; font-weight: bold; transition: all 0.2s; }}
|
| 241 |
+
.lang-btn.active {{ background: var(--gold); color: black; border-color: var(--gold); }}
|
| 242 |
+
|
| 243 |
+
.brand-title {{ font-size: 24px; font-weight: 900; color: var(--gold); letter-spacing: 4px; margin: 20px 0 0 0; text-transform: uppercase; }}
|
| 244 |
+
.brand-subtitle {{ font-size: 11px; color: #ccc; letter-spacing: 2px; margin-bottom: 20px; }}
|
| 245 |
+
|
| 246 |
+
.country-select-wrapper {{ width: 80%; max-width: 400px; margin-bottom: 15px; }}
|
| 247 |
+
.country-select {{
|
| 248 |
+
width: 100%; padding: 12px; background: rgba(30,30,30,0.9); border: 1px solid var(--gold);
|
| 249 |
+
color: white; font-size: 16px; border-radius: 8px; outline: none; appearance: none;
|
| 250 |
+
background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23d4af37%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");
|
| 251 |
+
background-repeat: no-repeat; background-position: right 15px top 50%; background-size: 12px auto;
|
| 252 |
+
}}
|
| 253 |
+
|
| 254 |
+
.type-filter-container {{ width: 100%; padding: 10px 20px; overflow-x: auto; display: flex; gap: 8px; scrollbar-width: none; }}
|
| 255 |
+
.type-btn {{ padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: bold; cursor: pointer; background: #222; color: #888; border: 1px solid #444; white-space: nowrap; transition: all 0.2s; display: flex; align-items: center; gap: 5px; }}
|
| 256 |
+
.type-btn.selected {{ background: var(--gold); color: black; border-color: var(--gold); }}
|
| 257 |
+
|
| 258 |
+
.place-list-container {{ width: 100%; max-width: 600px; flex: 1; overflow-y: auto; padding: 10px 20px 50px 20px; box-sizing: border-box; }}
|
| 259 |
+
.place-card {{ background: rgba(30,30,30,0.6); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.1); border-radius: 12px; padding: 15px; margin-bottom: 12px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; position: relative; }}
|
| 260 |
+
.place-card:active {{ transform: scale(0.98); border-color: var(--gold); }}
|
| 261 |
+
|
| 262 |
+
.card-header {{ display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 5px; }}
|
| 263 |
+
.card-label {{ font-size: 10px; background: rgba(212, 175, 55, 0.2); color: var(--gold); padding: 3px 8px; border-radius: 4px; font-weight: bold; border: 1px solid var(--gold); }}
|
| 264 |
+
.pc-name {{ font-size: 16px; font-weight: bold; color: white; }}
|
| 265 |
+
.pc-desc {{ font-size: 12px; color: #bbb; line-height: 1.4; margin-top: 5px; }}
|
| 266 |
+
.pc-cta {{ margin-top: 10px; font-size: 11px; color: #666; text-align: right; }}
|
| 267 |
+
|
| 268 |
+
#detail-page {{ position: absolute; top: 0; left: 0; width: 100%; height: 100vh; transform: translateX(100%); transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); z-index: 6000; display: flex; flex-direction: column; background: #111; }}
|
| 269 |
+
.nav-bar {{ height: 50px; background: rgba(0,0,0,0.9); border-bottom: 1px solid #333; display: flex; align-items: center; padding: 0 15px; justify-content: space-between; }}
|
| 270 |
+
.back-btn {{ background: none; border: none; color: var(--gold); font-size: 24px; cursor: pointer; }}
|
| 271 |
+
#map {{ width: 100%; height: 35%; border-bottom: 2px solid var(--gold); }}
|
| 272 |
+
.report-container {{ flex: 1; overflow-y: auto; padding: 25px 20px 80px 20px; }}
|
| 273 |
+
.report-title {{ font-size: 24px; color: var(--gold); font-weight: bold; margin-bottom: 5px; }}
|
| 274 |
+
.report-meta {{ font-size: 12px; color: #666; margin-bottom: 20px; border-bottom: 1px solid #333; padding-bottom: 15px; }}
|
| 275 |
+
.ai-content {{ font-size: 15px; color: #ddd; line-height: 1.8; white-space: pre-wrap; }}
|
| 276 |
+
.gmap-btn {{ display: block; width: 90%; margin: 0 auto; padding: 15px 0; background: var(--gold); color: black; text-align: center; font-weight: bold; text-decoration: none; border-radius: 30px; position: fixed; bottom: 20px; left: 5%; z-index: 7000; }}
|
| 277 |
+
.gmap-btn.naver {{ background: #03C75A !important; color: white !important; }}
|
| 278 |
+
|
| 279 |
+
.loading-screen {{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); z-index: 8000; display: none; flex-direction: column; justify-content: center; align-items: center; }}
|
| 280 |
+
.loader-ring {{ width: 40px; height: 40px; border: 3px solid #333; border-top: 3px solid var(--gold); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 15px; }}
|
| 281 |
+
.loader-text {{ color: var(--gold); font-family: monospace; font-size: 13px; text-align: center; }}
|
| 282 |
+
@keyframes spin {{ 0% {{ transform: rotate(0deg); }} 100% {{ transform: rotate(360deg); }} }}
|
| 283 |
+
</style>
|
| 284 |
+
</head>
|
| 285 |
+
<body>
|
| 286 |
+
|
| 287 |
+
<div id="main-page">
|
| 288 |
+
<div class="lang-switcher">
|
| 289 |
+
<div class="lang-btn active" onclick="setLanguage('KO', this)">๐ฐ๐ท</div>
|
| 290 |
+
<div class="lang-btn" onclick="setLanguage('EN', this)">๐บ๐ธ</div>
|
| 291 |
+
<div class="lang-btn" onclick="setLanguage('JP', this)">๐ฏ๐ต</div>
|
| 292 |
+
<div class="lang-btn" onclick="setLanguage('CN', this)">๐จ๐ณ</div>
|
| 293 |
+
</div>
|
| 294 |
+
|
| 295 |
+
<div style="text-align:center;">
|
| 296 |
+
<div class="brand-title">DRUNKEN PLANE</div>
|
| 297 |
+
<div id="app-subtitle" class="brand-subtitle">GLOBAL ALCOHOL HERITAGE TOUR</div>
|
| 298 |
+
</div>
|
| 299 |
+
|
| 300 |
+
<div class="country-select-wrapper">
|
| 301 |
+
<select id="country-select" class="country-select" onchange="selectCountry(this.value)"></select>
|
| 302 |
+
</div>
|
| 303 |
+
|
| 304 |
+
<div class="type-filter-container">
|
| 305 |
+
<div class="type-btn selected" id="filter-all" onclick="filterType('All', this)">๐ All</div>
|
| 306 |
+
<div class="type-btn" id="filter-traditional" onclick="filterType('Traditional', this)">๐บ Traditional</div>
|
| 307 |
+
<div class="type-btn" id="filter-whiskey" onclick="filterType('Whiskey', this)">๐ฅ Whiskey</div>
|
| 308 |
+
<div class="type-btn" id="filter-spirits" onclick="filterType('Spirits', this)">๐ธ Spirits</div>
|
| 309 |
+
<div class="type-btn" id="filter-beer" onclick="filterType('Beer', this)">๐บ Beer</div>
|
| 310 |
+
<div class="type-btn" id="filter-wine" onclick="filterType('Wine', this)">๐ท Wine</div>
|
| 311 |
+
<div class="type-btn" id="filter-bar" onclick="filterType('Bar', this)">๐น Bar</div>
|
| 312 |
+
</div>
|
| 313 |
+
|
| 314 |
+
<div class="place-list-container" id="place-list"></div>
|
| 315 |
+
</div>
|
| 316 |
+
|
| 317 |
+
<div id="detail-page">
|
| 318 |
+
<div class="nav-bar">
|
| 319 |
+
<button class="back-btn" onclick="goBack()">โ</button>
|
| 320 |
+
<div id="report-header" style="color:white; font-weight:bold;">TRAVEL REPORT</div>
|
| 321 |
+
<div style="width:24px;"></div>
|
| 322 |
+
</div>
|
| 323 |
+
<div id="map"></div>
|
| 324 |
+
<div class="report-container">
|
| 325 |
+
<div id="repo-title" class="report-title"></div>
|
| 326 |
+
<div id="repo-meta" class="report-meta"></div>
|
| 327 |
+
<div id="repo-content" class="ai-content"></div>
|
| 328 |
+
</div>
|
| 329 |
+
<a id="gmap-link" href="#" target="_blank" class="gmap-btn">๐บ๏ธ Google Maps</a>
|
| 330 |
+
</div>
|
| 331 |
+
|
| 332 |
+
<div id="loader" class="loading-screen">
|
| 333 |
+
<div class="loader-ring"></div>
|
| 334 |
+
<div id="loader-msg" class="loader-text"></div>
|
| 335 |
+
</div>
|
| 336 |
+
|
| 337 |
+
<script>
|
| 338 |
+
const PLACE_DB = {db_json};
|
| 339 |
+
|
| 340 |
+
let map = null;
|
| 341 |
+
let currentMarker = null;
|
| 342 |
+
let selectedCountry = "";
|
| 343 |
+
let selectedType = "All";
|
| 344 |
+
let currentLang = "KO";
|
| 345 |
+
|
| 346 |
+
const TRANSLATIONS = {{
|
| 347 |
+
"KO": {{
|
| 348 |
+
"subtitle": "๊ธ๋ก๋ฒ ์ฃผ๋ฅ ํค๋ฆฌํฐ์ง ํฌ์ด",
|
| 349 |
+
"filters": {{ "All": "์ ์ฒด", "Whiskey": "์์คํค", "Spirits": "์ฆ๋ฅ์ฃผ", "Beer": "๋งฅ์ฃผ", "Wine": "์์ธ", "Traditional": "์ ํต์ฃผ/ํ ์์ฃผ", "Bar": "๋ฐ/ํ" }},
|
| 350 |
+
"report_header": "์ฌํ ๋ฆฌํฌํธ",
|
| 351 |
+
"loader": "Puter AI๊ฐ ๋ฆฌํฌํธ๋ฅผ<br>์์ฑํ๊ณ ์์ต๋๋ค...",
|
| 352 |
+
"gmap": "๊ตฌ๊ธ๋งต์์ ๊ธธ์ฐพ๊ธฐ",
|
| 353 |
+
"nmap": "๋ค์ด๋ฒ ์ง๋์์ ๊ธธ์ฐพ๊ธฐ",
|
| 354 |
+
"cta": "AI ๋ฆฌ๋ทฐ ๋ณด๊ธฐ โ",
|
| 355 |
+
"ai_error": "AI ์ฐ๊ฒฐ ๋ถ๊ฐ. ์คํ๋ผ์ธ ์ ๋ณด๋ก ๋์ฒดํฉ๋๋ค."
|
| 356 |
+
}},
|
| 357 |
+
"EN": {{
|
| 358 |
+
"subtitle": "GLOBAL ALCOHOL HERITAGE TOUR",
|
| 359 |
+
"filters": {{ "All": "All", "Whiskey": "Whiskey", "Spirits": "Spirits", "Beer": "Beer", "Wine": "Wine", "Traditional": "Traditional", "Bar": "Bar" }},
|
| 360 |
+
"report_header": "TRAVEL REPORT",
|
| 361 |
+
"loader": "Puter AI is writing...",
|
| 362 |
+
"gmap": "Open in Google Maps",
|
| 363 |
+
"nmap": "Open in Naver Map",
|
| 364 |
+
"cta": "Read Review โ",
|
| 365 |
+
"ai_error": "AI connection failed. Running offline mode."
|
| 366 |
+
}},
|
| 367 |
+
"JP": {{
|
| 368 |
+
"subtitle": "ไธ็ใฎใ้
ใใชใใผใธใใขใผ",
|
| 369 |
+
"filters": {{ "All": "ใในใฆ", "Whiskey": "ใฆใคในใญใผ", "Spirits": "่ธ็้
", "Beer": "ใใผใซ", "Wine": "ใฏใคใณ", "Traditional": "ไผ็ตฑ้
", "Bar": "ใใผ" }},
|
| 370 |
+
"report_header": "ๆ
่กใฌใใผใ",
|
| 371 |
+
"loader": "AIใไฝๆไธญ...",
|
| 372 |
+
"gmap": "Googleใใใใง้ใ",
|
| 373 |
+
"nmap": "Naverใใใใง้ใ",
|
| 374 |
+
"cta": "ใฌใใฅใผใ่ฆใ โ",
|
| 375 |
+
"ai_error": "ใชใใฉใคใณใขใผใใงๅฎ่กใใพใใ"
|
| 376 |
+
}},
|
| 377 |
+
"CN": {{
|
| 378 |
+
"subtitle": "ๅ
จ็้
็ฑป้ไบงไนๆ
",
|
| 379 |
+
"filters": {{ "All": "ๅ
จ้จ", "Whiskey": "ๅจๅฃซๅฟ", "Spirits": "็้
", "Beer": "ๅค้
", "Wine": "่ก่้
", "Traditional": "ไผ ็ป้
", "Bar": "้
ๅง" }},
|
| 380 |
+
"report_header": "ๆ
ๆธธๆฅๅ",
|
| 381 |
+
"loader": "AIๆญฃๅจๅไฝ...",
|
| 382 |
+
"gmap": "ๅจ่ฐทๆญๅฐๅพไธญๆๅผ",
|
| 383 |
+
"nmap": "ๅจNaverๅฐๅพไธญๆๅผ",
|
| 384 |
+
"cta": "ๆฅ็่ฏ่ฎบ โ",
|
| 385 |
+
"ai_error": "ไปฅ็ฆป็บฟๆจกๅผ่ฟ่กใ"
|
| 386 |
+
}}
|
| 387 |
+
}};
|
| 388 |
+
|
| 389 |
+
window.onload = function() {{
|
| 390 |
+
initCountryDropdown();
|
| 391 |
+
// Default select
|
| 392 |
+
const keys = Object.keys(PLACE_DB).sort();
|
| 393 |
+
const defaultKey = keys.find(k => k.includes("Korea")) || keys[0];
|
| 394 |
+
document.getElementById('country-select').value = defaultKey;
|
| 395 |
+
selectCountry(defaultKey);
|
| 396 |
+
updateUIText();
|
| 397 |
+
}};
|
| 398 |
+
|
| 399 |
+
function setLanguage(lang, el) {{
|
| 400 |
+
currentLang = lang;
|
| 401 |
+
document.querySelectorAll('.lang-btn').forEach(b => b.classList.remove('active'));
|
| 402 |
+
el.classList.add('active');
|
| 403 |
+
updateUIText();
|
| 404 |
+
renderList();
|
| 405 |
+
}}
|
| 406 |
+
|
| 407 |
+
function updateUIText() {{
|
| 408 |
+
const t = TRANSLATIONS[currentLang];
|
| 409 |
+
document.getElementById('app-subtitle').innerText = t.subtitle;
|
| 410 |
+
document.getElementById('report-header').innerText = t.report_header;
|
| 411 |
+
document.getElementById('loader-msg').innerHTML = t.loader;
|
| 412 |
+
|
| 413 |
+
document.getElementById('filter-all').innerText = `๐ ${{t.filters.All}}`;
|
| 414 |
+
document.getElementById('filter-whiskey').innerText = `๐ฅ ${{t.filters.Whiskey}}`;
|
| 415 |
+
document.getElementById('filter-spirits').innerText = `๐ธ ${{t.filters.Spirits}}`;
|
| 416 |
+
document.getElementById('filter-beer').innerText = `๐บ ${{t.filters.Beer}}`;
|
| 417 |
+
document.getElementById('filter-wine').innerText = `๐ท ${{t.filters.Wine}}`;
|
| 418 |
+
document.getElementById('filter-traditional').innerText = `๐บ ${{t.filters.Traditional}}`;
|
| 419 |
+
document.getElementById('filter-bar').innerText = `๐น ${{t.filters.Bar}}`;
|
| 420 |
+
}}
|
| 421 |
+
|
| 422 |
+
function initCountryDropdown() {{
|
| 423 |
+
const select = document.getElementById('country-select');
|
| 424 |
+
const keys = Object.keys(PLACE_DB).sort();
|
| 425 |
+
keys.forEach(country => {{
|
| 426 |
+
const option = document.createElement('option');
|
| 427 |
+
option.value = country;
|
| 428 |
+
option.text = country;
|
| 429 |
+
select.appendChild(option);
|
| 430 |
+
}});
|
| 431 |
+
}}
|
| 432 |
+
|
| 433 |
+
function selectCountry(country) {{
|
| 434 |
+
selectedCountry = country;
|
| 435 |
+
renderList();
|
| 436 |
+
}}
|
| 437 |
+
|
| 438 |
+
function filterType(type, el) {{
|
| 439 |
+
selectedType = type;
|
| 440 |
+
document.querySelectorAll('.type-btn').forEach(b => b.classList.remove('selected'));
|
| 441 |
+
el.classList.add('selected');
|
| 442 |
+
renderList();
|
| 443 |
+
}}
|
| 444 |
+
|
| 445 |
+
function renderList() {{
|
| 446 |
+
const list = document.getElementById('place-list');
|
| 447 |
+
list.innerHTML = "";
|
| 448 |
+
|
| 449 |
+
const places = PLACE_DB[selectedCountry];
|
| 450 |
+
const filtered = selectedType === "All" ? places : places.filter(p => p.category === selectedType);
|
| 451 |
+
|
| 452 |
+
if (filtered.length === 0) {{
|
| 453 |
+
list.innerHTML = "<div style='color:#888; text-align:center; padding:20px;'>No places found.</div>";
|
| 454 |
+
return;
|
| 455 |
+
}}
|
| 456 |
+
|
| 457 |
+
const t = TRANSLATIONS[currentLang];
|
| 458 |
+
|
| 459 |
+
filtered.forEach(place => {{
|
| 460 |
+
const card = document.createElement('div');
|
| 461 |
+
card.className = 'place-card';
|
| 462 |
+
card.onclick = () => openDetail(place);
|
| 463 |
+
|
| 464 |
+
let desc = currentLang === 'KO' ? place.desc_ko : place.desc_en;
|
| 465 |
+
if(currentLang === 'JP' || currentLang === 'CN') desc = place.desc_en;
|
| 466 |
+
|
| 467 |
+
card.innerHTML = `
|
| 468 |
+
<div class="card-header">
|
| 469 |
+
<div class="pc-name">${{place.name}}</div>
|
| 470 |
+
<div class="card-label">${{place.label}}</div>
|
| 471 |
+
</div>
|
| 472 |
+
<div class="pc-desc">${{desc}}</div>
|
| 473 |
+
<div class="pc-cta">${{t.cta}}</div>
|
| 474 |
+
`;
|
| 475 |
+
list.appendChild(card);
|
| 476 |
+
}});
|
| 477 |
+
}}
|
| 478 |
+
|
| 479 |
+
async function openDetail(place) {{
|
| 480 |
+
document.getElementById('main-page').style.transform = 'translateX(-30%)';
|
| 481 |
+
document.getElementById('detail-page').style.transform = 'translateX(0%)';
|
| 482 |
+
document.getElementById('loader').style.display = 'flex';
|
| 483 |
+
|
| 484 |
+
document.getElementById('repo-title').innerText = place.name;
|
| 485 |
+
document.getElementById('repo-meta').innerText = `${{place.label}} โข ${{selectedCountry}}`;
|
| 486 |
+
|
| 487 |
+
// ๐ฅ Map Logic: Korea -> Naver, Others -> Google
|
| 488 |
+
const btn = document.getElementById('gmap-link');
|
| 489 |
+
const isKorea = selectedCountry.includes("Korea");
|
| 490 |
+
const query = encodeURIComponent(place.name);
|
| 491 |
+
|
| 492 |
+
if (isKorea) {{
|
| 493 |
+
btn.innerText = TRANSLATIONS[currentLang].nmap;
|
| 494 |
+
btn.classList.add("naver");
|
| 495 |
+
btn.href = `https://map.naver.com/v5/search/${{query}}`;
|
| 496 |
+
}} else {{
|
| 497 |
+
btn.innerText = TRANSLATIONS[currentLang].gmap;
|
| 498 |
+
btn.classList.remove("naver");
|
| 499 |
+
btn.href = `https://www.google.com/maps/search/?api=1&query=${{query}}%20${{selectedCountry}}`;
|
| 500 |
+
}}
|
| 501 |
+
|
| 502 |
+
document.getElementById('repo-content').innerHTML = "";
|
| 503 |
+
|
| 504 |
+
if (!map) {{
|
| 505 |
+
map = L.map('map');
|
| 506 |
+
L.tileLayer('https://{{s}}.tile.openstreetmap.org/{{z}}/{{x}}/{{y}}.png', {{ attribution: 'ยฉ OpenStreetMap' }}).addTo(map);
|
| 507 |
+
}}
|
| 508 |
+
setTimeout(() => {{
|
| 509 |
+
map.invalidateSize();
|
| 510 |
+
map.setView([place.lat, place.lon], 15);
|
| 511 |
+
if (currentMarker) map.removeLayer(currentMarker);
|
| 512 |
+
currentMarker = L.marker([place.lat, place.lon]).addTo(map).bindPopup(place.name).openPopup();
|
| 513 |
+
}}, 300);
|
| 514 |
+
|
| 515 |
+
let fallbackDesc = currentLang === 'KO' ? place.desc_ko : place.desc_en;
|
| 516 |
+
if(currentLang === 'JP' || currentLang === 'CN') fallbackDesc = place.desc_en;
|
| 517 |
+
|
| 518 |
+
await generatePuterReport(place, fallbackDesc);
|
| 519 |
+
}}
|
| 520 |
+
|
| 521 |
+
async function generatePuterReport(place, fallbackDesc) {{
|
| 522 |
+
let langFull = "Korean";
|
| 523 |
+
if(currentLang === "EN") langFull = "English";
|
| 524 |
+
if(currentLang === "JP") langFull = "Japanese";
|
| 525 |
+
if(currentLang === "CN") langFull = "Chinese";
|
| 526 |
+
|
| 527 |
+
const prompt = `
|
| 528 |
+
Act as a professional alcohol critic and travel expert.
|
| 529 |
+
Write a detailed analysis of "${{place.name}}" in ${{selectedCountry}}.
|
| 530 |
+
|
| 531 |
+
Strictly follow this structure:
|
| 532 |
+
1. ๐ **Address**: (Find approximate address)
|
| 533 |
+
2. โญ **Reputation**: (Summarize visitor ratings and atmosphere)
|
| 534 |
+
3. ๐ท **Signature Drink & Process**: (Describe the key drink and brief brewing/distilling process)
|
| 535 |
+
4. โจ **The Experience**: (What makes this place special?)
|
| 536 |
+
|
| 537 |
+
Language: ${{langFull}}.
|
| 538 |
+
Length: Concise but detailed (approx 600 chars).
|
| 539 |
+
Format: Clean Markdown.
|
| 540 |
+
`;
|
| 541 |
+
|
| 542 |
+
try {{
|
| 543 |
+
// Puter.js ํธ์ถ
|
| 544 |
+
const response = await puter.ai.chat(prompt);
|
| 545 |
+
|
| 546 |
+
let text = "";
|
| 547 |
+
if (typeof response === 'string') {{
|
| 548 |
+
text = response;
|
| 549 |
+
}} else if (response && response.message && response.message.content) {{
|
| 550 |
+
text = response.message.content;
|
| 551 |
+
}} else {{
|
| 552 |
+
throw new Error("Invalid Puter response");
|
| 553 |
+
}}
|
| 554 |
+
|
| 555 |
+
document.getElementById('loader').style.display = 'none';
|
| 556 |
+
|
| 557 |
+
// ํ์ดํ ํจ๊ณผ ์ ๊ฑฐ -> ์ฆ์ ๋ ๋๋ง
|
| 558 |
+
const el = document.getElementById('repo-content');
|
| 559 |
+
el.innerHTML = text.replace(/\\n/g, '<br>');
|
| 560 |
+
|
| 561 |
+
}} catch(e) {{
|
| 562 |
+
console.warn(e);
|
| 563 |
+
generateLocalReport(place, fallbackDesc);
|
| 564 |
+
}}
|
| 565 |
+
}}
|
| 566 |
+
|
| 567 |
+
function generateLocalReport(place, dbDesc) {{
|
| 568 |
+
document.getElementById('loader').style.display = 'none';
|
| 569 |
+
const report = `
|
| 570 |
+
โจ **[Offline Info] ${{TRANSLATIONS[currentLang].ai_error}}**
|
| 571 |
+
|
| 572 |
+
**${{place.name}}**
|
| 573 |
+
|
| 574 |
+
${{dbDesc}}
|
| 575 |
+
|
| 576 |
+
This place is highly recommended for travelers seeking authentic experiences in ${{selectedCountry}}.
|
| 577 |
+
You can enjoy unique flavors and a great atmosphere here.
|
| 578 |
+
|
| 579 |
+
(Click the Map button below for details.)
|
| 580 |
+
`;
|
| 581 |
+
|
| 582 |
+
const el = document.getElementById('repo-content');
|
| 583 |
+
el.innerHTML = report.replace(/\\n/g, '<br>');
|
| 584 |
+
}}
|
| 585 |
+
|
| 586 |
+
function goBack() {{
|
| 587 |
+
document.getElementById('detail-page').style.transform = 'translateX(100%)';
|
| 588 |
+
document.getElementById('main-page').style.transform = 'translateX(0%)';
|
| 589 |
+
}}
|
| 590 |
+
|
| 591 |
+
</script>
|
| 592 |
+
</body>
|
| 593 |
+
</html>
|
| 594 |
+
"""
|
| 595 |
+
|
| 596 |
+
components.html(html_code, height=1000, scrolling=True)
|