在维护公司项目时,获取行政区域在县级,有些不成功的现象,我也测试<贵州省毕节市纳雍县>。经过反复测试,把<县>字去掉,就能正常获取了。

判读

1
2
3
if (provinceCity.substr(-1,1) == '县' ){
    provinceCity = provinceCity.replace(/县/, '');
}

自行获取行政区域


输入省、直辖市或县名称:

轮廓数据(经纬)

点击获取轮廓线

建立地图

  • 创建地图对象,设立中心点。
1
2
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);

添加地图事件和控件

  • 控件:鱼骨控件我用了迷你型的;
  • 地图事件:添加了滚轮缩放。
1
2
map.addControl(new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL}));
map.enableScrollWheelZoom();

获取行政区域

  • 构造函数Boundary;
  • get方法,获取行政区域的边界。
  • rs是获取到的结果。
1
2
3
4
var bdary = new BMap.Boundary();
bdary.get(name, function(rs){       //获取行政区域
        //这里是用户自己的函数。     
});

添加覆盖物

  • 获取到边界的点数组后,添加一个多边形覆盖物。
1
2
3
4
5
var count = rs.boundaries.length; //行政区域的点有多少个
for(var i = 0; i < count; i++){
    var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
    map.addOverlay(ply);  //添加覆盖物
}    

调整视野

  • points为一系列点的数组,系统自动展示points里所有点。
1
map.setViewport(points);    //调整视野

参考