/**
* Baidu地图v3版本API jQuery插件封装
*/
(function($) {
$.fn.baidumap = function(options) {
var opts = $.extend({}, $.fn.baidumap.defaults, options);
$.fn.baidumap.options = opts;
var map = new BMap.Map(this.attr("id"));
var point = new BMap.Point(opts.x, opts.y); // 创建中心点坐标
map.centerAndZoom(point, opts.zoom); // 初始化地图,设置中心点坐标和地图级别
if (opts.enableScrollWheelZoom) {
map.enableScrollWheelZoom();
}
if (opts.enableNavigationControl) {
map.addControl(new BMap.NavigationControl());
}
if (opts.enableOverviewMapControl) {
map.addControl(new BMap.OverviewMapControl());
}
if (opts.enableScaleControl) {
map.addControl(new BMap.ScaleControl());
}
if (opts.enableMapTypeControl) {
map.addControl(new BMap.MapTypeControl());
}
if (opts.enableCopyrightControl) {
var cr = new BMap.CopyrightControl({
anchor : BMAP_ANCHOR_TOP_RIGHT
});
map.addControl(cr);
var bs = map.getBounds();
cr.addCopyright({
id : 1,
content : opts.copyrightContent,
bounds : bs
});
}
$.fn.baidumap.map = map;
return $.fn.baidumap;
};
/*
* 默认参数设置
*/
$.fn.baidumap.defaults = {
x : 115.904001, // 中心点 x坐标
y : 28.6689, // 中心点y坐标
zoom : 18, // 缩放级别
enableScrollWheelZoom : true, // 启用鼠标滚轮缩放
enableNavigationControl : true, // 启用平移缩放控件
enableOverviewMapControl : false, // 启用缩略地图控件
enableScaleControl : true, // 比例尺控件
enableMapTypeControl : false, // 切换地图类型的控件
enableCopyrightControl : false,// 版权信息空间
copyrightContent : '',// 版权信息
copyrightAnchor : BMAP_ANCHOR_TOP_RIGHT // 版权信息显示的位置
};
/**
* 定位到指定坐标
*
* x
* 纬度
* y
* 经度
* zoom
* 缩放级别
*/
$.fn.baidumap.panTo = function(x, y, zoom){
var map = $.fn.baidumap.map;
map.clearOverlays();
if (parseInt(x) == 0) {
return;
}
if (x != "") {
var temp_point = new BMap.Point(x, y);
map.centerAndZoom(temp_point, parseInt(zoom));
}
};
/**
* 在地图上搜索地点,并且标记
*
* @param city
* 城市名称
* @param address
* 详细地址
*/
$.fn.baidumap.search = function(city, address) {
var map = $.fn.baidumap.map;
map.clearOverlays();
// 创建地址解析器实例
var myGeo = new BMap.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(address, function(point) {
if (point) {
var resultMarker = new BMap.Marker(point);
// 跳动的动画
resultMarker.setAnimation(BMAP_ANIMATION_BOUNCE);
map.centerAndZoom(point, 16);
map.addOverlay(resultMarker);
}
}, city);
};
/**
* 定位的指定行政区域
*
* @param org
* 行政区域名称(支持省、市、县三级)
*/
$.fn.baidumap.location = function(org) {
var map = $.fn.baidumap.map;
var bdary = new BMap.Boundary();
bdary.get(org, function(rs) { // 获取行政区域
map.clearOverlays(); // 清除地图覆盖物
var count = rs.boundaries.length; // 行政区域的点有多少个
var plys = new Array(count);
// bugfix: 在地图上不相连的某个区划,返回的数组中,默认从小范围到大范围,so, i--优先显示大范围
for ( var i = count - 1; i >= 0; i--) {
var ply = new BMap.Polygon(rs.boundaries[i], {
strokeWeight : 2,
strokeColor : "#ff0000",
fillOpacity : 0
}); // 建立多边形覆盖物
plys[i] = ply;
map.addOverlay(ply); // 添加覆盖物
map.setViewport(ply.getPath()); // 调整视野
}
});
// 1秒后清除覆盖物
setTimeout('$.fn.baidumap.map.clearOverlays()', 1000);
};
/**
* 新建一个图标
*
* @param options
* 图标属性 exp .{url:图标路径,width:宽度,height:高度}
* @returns BMap.Icon
*/
$.fn.baidumap.createIcon = function(options) {
return new BMap.Icon(options.url, new BMap.Size(options.width,
options.height));
};
/**
* 新建一个文本标注
*
* @param options
* 标注的属性 exp. {title:标题,offsetX:横向偏移量,offsetY:纵向偏移量,style:css样式}
* @returns BMap.Label
*/
$.fn.baidumap.createLabel = function(options) {
var label = new BMap.Label(options.title);
if (options.offsetX) {
label.setOffset(new BMap.Size(options.offsetX, options.offsetY));
}
if (options.style) {
label.setStyle(options.style);
}
return label;
};
/**
* 新建一个信息窗口
*
* @param content
* 支持html的内容
* @returns BMap.InfoWindow
*/
$.fn.baidumap.createInfoWindow = function(content) {
return new BMap.InfoWindow(content);
};
/**
* 新建一个图形标记
*
* @param options
* 标记的属性 exp.{point:位置 BMap.Point值,icon: 图标BMap.Icon值,
* label:图标的文本说明}
*
* @returns BMap.Marker
*/
$.fn.baidumap.createMarker = function(options) {
var marker = new BMap.Marker(options.point);
if (options.icon) {
marker.setIcon(options.icon);
}
if (options.label) {
marker.setLabel(options.label);
}
$.fn.baidumap.map.addOverlay(marker);
return marker;
};
})(jQuery);
习惯受伤
相关分类