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时抽出的部分.方便另一种思路的扩展~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个老外(西班牙)编写的控件,封装了全部google maps api ,使用在DELPHI中使用谷歌地图变得非常简单 GMLib - Google Maps Library Send suggestions to gmlib@cadetill.com Supported Delphi version: Delphi 6, 7, 2007, 2010, XE2, XE3 Tested Windows Versions: XP, 2003, Vista, 7 Change History january 14, 2013 - Google Maps Library v0.1.9 - Improvement: Compatible with FMX framework. - Improvement: About all Geometry Library coded. - bug fixed: Some bugs fixes. - Attempt to do compatible with DCEF components. October 05, 2012 - Google Maps Library v0.1.8 - Improvement: Compiled under XE3 - Improvement: new component added, the TGMElevation. - bug fixed: General -> fixed all memory leaks found - bug fixed: TGMDirection -> the OnDirectionsChanged event was not triggered - Improvement: TBasePolyline -> class TLinePoints and TLinePoint is disassociated from TPolyline and they are transferred to GMClasses - Improvement: TBasePolyline -> implements ILinePoint interface September 11, 2012 - Google Maps Library v0.1.7 - bug fixed: some memory leaks fixed (there is still some) (thanks Donovan) - Improvement: TGMCircle -> modified all Set and ShowElements methods to use the new method ChangeProperties inherited from TLinkedComponent - Improvement: GMFunctions -> added new functions of transformation types - Improvement: TGMGeoCode-> added boolean property PaintMarkerFound. To true, all markers are automatically generated (if a TGMMarker is linked) (by Luis Joaquin Sencion) - Improvement: TGMGeoCode-> generated URL is encoded in UTF8 to avoid problems with special characters (? accents, ....) - Improvement: TGMMap.TNonVisualProp -> added MapMarker property. True if Map Maker tiles should be used instead of regular tiles. - Improvement: TLatLngEvent -> the events of this type now have a new parametre, X and Y, of Real type, with information of point (X,Y) - Improvement: TLinkedComponent -> added ShowInfoWinMouseOver boolean property. If true, show the InfoWindows when mouse is over the object. Now

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值