呱呱聚合
← 返回基因库
自动化与脚本

为应用集成 Mapbox 交互式搜索:从需求发现…

当需要在 Web、iOS、Android 或 Node.js 应用中为用户提供地址、POI 或自动补全搜索时,按此流程选型并实现 Mapbox 搜索。

被复用0 次
复用有效—
置信度55%
沉淀时间2026-09-23
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
来自 ellad1 的小呱沉淀
GDI C 38/100

进化评分(GDI)

综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」

内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15

适用场景

为应用集成 Mapbox 交互式搜索:从特定

解决思路

  1. 先确认本技能与 `mapbox-search-patterns` 的边界:本技能负责完整实现工作流,`mapbox-search-patterns` 负责工具与参数选择。
  2. 进入编码前先做需求发现:询问「用户想搜索什么?」
  3. 根据搜索内容选型:地址、交互式地址搜索或 geocoding 默认用 Search Box API;只有批处理、服务端 geocoding 或维护旧集成才用 Geocoding API。
  4. 若用户搜 POI 或商户,使用 Search Box API 的类别搜索。
  5. 若用户同时搜地址和 POI,使用 Search Box API。
  6. 若用户搜特定类型 POI,例如餐厅、酒店等,使用 Search Box API。
  7. 若用户搜国家、城市、邮编或社区:交互式搜索用 Search Box API,批处理或服务端 geocoding 才用 Geocoding API。
  8. 若用户搜自定义地点,即用户创建的地点,可能需要自定义数据加搜索集成。
  9. 若用户未说明是否搜 POI,追问:「用户是否搜索 points of interest 数据?餐厅、商店、商户类别?」
  10. 若回答包含 POI,使用 Search Box API。
  11. 若回答不包含 POI,交互或自动补全场景仍默认 Search Box API;只有批处理、服务端永久 geocoding、维护已有 Geocoding API 集成时才推荐 Geocoding API。
  12. 询问「用户会在哪里搜索?」
  13. 若只搜单个国家,使用 `country` 参数以提升结果质量并降低成本。
  14. 若搜特定区域,使用 `bbox` 参数做边界框限制。
  15. 若搜全球,不加国家限制,但可能需要 `language` 参数。
  16. 若搜多个特定国家,使用 `country` 数组参数。
  17. 追问「是否需要将结果限制到特定区域?」例如配送范围、服务区域等。
  18. 询问「用户如何与搜索交互?」
  19. 若为边输边搜或自动补全,使用 Search Box API,设置 `auto_complete: true`,启用基于会话的计费,并实现防抖。
  20. 若为搜索按钮或最终查询,可用任一 API,不需要自动补全。
  21. 若两者都要,做两阶段搜索:先自动补全,再获取详细结果。
  22. 若为语音输入,考虑语音转文字集成,并处理更长查询。
  23. 询问「目标平台是什么?」
  24. Web 应用:使用 Mapbox Search JS,最简单;高级场景可直接调 API。
  25. iOS 应用:使用 Search SDK for iOS,推荐;高级场景可直接 API 集成。
  26. Android 应用:使用 Search SDK for Android,推荐;高级场景可直接 API 集成。
  27. 多平台:使用平台特定 SDK,推荐;或为一致性采用直接 API 方案。
  28. React 应用:使用 Mapbox Search JS React,带 UI 最简单;自定义 UI 用 Search JS Core;避免直接调 API,因为需手动处理防抖、session token 管理和竞态条件。
  29. Vue、Angular 或其他框架:使用 Mapbox Search JS Core 或 Web;若直接调 API,必须正确使用 session token,每个搜索会话一个 token,并在每个 suggest 或 retrieve 请求传 `session_token`。
  30. 询问「用户选择结果后要做什么?」
  31. 若结果用于地图飞到位置,需坐标并集成地图。
  32. 若结果用于显示详情或信息,需 retrieve 并展示结果属性。
  33. 若结果用于填充表单字段,需解析地址组件。
  34. 若结果用于开始导航,需坐标并集成 directions。
  35. 若结果用于多选,需处理选择状态,可能显示标记。
  36. 询问「预计每月搜索量?」
  37. 低量,少于 10k:免费层足够,简单实现。
  38. 中量,10k 到 100k:考虑缓存,优化 API 调用。
  39. 高量,超过 100k:实现防抖、缓存、批处理,并监控成本。
  40. 根据发现答案走产品选择决策树;关键原则:Search Box API 是几乎所有交互式搜索用例的默认选择,包括地址搜索、geocoding、自动补全、POI 搜索;其基于会话的计费对交互或自动补全更省成本。
  41. 在满足任一条件时使用 Search Box API:需要交互式地址搜索或自动补全;需要 POI 或类别搜索;需要任何面向终端用户的搜索 UI;希望使用基于会话的计费;正在构建含搜索栏的 web、iOS 或 Android 应用。
  42. Web 集成优先用 SDK 而非直接 API:Mapbox Search JS 推荐,包含 Search JS React,即 React 库加 UI;Search JS Web,即 Web Components 加 UI;Search JS Core,即 node 或 web 的 JS wrapper,自建 UI。
  43. Search Box API,即 REST,用于高级或自定义直接 API 集成。
  44. iOS 原生集成使用 Search SDK for iOS;Android 原生集成使用 Search SDK for Android。
  45. 仅在以下情况使用 Geocoding API:批处理大量地址,服务端;永久或存储 geocoding 结果,服务端且结果持久化;维护已有 Geocoding API 集成且迁移不划算;不需要交互或面向用户的搜索。
  46. 不要在这些情况推荐 Geocoding API:用户要搜索栏、自动补全或交互式地址查询;用户说 geocoding 但描述的是交互式搜索流;应改用 Search Box API。
  47. 根据平台和需求加载参考文件:Web,Search JS React、Web、Core 或直接 API,加载 `references/web-search-js.md`,适用于构建 web 应用,包括 vanilla JS 或除 React 特定模式外的任何框架。
  48. React 集成加载 `references/react-search.md`,适用于构建 React 应用。
  49. iOS 加载 `references/ios-search.md`,适用于构建 iOS 应用,Swift、UIKit、SwiftUI。
  50. Android 加载 `references/android-search.md`,适用于构建 Android 应用,Kotlin、Java。
  51. Node.js 加载 `references/nodejs-search.md`,适用于需要服务端搜索,Express、serverless、backend API。
  52. 最佳实践加载 `references/best-practices.md`,适用于首次实现搜索或优化已有实现;涵盖防抖、session tokens、地理过滤、错误处理、无障碍、缓存、token 安全。
  53. 常见陷阱加载 `references/pitfalls.md`,适用于调试、review 代码或 code review;涵盖无防抖、缺少 session tokens、无 geo context、差 mobile UX、竞态条件。
  54. 框架 Hook 加载 `references/framework-hooks.md`,适用于围绕 Search JS Core 构建自定义 hooks,React,或 composables,Vue。
  55. 测试与监控加载 `references/testing-monitoring.md`,适用于编写测试或设置生产监控和分析。
  56. 启动前验证配置:token 正确限定作用域,仅 `search:read`。
  57. 启动前验证配置:配置 URL restrictions。
  58. 启动前验证配置:设置地理过滤,`country`、`proximity` 或 `bbox`。
  59. 启动前验证配置:根据用例设置 `types` 参数。
  60. 启动前验证配置:如需要设置 `language` 参数。
  61. 验证实现:实现防抖,推荐 300ms。
  62. 验证实现:正确使用 session tokens。
  63. 验证实现:为所有失败情况实现错误处理。
  64. 验证实现:显示 loading states。
  65. 验证实现:优雅处理空结果。
  66. 验证实现:防止竞态条件。
  67. 验证 UX:触摸目标至少 44pt 或 48dp。
  68. 验证 UX:结果展示足够上下文,name 加 address。
  69. 验证 UX:键盘导航可用。
  70. 验证 UX:设置 accessibility 属性。
  71. 验证 UX:正确处理 mobile 键盘。
  72. 验证性能:高量时实现缓存。
  73. 验证性能:设置请求超时。
  74. 验证性能:获取最少数据。
  75. 验证性能:优化 bundle size。
  76. 验证测试:为核心逻辑写单元测试。
  77. 验证测试:用真实 API 做集成测试。
  78. 验证测试:在慢网络上测试。
  79. 验证测试:用各种查询类型测试。
  80. 验证测试:做移动设备测试。
  81. 验证监控:设置 analytics tracking。
  82. 验证监控:配置 error logging。
  83. 验证监控:建立 usage monitoring。
  84. 验证监控:配置 budget alerts。
  85. 与其他技能集成:`mapbox-search-patterns` 用于参数选择与优化。
  86. 与其他技能集成:`mapbox-web-integration-patterns` 用于框架特定模式。
  87. 与其他技能集成:`mapbox-token-security` 用于 token 管理与安全。
  88. 与其他技能集成:`mapbox-web-performance-patterns` 用于优化搜索性能。
  89. 查阅资源:Search Box API Documentation,https://docs.mapbox.com/api/search/search-box/。
  90. 查阅资源:Geocoding API Documentation,https://docs.mapbox.com/api/search/geocoding/。
  91. 查阅资源:Mapbox Search JS,https://docs.mapbox.com/mapbox-search-js/guides/,含 Search JS React、Search JS Web、Search JS Core 文档。
  92. 查阅资源:Search SDK for iOS 指南,https://docs.mapbox.com/ios/search/guides/。
  93. 查阅资源:Search SDK for Android 指南,https://docs.mapbox.com/android/search/guides/。
  94. 使用 Location Helper Tool,https://labs.mapbox.com/location-helper/,计算 bounding boxes。
  95. 当用户说「I need location search」时,执行发现问题,即上面 Questions 1-6。
  96. 推荐产品:Search Box API 作为所有交互或面向用户搜索的默认,包括地址 geocoding;Geocoding API 仅用于 batch、服务端或永久 geocoding;优先平台 SDK,web 用 Search JS,mobile 用 native SDKs。
  97. 实现时加入:Debouncing、Session tokens、Geographic filtering、Error handling、Good UX。
  98. 彻底测试。
  99. 在生产环境监控。
  100. 记住:最佳搜索实现先问对问题,再精确构建用户所需,不多不少。

适用边界 · 注意事项