有几个人问起多个县市轮廓的,分享一下。
多个县市轮廓的效果如这个url所示:
注意,百度地图api 1.1才支持这个功能,在1.2中是不支持的。
相关说明可以参考
此类以像素表示一个城市区域。注意:该类只适用于1.1版本。
方法
方法描述
get(name, callback)
name: 查询省、直辖市、地级市、或县的名称
callback:执行查询后,数据返回到客户端的回调函数,数据以回调函数的参数形式返回。 返回结果是一个boundaries数组,数据格式如下: arr[0] = "x1, y1; x2, y2; x3, y3; ..." arr[1] = "x1, y1; x2, y2; x3, y3; ..." arr[2] = "x1, y1; x2, y2; ..."
县市轮廓例子body{font-size:13px;margin:10px}
#container{width:800px;height:500px;border:1px solid gray}
getBoundary("佛山","blue")
getBoundary("中山","green")
getBoundary("广州","red")
if (typeof console == "undefined"){
window.console = {log: function(){}};
}
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(113.339845,23.128291), 9);
var stdMapCtrl = new BMap.NavigationControl({type: BMAP_NAVIGATION_CONTROL_SMALL})
map.addControl(stdMapCtrl);
map.enableScrollWheelZoom();
map.enableContinuousZoom();
function getBoundary(name,color){
var bdary = new BMap.Boundary();
bdary.get(name, function(rs){
console.log(rs);
var bounds;
var maxNum = -1, maxPly;
var count = rs.boundaries.length;
for(var i = 0; i < count; i++){
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 1, strokeColor: "#ff0000",FillOpacity:0});
ply.setFillColor(color);
ply.setFillOpacity("0.2");
map.addOverlay(ply);
var arrPts = ply.getPoints();
if(arrPts.length > maxNum){
maxNum = arrPts.length;
maxPly = ply;
}
}
if(maxPly){
map.setViewport(maxPly.getPoints());
}
});
}