自V3.7.0起,支持行政区边界数据检索。根据省、市、县(区)级行政区划名称,返回所查询行政区划边界的详细信息。
mDistrictSearch = DistrictSearch.newInstance();
OnGetDistricSearchResultListener listener = new OnGetDistricSearchResultListener() {@Overridepublic void onGetDistrictResult(DistrictResult districtResult) {if (null != districtResult && districtResult.error != SearchResult.ERRORNO.NO_ERROR) {//对检索所得行政区划边界数据进行处理}}};
mDistrictSearch.setOnDistrictSearchListener(listener);
mDistrictSearch.searchDistrict(new DistrictSearchOption().cityName("北京市").districtName("海淀区"));
注:其中cityName为必填,districtName为选填。
mDistrictSearch.destroy();
对于返回结果的展示,可以通过使用已开源的覆盖物类结合边界数据绘制折线。示例如下:
@Overridepublic 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。 效果如图:
上一篇
下一篇
本篇文章对您是否有帮助?