google地圖的簡易封裝(一)

以下經測試通過:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?v=3.8&sensor=false&language=zh-CN"></script>
     <script type="text/javascript">
    var apply = function(base,expand){//用於copy屬性
	    for(var key in expand){
		   base[key] = expand[key];
		}
	};
	var MyMap = function(id,mapOptions){
		//用於得到類型
        var _getMapTypeId = function(type){
			var mapTypeMap = {
				"NORMAL":google.maps.MapTypeId.ROADMAP,//地圖
				"HYBRID":google.maps.MapTypeId.HYBRID,//衛星混合圖
				"TERRAIN":google.maps.MapTypeId.TERRAIN//地形圖
			};
			return mapTypeMap[type]||google.maps.MapTypeId.ROADMAP;
		},ggListenersMap = {zoom_changed:"zoom_changed",click : "click",mousemove:"mousemove"};//控制監聽事件範圍,方便兼容控制

		var baseOption = {//內置初始數據
		    center: new google.maps.LatLng(32.397, 120.144),//維度 Latitude  經度Longitude  
			zoom: 7,
			mapTypeId: _getMapTypeId("NORMAL")
		};
        apply(baseOption,mapOptions||{});
        var mapCanvas = document.getElementById(id);
		var map = new google.maps.Map(mapCanvas,baseOption);
           
        
		/*this.setOptions = function(mapOptions){
		    map.setOptions(mapOptions);//因想與百度兼容,暫不瞭解百度Map,不開放
		}*/
        //設置zoom大小,因對百度Map不瞭解,範圍暫不控制
		this.setZoom = function(zoom){
		    map.setZoom(zoom);
		};

		this.getZoom = function(){
		    return map.getZoom();
		};
        /**
		 * 設置中心點 
		 * 經緯度
		 */
		this.setCenter = function(latitude,longitude){
			 map.setCenter(new google.maps.LatLng(latitude,longitude));
		}

        //添加監聽  內部會擴展
		this.addListeners = function(listenersMap){
		   var scope = listenersMap['scope']||this;
		   for(var key in listenersMap){
			      if(!ggListenersMap[key]){continue;} 
                  //var arr = [this];
				  google.maps.event.addListener(map,ggListenersMap[key],function(){
						   /*for(var i=0,len = arguments.length;i<len;i++){
							  arr = arr.concat(arguments[i]);
						   }
						   listenersMap[key].apply(scope||this,arr);這裏註釋待研究下百度Map確定*/
                          listenersMap[key].call(scope);
				 });
            }
	    }
		
		//...etc 擴展
    };
  </script>
  <script type="text/javascript">
      window.onload = function(){
	     var myMap = new MyMap('myMapCanvas');
         myMap.addListeners({
		     click:function(){
			    alert(myMap.getZoom());
			 }
		 });
	  }
  </script>
 </head>
 <body>
    <div id="myMapCanvas" style="width: 100%; height: 400px"></div>
 </body>

</html>
做了層簡易的封裝,測試通過,最終想達到的目標:兼容百度map。 對它倆的特殊性進行區分。路還長,這是我做ext封裝map時抽出的部分.方便另一種思路的擴展~

發佈了95 篇原創文章 · 獲贊 14 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章