radius 同时表示出行时间预算:每个距离档位都对应一个通常所需的出行时间,服务端据此为每家店铺计算最快的到达方式(步行 / 骑行 / 地铁),因此地铁可达的店铺可能超出半径范围——结果始终按出行时间排序,并按 limit 截断。当地铁数据可用时(原点 3 km 内有运营车站),响应还会附带 metro 行程块:包含最快方式为地铁的店铺的完整行程(乘车站序、官方线路色与短号),浏览器可直接渲染,无需额外请求。注意:limit=150 且命中较多地铁行程时响应可达约 270 KB(gzip 后约 90 KB)。radius doubles as the travel-time budget: each distance option implies the time it typically takes, and the server computes each shop’s fastest option (walk / ride / metro) accordingly — so metro-reachable shops may sit beyond the radius. Results are always ranked by travel time and cut to limit. When metro data is available (origin within 3 km of an operating station), the response also carries a metro itinerary block covering the shops whose fastest option is the metro (station sequences, official line colors and short codes) — ready to render with zero follow-up requests. Note: with limit=150 and many metro itineraries the response can reach ~270 KB (~90 KB gzipped).curl --location 'https://nearcade.cn/api/discover?longitude=undefined&latitude=undefined&radius=undefined&limit=undefined&f=undefined&gameTitleIds=undefined&name=undefined&fetchAttendance=undefined&includeTimeInfo=undefined&convertFrom=undefined&lat=undefined&lng=undefined'{
"shops": [
{
"id": -9007199254740991,
"name": "string",
"comment": "string",
"address": {
"general": [
"string"
],
"detailed": "string",
"region": [
{
"id": "string",
"name": "string"
}
]
},
"openingHours": [
[
{
"hour": 0,
"minute": 0
},
{
"hour": 0,
"minute": 0
}
]
],
"games": [
{
"gameId": -9007199254740991,
"titleId": -9007199254740991,
"name": "string",
"version": "string",
"comment": "",
"quantity": 1,
"cost": "",
"totalAttendance": 0
}
],
"location": {
"type": "Point",
"coordinates": []
},
"timezone": {
"name": "string",
"offset": 0
},
"isOpen": true,
"isClaimed": true,
"ownerId": "string",
"isLocked": true,
"isClosed": true,
"closedReason": "string",
"transit": {
"metro": {
"networkId": "string",
"stationId": "string",
"stationName": "string",
"names": {
"zh": "string",
"en": "string"
},
"walkSeconds": 0,
"distanceKm": 0,
"lines": [
{
"id": "string",
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"color": "string",
"shortName": "string"
}
]
}
},
"createdAt": "2019-08-24T14:15:22.123Z",
"updatedAt": "2019-08-24T14:15:22.123Z",
"distance": 0,
"travel": {
"seconds": 0,
"metroSeconds": 0
},
"totalAttendance": 0,
"currentReportedAttendance": {
"reportedAt": "2019-08-24T14:15:22.123Z",
"reportedBy": "string",
"reporter": {
"id": "string",
"name": "string",
"image": "string",
"displayName": "string"
},
"comment": "string"
}
}
],
"location": {
"name": "string",
"latitude": 0,
"longitude": 0
},
"radius": 0,
"limit": 0,
"gameTitleIds": [
0
],
"metro": {
"network": {
"id": "string",
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"cityRegionId": "string"
},
"origin": {
"stationId": "string",
"stationName": "string",
"names": {
"zh": "string",
"en": "string"
},
"walkSeconds": 0,
"lon": 0,
"lat": 0
},
"lines": {
"property1": {
"id": "string",
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"color": "string",
"shortName": "string"
},
"property2": {
"id": "string",
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"color": "string",
"shortName": "string"
}
},
"stations": {
"property1": {
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"lon": 0,
"lat": 0
},
"property2": {
"name": "string",
"names": {
"zh": "string",
"en": "string"
},
"lon": 0,
"lat": 0
}
},
"shops": {
"property1": {
"totalSeconds": 0,
"rideSeconds": 0,
"transferCount": 0,
"legs": [
{
"kind": "ride",
"lineId": "string",
"stationIds": [
"string"
],
"seconds": 0,
"distanceKm": 0,
"direction": "string"
}
]
},
"property2": {
"totalSeconds": 0,
"rideSeconds": 0,
"transferCount": 0,
"legs": [
{
"kind": "ride",
"lineId": "string",
"stationIds": [
"string"
],
"seconds": 0,
"distanceKm": 0,
"direction": "string"
}
]
}
}
}
}