/**?* 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); // 創(chuàng)建中心點(diǎn)坐標(biāo) map.centerAndZoom(point, opts.zoom); // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別 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; }; /* * 默認(rèn)參數(shù)設(shè)置 */ $.fn.baidumap.defaults = { x : 115.904001, // 中心點(diǎn) x坐標(biāo) y : 28.6689, // 中心點(diǎn)y坐標(biāo) zoom : 18, // 縮放級(jí)別 enableScrollWheelZoom : true, // 啟用鼠標(biāo)滾輪縮放 enableNavigationControl : true, // 啟用平移縮放控件 enableOverviewMapControl : false, // 啟用縮略地圖控件 enableScaleControl : true, // 比例尺控件 enableMapTypeControl : false, // 切換地圖類型的控件 enableCopyrightControl : false,// 版權(quán)信息空間 copyrightContent : '',// 版權(quán)信息 copyrightAnchor : BMAP_ANCHOR_TOP_RIGHT // 版權(quán)信息顯示的位置 }; /** * 定位到指定坐標(biāo) *? * x * ? ? ? ? ? ?緯度 * y * ? ? ? ? ? ?經(jīng)度 * ?zoom * ? ? ? ? ? ?縮放級(jí)別 */ $.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)); } }; /** * 在地圖上搜索地點(diǎn),并且標(biāo)記 *? * @param city * ? ? ? ? ? ?城市名稱 * @param address * ? ? ? ? ? ?詳細(xì)地址 */ $.fn.baidumap.search = function(city, address) { var map = $.fn.baidumap.map; map.clearOverlays(); // 創(chuàng)建地址解析器實(shí)例 var myGeo = new BMap.Geocoder(); // 將地址解析結(jié)果顯示在地圖上,并調(diào)整地圖視野 myGeo.getPoint(address, function(point) { if (point) { var resultMarker = new BMap.Marker(point); // 跳動(dòng)的動(dòng)畫 resultMarker.setAnimation(BMAP_ANIMATION_BOUNCE); map.centerAndZoom(point, 16); map.addOverlay(resultMarker); } }, city); }; /** * 定位的指定行政區(qū)域 *? * @param org * ? ? ? ? ? ?行政區(qū)域名稱(支持省、市、縣三級(jí)) */ $.fn.baidumap.location = function(org) { var map = $.fn.baidumap.map; var bdary = new BMap.Boundary(); bdary.get(org, function(rs) { // 獲取行政區(qū)域 map.clearOverlays(); // 清除地圖覆蓋物 var count = rs.boundaries.length; // 行政區(qū)域的點(diǎn)有多少個(gè) var plys = new Array(count); // bugfix: 在地圖上不相連的某個(gè)區(qū)劃,返回的數(shù)組中,默認(rèn)從小范圍到大范圍,so, i--優(yōu)先顯示大范圍 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()); // 調(diào)整視野 } }); // 1秒后清除覆蓋物 setTimeout('$.fn.baidumap.map.clearOverlays()', 1000); }; /** * 新建一個(gè)圖標(biāo) *? * @param options * ? ? ? ? ? ?圖標(biāo)屬性 exp .{url:圖標(biāo)路徑,width:寬度,height:高度} * @returns BMap.Icon */ $.fn.baidumap.createIcon = function(options) { return new BMap.Icon(options.url, new BMap.Size(options.width, options.height)); }; /** * 新建一個(gè)文本標(biāo)注 *? * @param options * ? ? ? ? ? ?標(biāo)注的屬性 exp. {title:標(biāo)題,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; }; /** * 新建一個(gè)信息窗口 *? * @param content * ? ? ? ? ? ?支持html的內(nèi)容 * @returns BMap.InfoWindow */ $.fn.baidumap.createInfoWindow = function(content) { return new BMap.InfoWindow(content); }; /** * 新建一個(gè)圖形標(biāo)記 *? * @param options * ? ? ? ? ? ?標(biāo)記的屬性 exp.{point:位置 BMap.Point值,icon: 圖標(biāo)BMap.Icon值, * ? ? ? ? ? ?label:圖標(biāo)的文本說明} *? * @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);