Skip to content

POI 搜索(关键词 / 周边 / 输入提示)

风格SearchParams 链式构建 + Callback<PlaceTextSearchResponse>

1 参数构建

java
SearchParams params = SearchParams.create()
        .setKeywords("关键词")       // 必填
        .setCity("城市名")           // 可选但推荐
        .setLocation("经度,纬度")    // 例:"116.43,39.95"
        .setMaxDistance(1000)        // 米
        .setSortrule("distance")     // 如:"distance"
        .setPoiTypes("类型编码")      // 可选
        .setCityLimit(true);         // 可选,true=仅在指定 city 内搜索

不同 API 关注点

API必要参数说明
关键词搜索setKeywords() + setCity()城市有助于提高匹配精度;可配 setCityLimit(true) 限定
周边搜索setKeywords()常与 setLocation() 搭配
输入提示setKeywords()更短、更即时联想

2 调用示例(回调按现有实现)

java
// 关键词
mapClient.getSearchForPOIServices().keywordSearchApi(
    params,
    new RpcRequestUtils.Callback<PlaceTextSearchResponse>() { /* 回调同你现有写法 */ }
);

// 周边
mapClient.getSearchForPOIServices().peripheralSearchAPI(
    params,
    new RpcRequestUtils.Callback<PlaceTextSearchResponse>() { /* 回调同你现有写法 */ }
);

// 输入提示
mapClient.getSearchForPOIServices().inputTipsAPI(
    params,
    new RpcRequestUtils.Callback<PlaceTextSearchResponse>() { /* 回调同你现有写法 */ }
);

3 响应结构(PlaceTextSearchResponse)

字段路径类型可空单位/取值说明服务端字段
statusint业务状态码,10000 成功status
msgstring文本提示msg
traceIdstringTraceIdtrace_id
resultsarray<object>结果列表results
results[].namestringPOI 名称name
results[].addressstring地址(不一定完整)address
results[].addressAllstring完整地址(展示优先)address_all
results[].provincestringprovince
results[].citystringcity
results[].districtstring区/县district
results[].adcodestring行政编码adcode
results[].distanceint周边常见;关键词/提示多缺省distance
results[].locationobject坐标对象(经度在前)location
results[].location.lngdouble经度lng
results[].location.latdouble纬度lat

提示:关键词/输入提示通常不返回 distance

4 读取示例(取Top1)

java
PlaceTextSearchResponse r = data;
if (r != null && r.results != null && !r.results.isEmpty()) {
  PlaceTextSearchResponse.PlaceItem p = r.results.get(0);
  String addr = (p.addressAll != null && !p.addressAll.isEmpty()) ? p.addressAll : p.address;
  Double lng = (p.location != null) ? p.location.lng : null;
  Double lat = (p.location != null) ? p.location.lat : null;
  Integer dist = p.distance;
  String line = "Top1: " + p.name
              + " | 地址=" + stringOrDash(addr)
              + " | 坐标=" + stringOrDash(lng) + "," + stringOrDash(lat)
              + " | 距离=" + (dist == null ? "-" : dist + "米");
  // tv.setText(line);
}