全部服务产品
开发者频道
定价
登录
检索行政区边界数据
下载开发文档

自V3.7.0起,支持行政区边界数据检索。根据省、市、县(区)级行政区划名称,返回所查询行政区划边界的详细信息。

行政区边界数据检索
1. 创建行政区边界数据检索实例
mDistrictSearch = DistrictSearch.newInstance();
2. 创建行政区边界数据检索监听器
OnGetDistricSearchResultListener listener = new OnGetDistricSearchResultListener() {
@Override
public void onGetDistrictResult(DistrictResult districtResult) {
if (null != districtResult && districtResult.error != SearchResult.ERRORNO.NO_ERROR) {
//对检索所得行政区划边界数据进行处理
}
}
};
3. 设置行政区边界数据检索监听器
mDistrictSearch.setOnDistrictSearchListener(listener);
4. 设置DistrictSearchOption,发起检索
mDistrictSearch.searchDistrict(new DistrictSearchOption()
.cityName("北京市")
.districtName("海淀区"));

注:其中cityName为必填,districtName为选填。

5. 释放检索实例
mDistrictSearch.destroy();

对于返回结果的展示,可以通过使用已开源的覆盖物类结合边界数据绘制折线。示例如下:

@Override
public void onGetDistrictResult(DistrictResult districtResult) {
if (null != districtResult && districtResult.error != SearchResult.ERRORNO.NO_ERROR) {
mBaiduMap.clear();
//获取边界坐标点,并展示
if (districtResult.error == SearchResult.ERRORNO.NO_ERROR) {
List<List<LatLng>> polyLines = districtResult.getPolylines();
if (polyLines == null) {
return;
}
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (List<LatLng> polyline : polyLines) {
OverlayOptions ooPolyline11 = new PolylineOptions().width(10)
.points(polyline).dottedLine(true).color(Color.BLUE);
mBaiduMap.addOverlay(ooPolyline11);
OverlayOptions ooPolygon = new PolygonOptions().points(polyline)
.stroke(new Stroke(5, 0xAA00FF88)).fillColor(0xAAFFFF00);
mBaiduMap.addOverlay(ooPolygon);
for (LatLng latLng : polyline) {
builder.include(latLng);
}
}
mBaiduMap.setMapStatus(MapStatusUpdateFactory
.newLatLngBounds(builder.build()));
}
}
}

注意:在上面的示例代码中使用for循环绘制边界点时,若边界点数量很大,则建议开启子线程进行绘制,以免ANR。 效果如图:

上一篇

地理编码

下一篇

室内poi检索

本篇文章对您是否有帮助?