本章主要介绍高德JS API提供的行政区查询服务,包括以下两块内容:
- 获取下级行政区信息
- 绘制行政区划边界
行政区查询服务
行政区查询服务(AMap.DistrictSearch
)提供行政区信息的查询,使用该服务可以获取到行政区域的区号、城市编码、中心点、边界、下辖区域等详细信息,为基于行政区域的地图功能提供支持。
使用行政区划查询服务前要先引入该插件,具体的引入方式请参考教程:插件的使用。
获取下级行政区信息
在开发地图产品的时候,经常会有获取某一行政区下所有下级行政区信息的需求。以获取中国所有省份信息为例,相关代码是:JavaScript
AMap.plugin('AMap.DistrictSearch', function () {
var districtSearch = new AMap.DistrictSearch({
// 关键字对应的行政区级别,country表示国家
level: 'country',
// 显示下级行政区级数,1表示返回下一级行政区
subdistrict: 1
})
// 搜索所有省/直辖市信息
districtSearch.search('中国', function(status, result) {
// 查询成功时,result即为对应的行政区信息
})
})
AMap.DistrictSearch
AMap.DistrictSearch。
构造函数 | 说明 |
---|---|
AMap.DistrictSearch(opts: DistrictSearchOptions ) | 构造函数,实例化一个行政区查询实例 |
DistrictSearchOptions | 类型 | 说明 |
---|---|---|
level | String | 关键字对应的行政区级别或商圈,可选值:country:国家province:省/直辖市city:市district:区/县biz_area:商圈 |
showbiz | Boolean | 是否显示商圈,默认值true可选为true/false,为了能够精准的定位到街道,特别是在快递、物流、送餐等场景下,强烈建议将此设置为false |
extensions | String | 是否返回行政区边界坐标点默认值:base,不返回行政区边界坐标点取值:all,返回完整行政区边界坐标点 |
subdistrict | Number | 显示下级行政区级数(行政区级别包括:国家、省/直辖市、市、区/县4个级别),商圈为区/县下一级 可选值:0、1、2、30:不返回下级行政区1:返回下一级行政区2:返回下两级行政区3:返回下三级行政区默认值:1 |
方法 | 返回值 | 说明 |
---|---|---|
search(keywords:String, callback:function(status:String,result:info/ DistrictSearchResult ), opts: DistrictSearchOptions ) | 根据关键字查询行政区或商圈信息 关键字支持:行政区名、citycode、adcode、商圈名默认值:“全国”当status为complete时,result为DistrictSearchResult;当status为error时,result为错误信息info;当status为no_data时,代表检索返回0结果 | |
setLevel(level:String) | 设置关键字对应的行政区级别或商圈,可选值:country:国家province:省/直辖市city:市district:区/县biz_area:商圈 | |
setSubdistrict(district:Number) | 设置下级行政区级数(行政区级别包括:国家、省/直辖市、市、区/县4个级别),商圈为区/县下一级,默认值:1可选值:0、1、2、30:不返回下级行政区;1:返回下一级行政区;2:返回下两级行政区;3:返回下三级行政区; |
事件 | 参数 | 说明 |
---|---|---|
complete | DistrictSearchResult | 查询成功时触发此事件 |
error | ErrorStatus | 当查询失败时触发此事件 |
除了获取所有省份/直辖市信息外,您可以通过修改level
和subdistrict
并配合search
传入对应keyword
查询对应信息。
绘制行政区划边界
除了获取下级行政区信息外,有时我们还需要获得行政区域的边界信息实现一些功能,比如在地图上将行政区的边界绘制出来,这里以绘制朝阳区的边界举例,主要包含以下三步:
- 创建
AMap.DistrictSearch
对象 - 搜索朝阳区的边界信息
- 将边界信息用
AMap.Polygon
绘制到地图上
相关代码如下:JavaScript
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++) {
//生成行政区划polygon
var polygon = new AMap.Polygon({
map: map,
strokeWeight: 1,
path: bounds[i],
fillOpacity: 0.7,
fillColor: '#CCF3FF',
strokeColor: '#CC66CC'
})
polygons.push(polygon)
}
// 地图自适应
map.setFitView()
}
})
})
DistrictExplorer
(行政区划浏览) 提供了全国范围内到区县一级的行政区划数据(含边界),同时提供一些辅助功能,比如区划面绘制、事件监听,以及快速判断经纬度所属的子级区划等。
更多关于行政区划浏览组件的信息,请查看 UI组件库-行政区划浏览参考文档。