自v3.7.0起,支持行政区边界数据检索。根据省、市、县(区)级行政区划名称,返回所查询行政区划边界的详细信息。
mdistrictsearch =districtsearch.newinstance();
ongetdistricsearchresultlistener listener =newongetdistricsearchresultlistener(){@overridepublicvoidongetdistrictresult(districtresult districtresult){if(null!= districtresult && districtresult.error!=searchresult.errorno.no_error){//对检索所得行政区划边界数据进行处理}}};
mdistrictsearch.setondistrictsearchlistener(listener);
mdistrictsearch.searchdistrict(newdistrictsearchoption().cityname("北京市").districtname("海淀区"));
注:其中cityname为必填,districtname为选填。
mdistrictsearch.destroy();
对于返回结果的展示,可以通过使用已开源的覆盖物类结合边界数据绘制折线。示例如下:
@overridepublicvoidongetdistrictresult(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 =newlatlngbounds.builder();for(list<latlng> polyline : polylines){overlayoptions oopolyline11 =newpolylineoptions().width(10).points(polyline).dottedline(true).color(color.blue);mbaidumap.addoverlay(oopolyline11);overlayoptions oopolygon =newpolygonoptions().points(polyline).stroke(newstroke(5,0xaa00ff88)).fillcolor(0xaaffff00);mbaidumap.addoverlay(oopolygon);for(latlng latlng : polyline){builder.include(latlng);}}mbaidumap.setmapstatus(mapstatusupdatefactory.newlatlngbounds(builder.build()));}}}
注意:在上面的示例代码中使用for循环绘制边界点时,若边界点数量很大,则建议开启子线程进行绘制,以免anr。 效果如图:
上一篇
下一篇
本篇文章对您是否有帮助?