行政区划

最后更新时间:2025-04-17

我们提供了三个行政区划相关查询接口,封装了腾讯地图 WebService API 的行政区划查询功能,更详细的接口描述可以查阅官网。这里对 SDK 提供的行政区划查询接口做简要描述。

接口名 功能
getDistrictList(HttpResponseListener listener) 获取全部行政区划数据
getDistrictChildren(DistrictChildrenParam object, HttpResponseListener listener) 获取指定行政区划的子级行政区划
getDistrictSearch(DistrictSearchParam object, HttpResponseListener listener) 根据关键词搜索行政区划



请求参数概览

1. getDistrictList(HttpResponseListener listener)

查询成功后,listener 返回所有的行政区划数据

2. getDistrictChildren(DistrictChildrenParam object, HttpResponseListener listener)

接口名 功能
DistrictChildrenParam() 构造请求参数
id(int id) 父级行政区划 ID,缺省时则返回最顶级行政区划, 行政区划 ID 可以使用 getDistrictList 获取

3. getDistrictSearch(DistrictSearchParam object, HttpResponseListener listener)

接口名 功能
DistrictSearchParam(String keyword) 构造请求参数,并设置 询关键字
keyword(String keyword) 设置行政区划查询关键字



返回结果

行政区划查询获取的检索结果由参数 listener 异步返回。当 HttpResponseListener.onSuccess 正常返回时,应将 BaseObject 强转为 DistrictResultObject 进行解析,包含的数据请参考 接口文档, 当 HttpResponseListener.onFailure 返回时,请用户根据的状态码和错误信息检查自己的参数输入:

状态码 错误信息
-1 AndroidManifest 中找不到腾讯地图的开发者密钥
310 请求参数信息有误
311 Key格式错误
306 请求有护持信息请检查字符串
110 请求来源未被授权



调用示例

/**
 * 获取行政区划
 */
protected void getDistrict(int pDistrict) {
    TencentSearch tencentSearch = new TencentSearch(this);
    DistrictChildrenParam districtChildrenParam = new DistrictChildrenParam();
    // 如果不设置id,则获取全部数据
    districtChildrenParam.id(pDistrict);
    tencentSearch.getDistrictChildren(districtChildrenParam, new HttpResponseListener<BaseObject>() {

        @Override
        public void onSuccess(int arg0, BaseObject arg1) {
            // TODO Auto-generated method stub
            if (arg1 == null) {
                return;
            }
            DistrictResultObject obj = (DistrictResultObject) arg1;
            List<DistrictResultObject.DistrictResult> districtResults = obj.result.get(0);
            for (DistrictResultObject.DistrictResult result : districtResults) {
                Log.d("test", "getDistrict: " + result.fullname);
            }
        }

        @Override
        public void onFailure(int arg0, String arg1, Throwable arg2) {
            Log.e("test", "error code:" + arg0 + ", msg:" + arg1);
        }
    });
}



拓展

实现轮廓绘制,适用于绘制停车区域等场景。


实现方式,选中目标区域,拿到目标区域的轮廓点,绘制目标轮廓

//这里获取目标轮廓点
List<LatLng> latLngs = districtResults .get(0).polygon.get(0);
//绘制轮廓图,可以使用多边形(polygon)也可以使用线Polyline,可以按照自己的场景去设置
tencentMap.addPolyline(new PolylineOptions().addAll(latLngs).width(6).borderWidth(2).color(PolylineOptions.Colors.RED));

注意点:
轮廓点串默认是不返回的,传入不同轮廓点串返回不同数据
  • 0:默认值,不返回轮廓

  • 1:固定3公里抽稀粒度的区划轮廓,包含海域

  • 2:支持多种抽稀粒度的区划轮廓,可通过max_offset设置返回轮廓的抽稀级别,纯陆地


使用建议

 行政区划的数据并不会经常更新,用户可以降低查询频率。

本页内容