百度地图自动缩放与指定中心点的自动缩放
根据指定中心点,自动计算缩放等级
效果图:
function getZoom (list) {
var point0 = new BMap.Point(list[0].lon, list[0].lat);
var maxDistance = 0;
for(var i = 1; i<list.length;i++){
var pointX = new BMap.Point(list[i].lon, list[i].lat);
var distance = map.getDistance(point0,pointX).toFixed(1);
if(distance > maxDistance){
maxDistance = distance
}
}
maxDistance = maxDistance*2;//计算距离中心点最远点和中心点距离的2倍
var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"]//级别18到3。
// var pointA = new BMap.Point(maxLng,maxLat); // 创建点坐标A
// var pointB = new BMap.Point(minLng,minLat); // 创建点坐标B
// var distance = map.getDistance(pointA,pointB).toFixed(1); //获取两点距离,保留小数点后两位
for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {
if(zoom[i] - distance > 0){
return 18-i;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
}
};
}
function setZoom(bPoints) {
var mapZoom = getZoom(list);
var centerPoint = new BMap.Point(list[0].lon, list[0].lat);
map.centerAndZoom(centerPoint, mapZoom);
}
画点
for (var i = 0; i < list.length; i ++) {
var point = new BMap.Point(list[i].lon, list[i].lat);
bPoints.push(point);
addMarker(point, list[i].type, list[i].name, i);
}
setTimeout(function () {
setZoom(bPoints);
}, 1000)
没有中心点,自动计算缩放等级并展示
function setZoom(bPoints) {
var view = map.getViewport(eval(bPoints));
var mapZoom = view.zoom;
var centerPoint = view.center;
map.centerAndZoom(centerPoint, mapZoom);
}