<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);