发现
discover 包提供了一组类库,帮助开发者构建面向"类目(category)"和"品牌(brand)"的发现类能力。下面是当前可用的发现功能:
- Get Categories — 获取完整的类目层级。
- Discover Category — 探索指定位置周围存在哪些 POI 类目。
- Discover Brand — 探索指定位置周围存在哪些 POI 品牌。
- Discover Place — 按指定类目发现地点。
主要的 Discover 相关类请参见 API reference。
Get Categories
Get Categories 能力用于获取完整的类目层级。通过该方法可以拿到所有可用的类目,包括其 id 和在层级中的层级位置。该能力可以用来构建层级化的应用界面,也可以单纯作为工具拉取 Telenav 完整类目树。由于该方法不涉及任何位置上下文,调用时不需要设置位置或其他输入参数。开发者只需调用 getCategoriesRequest 方法,并处理返回的 EntityGetCategoriesResponse 即可。
关键方法
| 方法 | 说明 |
|---|---|
| setLocale(Locale locale) | 响应内容的语言偏好,例如 Locale.US。选填 |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Discover Category
说明
本 API 当前为 beta 版本。
Discover Category 能力用于探索指定位置周围指定Category下存在哪些子类目。例如,传入"restaurants"对应的父类目 id,即可发现该位置周围所有菜 系子类目。
关键方法
| 方法 | 说明 |
|---|---|
| setLocation(double latitude, double longitude) | 用户当前位置坐标。必填 |
| setCategory(String categoryId) | 父类目 id,用于将发现范围限定为该父类目下的子类目。由 Get Categories API 返回。必填 |
| setLimit(Integer limit) | 返回结果数量,默认值 10。选填 |
| setLocale(Locale locale) | 响应内容的语言偏好。选填 |
| setFilters(DiscoverFilters filters) | 地理过滤器,当前仅支持半径(radius)过滤。DiscoverFilters.builder().setRadiusGeoFilter(Integer radiusInMeter) 单位米,例如 2000选填 |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
__
Discover Brand
说明
本 API 当前为 beta 版本。
Discover Brand 能力用于探索指定位置周围存在哪些品牌。基于此可以构建强大的发现体验,帮助最终用户发现某个位置周围流行的品牌。可选的 setCategory 方法允许传入一个类目 id,将返回的品牌限定为属于该类目的品牌。例如,如果业务场景是探索餐厅品牌,则将类目设为 restaurants。
关键方法
| 方法 | 说明 |
|---|---|
| setLocation(double latitude, double longitude) | 用户当前位置坐标。必填 |
| setCategory(String categoryId) | 类目 id,用于将返回的品牌限定为属于该类目的品牌。由 Get Categories API 返回。选填 |
| setLimit(Integer limit) | 返回结果数量,默认值 10。选填 |
| setLocale(Locale locale) | 响应内容的语言偏好。选填 |
| setFilters(DiscoverFilters filters) | 地理过滤器,当前仅支持半径(radius)过滤。DiscoverFilters.builder().setRadiusGeoFilter(Integer radiusInMeter) 单位米,例如 2000选填 |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Discover Place
按指定类目发现地点。Discover Place 提供如下能力:
- Lite Result — 设为 true 时仅返回基础 POI 属性,最多支持返回 1000 条结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- entity id - entity type - place - name - categories[] - address[] - geo_coordinates - facets - ev_connectors // 响应中只会返回 ev_connector facet,且仅包含有限的 EV 属性 - total_connector - connector_counts - connectors[] - connector_type - power_feed_level - charger_brand - connector_number - available - max_power - is_free - Polygon filter — 将发现结果限定在任意多边形区域内。
- Bounding box filter — 将发现结果限定在一个矩形包围盒内。
- Radius filter — 将发现结果限定在一个指定半径的圆形区域内。
- Electric vehicle charge station search — 面向电动车充电站的专用搜索能力。
关键方法
| 方法 | 说明 |
|---|---|
| setLocation(double latitude, double longitude) | 用户当前位置坐标。必填 |
| setCategories(List |
要发现的类目 ID 列表,至少一个。必填 |
| setLimit(Integer limit) | 返回结果数量,默认值 10。选填 |
| setLocale(Locale locale) | 响应内容的语言偏好。选填 |
| setDiscoverOptions(DiscoverPlaceOptions discoverOptions) | 发现选项,用于自定义发现行为。选填 |
| setFilters(DiscoverPlaceFilters filters) | 地理过滤器或 EV 过滤器。选填 |
DiscoverPlaceOptions
通过 DiscoverPlaceOptions.builder() 构建后,经 setDiscoverOptions() 传入:
| 方法 | 说明 |
|---|---|
| setLiteResult(Boolean liteResult) | 设为 true 时仅返回基础 POI 属性,最多支持返回 1000 条结果 |
| setSortType(SortType sortType) | 结果排序方式。BEST_MATCH(默认,最佳匹配)或 DISTANCE(按距离排序) |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Polygon Filter
将发现结果限定在指定多边形区域内。多边形最少需要 3 个顶点,会自动连接首尾两点闭合。
关键方法
| 方法 | 说明 |
|---|---|
| setFilters(DiscoverPlaceFilters filters) | 包含 polygon geo filter 的过滤器对象 |
| Polygon.builder().addPoint(double latitude, double longitude) | 添加多边形顶点,至少 3 个点 |
| PolygonGeoFilter.builder(Polygon polygon) | 基于 Polygon 构建 polygon geo filter |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
Bounding Box Filter
将发现结果限定在指定矩形包围盒内。
关键方法
| 方法 | 说明 |
|---|---|
| setFilters(DiscoverPlaceFilters filters) | 包含 bounding box geo filter 的过滤器对象 |
| BBox.builder().setBottomLeft(double latitude, double longitude) | 矩形左下角坐标 |
| BBox.builder().setTopRight(double latitude, double longitude) | 矩形右上角坐标 |
| BBoxGeoFilter.builder(BBox bbox) | 基于 BBox 构建 bounding box geo filter |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Radius Filter
将发现结果限定在指定半径的圆形区域内。
关键方法
| 方法 | 说明 |
|---|---|
| setFilters(DiscoverPlaceFilters filters) | 包含 radius geo filter 的过滤器对象 |
| RadiusGeoFilter.builder(Integer radiusInMeter) | 设置搜索半径(米),例如 RadiusGeoFilter.builder(20000).build() |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
EV Filter
面向电动车充电站的专用过滤能力,类似于 Search API 中的 EvFilter,详见 Search 文档。
关键方法
| 方法 | 说明 |
|---|---|
| setFilters(DiscoverPlaceFilters filters) | 包含 EV filter 的过滤器对象 |
| EvFilter.builder().setChargerBrands(List |
按充电网络(品牌)过滤 |
| EvFilter.builder().setConnectorTypes(List |
按接口类型过滤 |
| EvFilter.builder().setPowerFeedLevels(List |
按功率等级过滤 |
| EvFilter.builder().setFreeCharge(Boolean freeCharge) | true 仅返回免费接口,false 仅返回付费接口 |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
响应参数
各 Discover API 的响应对象均包含以下通用字段:
| 方法 / 字段 | 说明 |
|---|---|
| getStatus() / getCode() | 请求状态 |
| getResponseTime() | 响应时间(毫秒) |
| getReferenceId() | 响应关联的 reference id |
| getResults() | 匹配查询条件的结果列表 |
各 API 的 getResults() 返回类型如下:
| API | 响应类型 | 结果类型 |
|---|---|---|
| Get Categories | EntityGetCategoriesResponse |
List<Category>,包含类目 id、名称及子节点层级 |
| Discover Category | EntityDiscoverCategoryResponse |
List<Category>,包含类目 id 和名称 |
| Discover Brand | EntityDiscoverBrandResponse |
List<Brand>,包含 brand_id 和 brand_name |
| Discover Place | EntityDiscoverPlaceResponse |
List<Entity>,包含 POI 详情 |
状态码
| 状态码 | 消息 | 说明 |
|---|---|---|
| 12200 | SUCCESS | 请求成功,未发生错误 |
| 12400 | INVALID_REQUEST | 缺少必填参数,或参数值无法解析 |
| 12500 | INTERNAL_SERVER_ERROR | API 服务端内部错误 |