更新时间:2020-06-23
自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。 效果如图: