// 获取百度地图实例,使用百度地图自带的控件
var bmap = myChart.getModel().getComponent(‘bmap‘).getBMap();
bmap.setMapStyle({style:‘normal‘});
bmap.addControl(new BMap.MapTypeControl());
bmap.addControl(new BMap.ScaleControl());
bmap.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));
bmap.enableAutoResize();
//调用百度的方法,使用bmap对象
if (center_x == 0) {
var point = new BMap.Point(116.404, 39.915);
bmap.centerAndZoom(point, 4.5);
}
else {
var point = new BMap.Point(center_x, center_y);
bmap.centerAndZoom(point, zoomvalue);
}
var RegionData = [];//清空上一次的数据
var AreaData = [];
bmap.addEventListener("zoomend", function ()
{
console.log(this.getZoom());//这句为了每次打印每次缩放完后的等级,但只打印一次,说明重新setOption后,给地图实例注册的监听事件会丢失
$.each(dataJson, function (index, item)
{
var Location = [item["经度"], item["纬度"], 170];
if (AreaData.length < dataJson.length)
AreaData.push({ id: item.AreaID, name: item["区域名称"], value: Location, itemStyle: { normal: { color: ‘#00c6ff‘ } } });
//获取第一个区域的经纬度作为经济带的经纬度
var RegionIsExist = false;
for (var i = 0; i < RegionData.length; i++)
{
if (RegionData[i].name == item["经济带名称"])
{
RegionIsExist = true;
break;
}
}
if (RegionIsExist)
{
return true;//继续下一个循环
}
if (RegionData.length < 4)
RegionData.push({ id: item.RegionID, name: item["经济带名称"], value: Location, itemStyle: { normal: { color: ‘#00c6ff‘ } } });
});
if (this.getZoom() < 8)
{
option.series[0].data = RegionData;
myChart.setOption(option, true,true);
}
else
{
option.series[0].data = AreaData;
myChart.setOption(option, true, true);
}
});这个监听只能监听一次,所以不理想,不知道是不是跟第一行代码获取百度实例的方式有关系.希望有经验的大神可以告知.
本文出自 “银翼神驹” 博客,请务必保留此出处http://leesolo.blog.51cto.com/2672511/1954556
原文:http://leesolo.blog.51cto.com/2672511/1954556