方式一:
getBoundary:function (name,color) {
var me= this;
var bdary = new BMap.Boundary();
bdary.get(name, function(rs){
console.log(rs);
var count = rs.boundaries.length;
for(var i = 0; i < count; i++){
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 1, strokeOpacity:0.5,fillColor:color,strokeColor: "#000000"});
map.addOverlay(ply);
}
});
}
調用 getBoundary("寧夏","#ff0000")
方式二:
addSCBorder:function () {
var blist = [];
/**
* 添加行政區划
* @param {} districtName 行政區划名
* @returns 無返回值
*/
function addDistrict(districtName) {
var me = this;
//使用計數器來控制加載過程
//使用百度接口加載邊界經緯度數據
var bdary = new BMap.Boundary();
bdary.get(districtName, function (rs) { //獲取行政區域
blist.push({points: rs.boundaries[1], name: districtName});
drawBoundary();
});
}
function drawBoundary() {
//包含所有區域的點數組
var pointArray = [];
/*畫遮蔽層的相關方法
*思路: 首先在中國地圖最外畫一圈,圈住理論上所有的中國領土,然后再將每個閉合區域合並進來,並全部連到西北角。
* 這樣就做出了一個經過多次西北角的閉合多邊形*/
//定義中國東南西北端點,作為第一層
var pNW = {lat: 59.0, lng: 73.0};
var pNE = {lat: 59.0, lng: 136.0};
var pSE = {lat: 3.0, lng: 136.0};
var pSW = {lat: 3.0, lng: 73.0};
//向數組中添加一次閉合多邊形,並將西北角再加一次作為之后畫閉合區域的起點
var pArray = [];
pArray.push(pNW);
pArray.push(pSW);
pArray.push(pSE);
pArray.push(pNE);
pArray.push(pNW);
//循環添加各閉合區域
//添加顯示用標簽層
var label = new BMap.Label(blist[0].name, {offset: new BMap.Size(20, -10)});
label.hide();
map.addOverlay(label);
//添加多邊形層並顯示
var ply = new BMap.Polygon(blist[0].points, {
strokeWeight: 2,
strokeColor: "#FF0000",
fillOpacity: 0.01,
fillColor: " #FFFFFF"
}); //建立多邊形覆蓋物
ply.name = blist[0].name;
ply.label = label;
ply.Type = "Border";
map.addOverlay(ply);
//將點增加到視野范圍內
var path = ply.getPath();
pointArray = pointArray.concat(path);
//將閉合區域加到遮蔽層上,每次添加完后要再加一次西北角作為下次添加的起點和最后一次的終點
pArray = pArray.concat(path);
pArray.push(pArray[0]);
//限定顯示區域,需要引用api庫
map.setViewport(pointArray); //調整視野
//添加遮蔽層
var plyall = new BMap.Polygon(pArray, {
strokeOpacity: 0.0000001,
strokeColor: "#04121b",
strokeWeight: 0.00001,
fillColor: "#04121b",
fillOpacity: 0.7
}); //建立多邊形覆蓋物
plyall.Type = "Border";
map.addOverlay(plyall);
// 編寫自定義函數,創建標注
function addMarker(point) {
var marker = new BMap.Marker(point);
map.addOverlay(marker);
}
}
addDistrict("寧夏")
}
調用 addSCBorder