wing-ops/frontend/package.json
Nan Kyung Lee aba58b2227 feat(map): 3D 지도 토글 구현 (VWorld 위성 + OSM 건물 extrusion)
- mapStore.ts(신규): Zustand 기반 mapToggles 전역 상태 (s57/s101/threeD/satellite)
- TopBar.tsx: 로컬 상태 → mapStore 전환 (3D 토글 전역 공유)
- MapView.tsx:
  - SATELLITE_3D_STYLE 추가 (VWorld WMTS 위성 + OpenFreeMap 벡터타일)
  - MapLibre fill-extrusion으로 3D 건물 렌더링 (zoom 13+, render_height 사용)
  - MapPitchController: 3D ON → pitch 45°/bearing -17°, OFF → 0° 복귀
  - mapToggles.threeD 상태에 따라 지도 스타일 전환 (BASE_STYLE ↔ SATELLITE_3D_STYLE)
- deps: @deck.gl/mesh-layers, @deck.gl/extensions 추가 (관련 기능용)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 21:28:30 +09:00

55 lines
1.5 KiB
JSON
Executable File

{
"name": "frontend",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@deck.gl/aggregation-layers": "^9.2.10",
"@deck.gl/core": "^9.2.10",
"@deck.gl/extensions": "^9.2.10",
"@deck.gl/geo-layers": "^9.2.10",
"@deck.gl/layers": "^9.2.10",
"@deck.gl/mapbox": "^9.2.10",
"@deck.gl/mesh-layers": "^9.2.10",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@emoji-mart/data": "^1.2.1",
"@emoji-mart/react": "^1.1.1",
"@react-oauth/google": "^0.13.4",
"@tanstack/react-query": "^5.90.21",
"@vis.gl/react-maplibre": "^8.1.0",
"axios": "^1.13.5",
"emoji-mart": "^5.6.0",
"lucide-react": "^0.564.0",
"maplibre-gl": "^5.19.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"socket.io-client": "^4.8.3",
"zustand": "^5.0.11"
},
"devDependencies": {
"@eslint/js": "^9.39.1",
"@types/node": "^24.10.1",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.1",
"autoprefixer": "^10.4.24",
"eslint": "^9.39.1",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.24",
"globals": "^16.5.0",
"postcss": "^8.5.6",
"tailwindcss": "^3.4.19",
"typescript": "~5.9.3",
"typescript-eslint": "^8.48.0",
"vite": "^7.3.1"
}
}