百度地图的封装

<pre name="code" class="html">
 

还有很多功能没有完善,再找个时间弄,哈哈


/**
 * 把ueditor包装为jquery插件,调用插件中的方法。
 */
(function($) {			
	var methods = {
		//默认执行方法
		init : function(options) {			
			var defaults = {
					longitude : "longitude",
					latitude : "latitude",
					address : "address",
					lng : 116.331398,
					lng : 39.897445,
					city : ""
			};
			var settings = $.extend(defaults, options);		
			var _this = $(this);	
			var id = _this.attr('id');
			var map = new BMap.Map(id);
			var position  = settings.city != "" ? city : new BMap.Point(settings.lng, settings.lat);
			map.centerAndZoom(position, 15);			
			map.enableScrollWheelZoom(true);
			var navigationControl = new BMap.NavigationControl({
			    // 靠左上角位置
			    anchor: BMAP_ANCHOR_TOP_LEFT,
			    // LARGE类型
			    type: BMAP_NAVIGATION_CONTROL_LARGE,
			    // 启用显示定位
			    enableGeolocation: true
			});
			
			// 1.添加带有定位的导航控件
			map.addControl(navigationControl);
			function showInfo(e){
				map.clearOverlays();
				
				var myGeo = new BMap.Geocoder();
		        myGeo.getLocation(new BMap.Point(e.point.lng,e.point.lat), function(es){
			        var addComp = es.addressComponents;
			        var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
					$("#"+settings.address).val(address);
		        });
				$("#"+settings.longitude).val(e.point.lng);
				$("#"+settings.latitude).val(e.point.lat);
				var mk = new BMap.Marker(e.point);//获取marker地址
				map.addOverlay(mk); 
				map.panTo(new BMap.Point(e.point.lng,e.point.lat)); //定位到当前
			}
			
			// 2.添加地图点击事件
			map.addEventListener("click", showInfo);
			var geolocationControl = new BMap.GeolocationControl();
			geolocationControl.addEventListener("locationSuccess", function(e){
			    // 定位成功事件
			    var addComp = e.addressComponent;
			    var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
				$("#"+settings.address).val(address);
				$("#"+settings.longitude).val(e.point.lng);
				$("#"+settings.latitude).val(e.point.lat);
			  },{enableHighAccuracy: true});//使用高分辨率底图
			geolocationControl.addEventListener("locationError",function(e){
			    alert(e.message); // 定位失败事件
			});
			map.addControl(geolocationControl);
			
			//3.自动添加定位控件 
			var geolocation = new BMap.Geolocation();
	        geolocation.getCurrentPosition(function(e){
		        if(this.getStatus() == BMAP_STATUS_SUCCESS){
			        map.clearOverlays(); 
			        var mk = new BMap.Marker(e.point);
			        var myGeo = new BMap.Geocoder();
			        myGeo.getLocation(new BMap.Point(e.point.lng,e.point.lat), function(es){
				        var addComp = es.addressComponents;
				        var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
						$("#"+settings.address).val(address);
						
				        map.addOverlay(mk); 
				       	map.panTo(new BMap.Point(e.point.lng,e.point.lat)); //定位到当前点  
			        });    
			        $("#"+settings.longitude).val(e.point.lng);
					$("#"+settings.latitude).val(e.point.lat);  
		  		} else {
		            alert('未知地址('+this.getStatus() + ')');
		        };
	        });
	        return map;
		},
		
		//计算两地的距离
		//var options = {"lng1":116.256200, "lat1":40.083594, "lng2":116.896200, "lat2":40.383594, "map" :map};
		figure : function(options) {
			var _this = $(this);	
			var id = _this.attr('id');
			var searchComplete = function (results){
			    if (transit.getStatus() != BMAP_STATUS_SUCCESS){
			        return ;    
			     }  
		        var plan = results.getPlan(0);
		        output = plan.getDistance(false);             //获取距离	       
			};
			var transit = new BMap.DrivingRoute(options.map, {renderOptions: {map: options.map},
			    onSearchComplete: searchComplete,
			    onPolylinesSet: function(){     
			        setTimeout(function(){$("#"+id).val(output);},"100");    //打印总路程
			    }
			});
			
			var point1 = new BMap.Point(options.lng1, options.lat1);
			var point2 = new BMap.Point(options.lng2, options.lat2);
			var marker1 = new BMap.Marker(point1);  // 创建标注
			options.map.addOverlay(marker1); //overlay覆盖物的抽象基类
			var marker2 = new BMap.Marker(point2);  // 创建标注
			options.map.addOverlay(marker2);
			marker1.enableDragging(); 
			marker2.enableDragging(); 
			marker1.addEventListener("dragend", function(e){
				 alert("当前位置:" + e.point.lng + ", " + e.point.lat);
			});
			marker2.addEventListener("dragend", function(e){
				 alert("当前位置:" + e.point.lng + ", " + e.point.lat);
			});
		    transit.search(marker1.getPosition(), marker2.getPosition());         //两个红色标注之间的沿道路测距
		    return transit;
		},	
	
		//消除原来的地址连接线
		clear : function (transit) {
			var _this = $(this);	
			var id = _this.attr('id');
		    transit.clearResults();         //清除导航结果
		    $("#"+id).val();   //清除总路程的文字
		}
	};
	
	$.fn.baiduMap = function(method) {
		if (methods[method]) {
			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
		} else if (typeof method === 'object' || !method) {//如果没有制定的方法,直接使用init
			return methods.init.apply(this, arguments);
		} else {
			$.error('The method ' + method + ' does not exist in $.baiduMap');
		}
	};
})(jQuery);


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值