找资料的时候看到很多大佬写过关于百度地图添加行政区域但是由于我的是离线地图直接用百度地图api获取不到,所以自己写了一遍 记录一下。
function getBoundary(){
var areas = [];var polygons = []; var pointArray = [];
var haidian=[{"lng":116.401487,"lat":40.039207},{"lng":116.400306,"lat":40.040651},{"lng":116.399757,"lat":40.041429},{"lng":116.398017,"lat":40.042067},{"lng":116.39689,"lat":40.043233},{"lng":116.397347,"lat":40.045124}];
var tongzhou=[{"lng":116.96058,"lat":39.792475},{"lng":116.958454,"lat":39.796624},{"lng":116.955664,"lat":39.797443},{"lng":116.947546,"lat":39.79918}]
var haidian1 = []
for (var i in haidian) {
haidian1.push(new BMap.Point(haidian[i].lng,haidian[i].lat));
}
var tongzhou1 = []
for (var i in tongzhou) {
tongzhou1.push(new BMap.Point(tongzhou[i].lng,tongzhou[i].lat));
}
areas.push(haidian1)
areas.push(tongzhou1)
colors = ["#fff492", "#98d057", "#e19ee6", "#1ad3da", "#ffc11d", "#98e800", "#b95817", "#03a9f4", "#39d0a4", "#8bbb53"];
for (var i = 0; i < areas.length; i++) {
var ply = new BMap.Polygon(areas[i], { strokeWeight: 4, strokeColor:colors[i] }); //建立多边形覆盖物
ply.setFillColor("") //设置多边形的填充颜色
ply.setFillOpacity(0.35);
polygons.push(ply); //加入多边形数组,以之后获取多边形边界点集
map.addOverlay(ply); //添加覆盖物
pointArray = pointArray.concat(ply.getPath());
}
map.setViewport(pointArray); //调整视野
}
setTimeout(function(){
getBoundary();
}, 10);
示例图:
为啥要这样写:遇到一个问题就是地图不缩小可以看到所有的多边形,但是当地图放大的时候有的多边形会消失
如何获取到行政区的坐标点:我是用的百度地图api实例(http://lbsyun.baidu.com/jsdemo.htm#c1_10)打印覆盖物获取坐标