feat: 支持创建房间时指定位置搜索餐厅

新增位置搜索框,通过高德输入提示 API 提供地点联想,
用户可选择指定位置或使用默认当前定位来查询周边餐厅。
This commit is contained in:
2026-02-24 18:06:48 +08:00
parent 48e74c03e6
commit 4e2d11f0a5
2 changed files with 200 additions and 6 deletions
+52
View File
@@ -0,0 +1,52 @@
import { NextResponse } from "next/server";
export async function GET(req: Request) {
const { searchParams } = new URL(req.url);
const keywords = searchParams.get("keywords")?.trim();
if (!keywords) {
return NextResponse.json([]);
}
const apiKey = process.env.AMAP_API_KEY;
if (!apiKey) {
return NextResponse.json(
{ error: "AMAP_API_KEY not configured" },
{ status: 500 },
);
}
try {
const url = new URL("https://restapi.amap.com/v3/assistant/inputtips");
url.searchParams.set("key", apiKey);
url.searchParams.set("keywords", keywords);
url.searchParams.set("datatype", "poi");
const res = await fetch(url.toString());
const data = await res.json();
if (data.status !== "1" || !data.tips) {
return NextResponse.json([]);
}
const suggestions = data.tips
.filter((t: { location?: string }) => t.location && t.location !== "")
.slice(0, 8)
.map((t: { id: string; name: string; district?: string; address?: string; location: string }) => {
const [lng, lat] = t.location.split(",").map(Number);
return {
id: t.id,
name: t.name,
district: t.district || "",
address: t.address || "",
lat,
lng,
};
});
return NextResponse.json(suggestions);
} catch (e) {
console.error("Location suggest error:", e);
return NextResponse.json([]);
}
}