亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mapmodel.js

?? mapapi0.4alpha MapEasy-一個類似GoogleMap的客戶端JS開源庫
?? JS
字號:
/**
 * Copyright 2006 mapeasy.sf.net.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * 地圖模型
 * 
 * @author Tim.Wu Michael.Young
 */
function MapModel(id) {
	
	// Inherit from BaseModel
	BaseModel.apply(this);

	//~ Field
	this.id = id;

	/** 縮放比例 */
	this.zoom;
	
	/** 顯示區域中心坐標 */
	this.viewerCenterCoord;
	
	/** 顯示區域 */
	this.viewerBound;
	
	/** 默認顯示中心坐標 */
	this.defaultCoord;
	
	/** 默認顯示比例 */
	this.defaultZoom;

	/** 覆蓋物集合 */
	this.overlays;
	
	/** 地圖事件 */
	this.events = new Array();

	/** 地圖類型 */
	this.currentMapType = 0;

	//~ Method
	this.getZoom = function() {
		return this.zoom;
	}

	this.setZoom = function(zoom) {
		this.zoom = zoom;
		this.zoom.setMap(this);
		this.firePropertyChange("zoom");
	}

	this.setViewerCenterCoord = function(coord){
		this.viewerCenterCoord = coord;
		this.firePropertyChange("move");
	}

	this.getViewerCenterCoord = function() {
		return this.viewerCenterCoord;
	}

	this.setViewerBound = function(viewerBound) {
		this.viewerBound = viewerBound;
	}

	this.getViewerBound = function() {
		return this.viewerBound;
	}

	this.setDefault = function(defaultCoord, defaultZoom) {
		this.defaultCoord = defaultCoord;
		this.defaultZoom = defaultZoom;
	}

	this.reset = function() {
		this.setViewerCenterCoord(this.defaultCoord);
		this.setZoom(this.defaultZoom);
	}
	
	/**
	 * 增加覆蓋物
	 */
	this.addOverlay = function(overlay) {
		if (this.overlays == null) {
			this.overlays = new Array();
		}
		this.overlays.push(overlay);
		this.firePropertyChange("addoverlay", overlay);
		return overlay;
	}
	
	/**
	 * 移除某覆蓋物
	 */
	this.removeOverlay = function(overlay) {
		if (this.overlays) {
			this.overlays = this.overlays.without(overlay);
		}
	}
	
	/**
	 * 清除所有覆蓋物
	 */
	this.clearOverlays = function() {
		if (this.overlays) {
			this.overlays.clear();
		}
	}

	this.getOverlays = function() {
		return this.overlays;
	}

	this.getId = function() {
		return this.id;
	}

	this.setCurrentMapType = function(arrIndex) {
		this.currentMapType = arrIndex;
		this.firePropertyChange("maptype");
	}
}

/**
 * 地圖類型
 *
 * @author Tim.Wu Michael.Young
 */
function MapType() {
	
	this.enablePic;

	this.disablePic;
	
	//~ Method
	{
		this.enablePic = imgBaseDir + "maptype_0b.gif";
		this.disablePic = imgBaseDir + "maptype_0a.gif";
	}

	this.getSrc = function(level, row, column) {
		return imgBaseDir + 'zoom_' + level + '/' + level + '_' + column + '_' + row + '.jpg';
	}

	this.getEnablePic = function() {
		return this.enablePic;
	}

	this.getDisablePic = function() {
		return this.disablePic;
	}
}

/** 地圖模型常量 */
/** 地圖坐標系范圍 */
MapModel.bound = new Bound(-180e16, 180e16, -90e16, 90e16);
/** 第一個縮放等級的瓦片數 */
MapModel.firstZoomTileNum = 1;
/** 每層縮放之間的比例參數 */
MapModel.scalePara = 2;
/** 瓦片尺寸 */
MapModel.tileSize = 256;
/** 最大縮放比例 */
MapModel.maxZoomLevel = 5;
/** 地圖類型集合 */
MapModel.mapTypes = new Array();
MapModel.mapTypes.push(new MapType());

/**
 * 某比例模型
 * 
 * @author Tim.Wu Michael.Young
 */
function Zoom(level) {
	
	//~ Field
	/** 比例等級 */
	this.level = level;
	
	/** 總瓦片數 */
	this.tilesNum;
	
	/** 邊緣瓦片數 */
	this.borderTilesNum;
	
	/** 可視區域 */
	this.viewerBound;

	this.map;

	//~ Method
	{	
		this.tilesNum = Math.pow(Math.pow(MapModel.scalePara, (this.level - 1)), 2) * MapModel.firstZoomTileNum;
		this.borderTilesNum = Math.sqrt(this.tilesNum);
		// 以坐標系原點為中心的可視區域
		this.viewerBound = MapModel.bound.getCenterCoord().getBound(MapModel.bound.getWidth() * viewerWidth / (this.borderTilesNum * MapModel.tileSize), MapModel.bound.getHeight() * viewerHeight / (this.borderTilesNum * MapModel.tileSize));
	}

	this.getLevel = function() {
		return this.level;
	}
	
	this.setMap = function(map) {
		this.map = map;
	}

	/**
	 * 取得以某坐標為中心點的可視區域的瓦片集合
	 *
	 * @param coord 可視區域中心點
	 */
	this.getTiles = function(coord) {
		// 重新定位可視區域
		if (this.viewerBound.getCenterCoord() != coord) {
			this.viewerBound = this.viewerBound.clone(coord);
		}
		if (!MapModel.bound.isCover(this.viewerBound)) {
			// 可視區域在地圖之外
			return null;
		} else {
			// 可視區域有地圖
			var tiles = new Array();
			var rowFrom = Math.floor((MapModel.bound.getMaxY() - this.viewerBound.getMaxY()) / (MapModel.bound.getHeight() / this.borderTilesNum));
			rowFrom = rowFrom<0?0:rowFrom;
			var rowTo = Math.floor((this.viewerBound.getMinY() - MapModel.bound.getMinY()) / (MapModel.bound.getHeight() / this.borderTilesNum));
			rowTo = rowTo<0?this.borderTilesNum:(this.borderTilesNum - rowTo);
			var columnFrom = Math.floor((this.viewerBound.getMinX() - MapModel.bound.getMinX()) / (MapModel.bound.getWidth() / this.borderTilesNum));
			columnFrom = columnFrom<0?0:columnFrom;
			var columnTo = Math.floor((MapModel.bound.getMaxX() - this.viewerBound.getMaxX()) / (MapModel.bound.getWidth() / this.borderTilesNum));
			columnTo = columnTo<0?this.borderTilesNum:(this.borderTilesNum - columnTo);
			for (var i = rowFrom;i < rowTo;i++) {
				for (var j = columnFrom;j < columnTo;j++) {
					var tile = new Tile(i, j, this.level);
					tile.setMap(this.map);
					tiles.push(tile);
				}
			}
			return tiles;
		}
	}

	this.getBorderTilesNum = function() {
		return this.borderTilesNum;
	}
	
	this.getViewerBound = function() {
		return this.viewerBound;
	}

	this.setViewerBound = function(viewerBound) {
		this.viewerBound = viewerBound;
	}

	this.getLevel = function() {
		return this.level;
	}
}

/**
 * 瓦片
 *
 * @author Tim.Wu Michael.Young
 */
function Tile(row, column, level) {
	
	//~ Field
	this.row = row;
	
	this.column = column;
	
	this.level = level;

	this.map;

	//~ Method
	/**
	 * 得到瓦片圖片
	 */
	this.getSrc = function() {
		return MapModel.mapTypes[this.map.currentMapType].getSrc(this.level, this.row, this.column);
	}

	this.getRow = function() {
		return this.row;
	}

	this.getColumn = function() {
		return this.column;
	}

	this.setMap = function(map) {
		this.map = map;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区高清免费看看| 国产精品美女久久久久久久网站| 精品一区二区免费看| 亚洲欧洲精品一区二区三区不卡| 精品久久人人做人人爱| 欧美丰满高潮xxxx喷水动漫| 欧美色综合影院| 欧美性一二三区| 91美女福利视频| 91色.com| 日韩精品一区二区三区在线播放 | 亚洲一区二区三区中文字幕在线| 99久久夜色精品国产网站| 婷婷久久综合九色综合伊人色| 欧美电影免费提供在线观看| 色综合久久六月婷婷中文字幕| 日韩va欧美va亚洲va久久| 国产农村妇女精品| 欧美久久久久久久久| 91啪亚洲精品| 色综合夜色一区| 婷婷综合五月天| 亚洲人成在线播放网站岛国| 欧美va亚洲va| 丁香婷婷综合色啪| 激情小说亚洲一区| 日韩精品视频网| 理论电影国产精品| 高清在线成人网| 亚洲精品久久久久久国产精华液| 在线观看日韩高清av| 奇米影视一区二区三区| 亚洲妇熟xx妇色黄| 日韩高清不卡在线| 色婷婷国产精品久久包臀| 国产视频亚洲色图| 色天天综合色天天久久| 欧美在线观看视频在线| 国产成人在线电影| 成a人片亚洲日本久久| 97se亚洲国产综合自在线不卡| 在线亚洲免费视频| 欧美巨大另类极品videosbest| 91精品国产福利| 久久综合狠狠综合久久激情| 日本精品免费观看高清观看| 99热国产精品| 欧美日韩国产乱码电影| 欧美一卡二卡在线| 91香蕉视频黄| 不卡电影免费在线播放一区| 国产精品欧美一区二区三区| 136国产福利精品导航| 亚洲精品欧美专区| 成人午夜精品一区二区三区| 亚洲国产成人在线| 欧美在线不卡一区| 色欲综合视频天天天| 欧美日韩国产精品成人| 亚洲精品在线三区| 欧美精品一区二区三区视频| 中文字幕一区二区三区在线观看| 亚洲人成伊人成综合网小说| 午夜视频在线观看一区二区三区| 亚洲高清不卡在线观看| 国产在线不卡一区| 91成人在线免费观看| 久久综合九色综合97婷婷女人 | 欧美一区二区三区白人 | 亚洲最色的网站| 激情综合色播激情啊| 91亚洲资源网| 日韩一级成人av| 综合久久久久综合| 久久精品av麻豆的观看方式| 欧美日韩国产一级| 中文字幕在线一区免费| 日韩电影免费在线看| 99久久国产免费看| 91精品国产91久久综合桃花 | 日韩一级片在线观看| 亚洲欧美日韩在线播放| 久久99国产精品成人| 日本韩国一区二区三区视频| 久久久久久久久97黄色工厂| 亚洲第一狼人社区| 国产主播一区二区| 欧美日本一区二区三区| 欧美大片一区二区三区| 国产精品国产三级国产a| 久久99久久久欧美国产| 欧美调教femdomvk| 亚洲免费在线电影| 国产精品自产自拍| 日韩欧美国产综合一区 | 成人免费视频国产在线观看| 日韩视频在线你懂得| 亚洲一区二区三区在线播放| 北条麻妃国产九九精品视频| 精品国产伦理网| 日韩精品色哟哟| 在线观看国产一区二区| 国产精品久久免费看| 国产一区二区视频在线播放| 欧美一区在线视频| 午夜精品久久久久| 欧美视频一区二区在线观看| 亚洲精品老司机| 99久久精品免费看国产免费软件| 国产欧美日本一区二区三区| 狠狠网亚洲精品| 欧美不卡一区二区三区四区| 亚洲图片欧美色图| 成人视屏免费看| 久久久久综合网| 黑人巨大精品欧美一区| 日韩美女主播在线视频一区二区三区| 亚洲成人在线观看视频| 欧美性三三影院| 亚洲最大色网站| 欧美亚洲国产bt| 18涩涩午夜精品.www| 成av人片一区二区| 精品不卡在线视频| 另类调教123区| 久久嫩草精品久久久精品| 久久国产精品99久久人人澡| 欧美性高清videossexo| 亚洲成人你懂的| 91精品欧美一区二区三区综合在| 亚洲成av人片在www色猫咪| 欧美日韩高清一区二区不卡 | 99在线精品观看| 亚洲视频 欧洲视频| 色菇凉天天综合网| 亚洲一区二区三区视频在线播放| 欧美日韩在线亚洲一区蜜芽| 亚洲欧美色图小说| 色综合咪咪久久| 亚洲免费毛片网站| 欧美日韩成人综合| 久久99久久99| 国产丝袜美腿一区二区三区| 成人高清在线视频| 一区二区三区在线免费播放| 67194成人在线观看| 狠狠色丁香九九婷婷综合五月| 日韩三级精品电影久久久| 日韩精品色哟哟| 久久五月婷婷丁香社区| 99久久久久久| 午夜视频一区在线观看| 日韩一区二区精品葵司在线| 看片的网站亚洲| 中文无字幕一区二区三区| 色婷婷综合久久久| 麻豆91在线看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 色婷婷精品久久二区二区蜜臀av | 国产99久久精品| 亚洲色图清纯唯美| 91精品国产综合久久久蜜臀粉嫩 | 成人免费毛片高清视频| 亚洲香肠在线观看| 久久久久9999亚洲精品| 色婷婷综合久久久久中文一区二区| 日韩高清电影一区| 国产精品网站一区| 欧美日韩一级大片网址| 东方aⅴ免费观看久久av| 亚洲va国产天堂va久久en| 色综合久久综合网97色综合| 午夜久久久久久| 中文字幕字幕中文在线中不卡视频| 日韩欧美国产一区二区三区| 在线观看91视频| 成人国产一区二区三区精品| 狠狠色狠狠色综合| 日本强好片久久久久久aaa| 一区二区欧美精品| 综合亚洲深深色噜噜狠狠网站| 久久这里只精品最新地址| 在线不卡一区二区| 色吊一区二区三区| 97国产精品videossex| 岛国av在线一区| 久久av中文字幕片| 日本在线不卡视频一二三区| 亚洲成人精品一区| 一区二区三区四区精品在线视频 | 免费成人美女在线观看.| 亚洲成人在线免费| 亚洲国产综合人成综合网站| 亚洲欧美一区二区三区国产精品| 国产精品欧美久久久久无广告 | 中文字幕日韩精品一区| 亚洲国产精华液网站w| 日本一区二区综合亚洲| 久久精品亚洲精品国产欧美kt∨| 精品国产乱码久久久久久1区2区|