开发 地图 JS API 2.0 进阶教程 服务插件和工具 行政区查询

行政区查询 最后更新时间: 2023年03月27日

本章主要介绍高德JS API提供的行政区查询服务,包括以下两块内容:

  1. 获取下级行政区信息
  2. 绘制行政区划边界

行政区查询服务

行政区查询服务(AMap.DistrictSearch)提供行政区信息的查询,使用该服务可以获取到行政区域的区号、城市编码、中心点、边界、下辖区域等详细信息,为基于行政区域的地图功能提供支持。

使用行政区划查询服务前要先引入该插件,具体的引入方式请参考教程:插件的使用

获取下级行政区信息

在开发地图产品的时候,经常会有获取某一行政区下所有下级行政区信息的需求。以获取中国所有省份信息为例,相关代码是:

AMap.plugin('AMap.DistrictSearch', function () {
  var districtSearch = new AMap.DistrictSearch({
    level: 'country', // 关键字对应的行政区级别,country表示国家
    subdistrict: 1 // 显示下级行政区级数,1表示返回下一级行政区
  });
  
  // 搜索所有省/直辖市信息
  districtSearch.search('中国', function(status, result) {
    // 查询成功时,result即为对应的行政区信息
  })
})
提示

除了获取所有省份/直辖市信息外,您可以通过修改levelsubdistrict并配合search传入对应keyword查询对应信息。

绘制行政区划边界

除了获取下级行政区信息外,有时我们还需要获得行政区域的边界信息实现一些功能,比如在地图上将行政区的边界绘制出来,这里以绘制朝阳区的边界举例,主要包含以下三步:

  1. 创建AMap.DistrictSearch对象
  2. 搜索朝阳区的边界信息
  3. 将边界信息用AMap.Polygon绘制到地图上

相关代码如下:

AMap.plugin('AMap.DistrictSearch', function () {
  var district = new AMap.DistrictSearch({ // 创建行政区查询对象
    extensions: 'all', // 返回行政区边界坐标等具体信息
    level: 'district' // 设置查询行政区级别为 区 
  });

  district.search('朝阳区', function(status, result) {
    var bounds = result.districtList[0].boundaries; // 获取朝阳区的边界信息
    var polygons = [];
    if (bounds) {
      for (var i = 0, l = bounds.length; i < l; i++) {
       var polygon = new AMap.Polygon({ //生成行政区划polygon
         map: map,
         strokeWeight: 1,
         path: bounds[i],
         fillOpacity: 0.7,
         fillColor: '#CCF3FF',
         strokeColor: '#CC66CC'
       })
       polygons.push(polygon);
     }
     
     map.setFitView();// 地图自适应
   }
 })
})
示例
中心
常见
问题
智能
客服