/**
* 地图放大
*/
this.zoomin = function() {
var level = this.model.getZoom().getLevel();
if (level < MapModel.maxZoomLevel) {
this.model.setZoom(new Zoom(level + 1));
// if(level+1 == SatelliteLevel)
// {
//
// if(MapModel.mapTypes.length == 1)
// {
// MapModel.mapTypes.push(new YTSMapType());
// }
//
// }
// else
// {
//
// if(MapModel.mapTypes.length == 2)
// {
// MapModel.mapTypes.pop();
// }
//
// }
}
}
/**
* 地图放大
*/
this.zoomin = function() {
var level = this.model.getZoom().getLevel();
if (level < MapModel.maxZoomLevel) {
//SatelliteLevel表示临界级别,判断只在通过这个级别的时候通知监听器修改了maptype,从而
减少不必要的操作
if(level+1 == SatelliteLevel){
//当只有一个地图类型时,其实放大操作不涉及
if(MapModel.mapTypes.length == 1){
MapModel.mapTypes.push(new Edushi2DMapType());
//当有两个地图类型时,缩小操作不涉及
}else if(MapModel.mapTypes.length == 2){
this.model.setCurrentMapType(MapModel.mapTypes.length-2);
MapModel.mapTypes.pop();
}
//注意,在这里以command方式通知监听器修改了maptype,并设置了当前的地图类型。
command.exec("maptype",new
Array(this.model.getId(),this.model.currentMapType));
}
this.model.setZoom(new Zoom(level + 1));
}
}
缩小操作类似。
中间那段可以重构出来给放大和缩小方法共用。
因为为了达到不侵犯核心类,所以当通知监听器修改地图类型和设置了新的缩放级别时候会重复的画地图。解决的方法是对核心类进行简单修改,或者直接侵入修
改对象属性(不是调用setXXX(),getXXX)。