更新时间:2020-12-24 23:46:37
meuiBdmap控件将百度地图api进行插件化封装,方便前端开发人员直接调用,而不用再研究百度api原代码。
第1步,引入插件所需的CSS、JS
<link type="text/css" rel="stylesheet" href="assets/css/meui-baidumap.css"> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=2COzFaICuIyVj7V3VetKfmdRVnX8BhVr"></script><!--百度地图API库文件--> <!--<script type="text/javascript" src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js"></script>--><!--百度地图几何算法GeoUtils库--> <script type="text/javascript" src="assets/js/meui-baibumap.js"></script><!--MEUI百度地图插件-->
第2步,创建DOM节点用于地图展示
<div id="allmap"></div>
第3步,调用插件创建地图
$('#domID').meuiMapHouse('内置函数名', 参数1, 参数2, 参数3);
其中:
1、参数1, 参数2, 参数3表示内置函数对应的N个参数,N >= 0
2、内置函数如下:
init //地图初始化 createMapPoint 创建坐标系统/创建标注点 createMapBoundary 创建行政区域边界 getZoom 获取当前地图绽放级别 getCenter 获取地图当前中心点 clearOverlays 移除所有地图覆盖物、清空所有标注点 removeOverlay 移除地图指定覆盖物
插件调用实例
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::// var mapDom = $('#allmap'); //DOM JQuery //================================ //实例. init 地图初始化 mapDom.meuiMapHouse('init', { city: '泉州市', //默认中心点城市(isNumc=1时有效) point: '118.611836,24.918225', //默认中心点经纬度坐标(isNumc=0时有效) label: '', //自定义中心点说明文字,默认空(可选). 当不空时,中心点标注文本为本参数,否则为城市名称 isNumc: true, //地图中心点是根据城市还是坐标来设置. true 根据坐标(true), false 根据城市 zoom: 15, //地图缩放级别(值:3-19) copyright: '地图查房价系统 Version 1.0', //版权信息(可选) // width: 'auto', //地图高度,默认auto表示全屏(可选) height: 'auto', //地图宽度,默认auto表示全屏(可选) image: { //自定义坐标标注点图标及其它属性(可选) testing draged: false, //图标是否可拖动,默认false(可选) enable: false, //是否开启自定义图标, 默认false(可选) path: 'meui/img/', //图片文件夹相对静态文件html位置,仅当enable=true时有效(可选) icon: 'bmap_locate_blue.png' //图标文件名,仅当enable=true时有效(可选) }, //窗口布局及显示方式 showMode: 'click', //显示方式(可选). normal 固定显示,即在绑定节点上直接显示, click 点击显示(默认) window: { //窗口布局(可选) position: 'none', //定义方式(可选). 空或none 无任何定位(默认), fixed 绝对定位, absolute 相对定位 pickup: false, //是否开启坐标拾取系统,默认false(可选) closed: false //是否显示关闭图标,默认false(可选) }, //控件 openCityControl: true, //是否开启城市切换控件,默认true(可选) openMapTypeControl: true, //是否开启地图类型(即地图、卫星、混合)控件,默认true(可选) openCopyrightControl: true, //是否开启版本信息控件,默认true(可选) openOverViewControl: true, //是否开启地图缩略图控件,默认true(可选) // enableEval: true, //是否允许参数值使用字符串表达式,默认false(可选) //鼠标&视野 enableScrollWheelZoom: true, //是否启用滚轮放大缩小,默认true(可选).(注:百度地图默认禁用) enableContinuousZoom: true, //是否启用地图惯性拖拽,默认true(可选).(注:百度地图默认禁用) enableDragging: true, //是否允许拖拽,默认true(可选).(注:百度地图默认允许) enableViewPort: false, //是否强制调整视野,即强制地图显示到某个视野,默认false(可选). 因centerAndZoom是异步,故要让使用setViewport起作用,必须设置本参数值为true. autoViewPort: true, //是否系统自动调整视野,默认true,仅当enableViewPort=true时有效(可选). 值:true 系统调用setViewport自动调整视野, false 前端手动调用setViewport调整视野(需设置延时,否则不起作用) //回调 callBack: function(e) { //回调:初始化地图后(可选). e参数格式 {"dom":"地图父节点", "map":"地图实例化对象Map", "zoom":"当前地图绽放级别"} var $this = e.dom; var zoom = e.zoom; }, mouseScroll: function(e) { //回调:鼠标滚动地图时(可选). e参数格式 {"dom":"地图父节点", "map":"地图实例化对象Map", "zoom":"当前地图绽放级别"} var $this = e.dom; var zoom = e.zoom; var center = $this.meuiMapHouse('getCenter'); var point = center.lng + ',' + center.lat; console.log('当前地图绽放级别:', zoom, ' 中心点:', center, ' 坐标:', point); //$this.meuiMapHouse('内置函数名', '参数1', '参数2', '参数3'); //这里可继续调用插件其它内置函数,'init'除外. }, mouseClick: function(e) { //回调:鼠标点击地图时(可选). e参数格式 {"dom":"地图父节点", "map":"地图实例化对象Map", "zoom":"当前地图绽放级别", "point":{"lng":"经度", "lat":"纬度"}} var $this = e.dom; var zoom = e.zoom; var lng = e.point.lng, lat = e.point.lat; //console.log('您点击的地方坐标为经纬度:', [lng, lat]); //$this.meuiMapHouse('内置函数名', '参数1', '参数2', '参数3'); //这里可继续调用插件其它内置函数,'init'除外. }, mouseDoubleClick: function(e) { //回调:鼠标双击地图时(可选). e参数格式 {"dom":"地图父节点", "map":"地图实例化对象Map", "zoom":"当前地图绽放级别", "point":{"lng":"经度", "lat":"纬度"}} }, mouseDrag: function(e) { //回调:鼠标拖拽地图时(可选). e参数格式 {"dom":"地图父节点", "map":"地图实例化对象Map", "zoom":"当前地图绽放级别", "point":{"lng":"经度", "lat":"纬度"}, "event":"拖拽事件名称"}, 其中 event值有3个:dragstart 拖拽开始, dragging 拖拽进行中, dragend 拖拽结束 var $this = e.dom; var zoom = e.zoom; var event = e.event; var lng = e.point.lng, lat = e.point.lat; //console.log('您拖拽的地方坐标为经纬度:', [lng, lat]); if (event == 'dragstart') { console.log('拖拽开始') } if (event == 'dragging') { console.log('拖拽进行中') } if (event == 'dragend') { console.log('拖拽结束'); //$this.meuiMapHouse('内置函数名', '参数1', '参数2', '参数3'); //这里可继续调用插件其它内置函数,'init'除外. } } }) //================================ //实例. createMapPoint 创建坐标系统/创建标注点 var dataSource = { data: [{ "name": "山东省", "zuobiao": "117.124638,36.680865", "lpsl": "1000" }] } mapDom.meuiMapHouse( 'createMapPoint', dataSource, //数据源 { format: { //自定义数据源字段名称(可选). 方便后台传输任意的字段名,前端只需自定义一下即可 //字段名称格式: //除了经纬度坐标字段外只能用格式: '["字段"]' 来表示外,其它皆可用格式:'A["字段1"]B["字段2"]C' //其中: A、B、C表示任意字符, 里面可含HTML代码. eg. coordinates:' 地区名:["title"] 楼盘数量:["lpsl"] 个 '} coordinates: '["zuobiao"]', //经纬度坐标 title: '["title"]', //文字标题,标注点文字(可选) id: '["id"]', //记录主键key(可选) description: '["description"]', //描述,信息窗文字(可选) dragging: '["dragging"]', //标注点是否可拖拽(可选) isInfo: '["isInfo"]', //标注点是否有信息窗(可选) theme: '["theme"]', //标注点主题(可选). blue 蓝色(默认), white 白色, red 红色, green 绿色, orange 橙色 icon: '["icon"]' //标注点图标(可选) }, style: { //标注点默认样式(可选) color: "#555", backgroundColor: "#fff", fontSize: "12px", //height : "20px", //lineHeight : "20px", padding: "5px 8px", borderWidth: "1px", borderStyle: "solid", borderColor: "#1296db", borderRadius: "3px", fontFamily: "微软雅黑" }, dbClickMarkerAutoScale: false, //是否开启双击标注点图标后地图缩放级别自动放大一级,默认false(可选). labelEnable: true, //是否开启标注点文字,默认true(可选). infoEnable: false, //是否开启信息窗,默认true(可选). 优先权大于单条数据里的isInfo字段 infoOpenMethod: 'mouseover', //信息窗打开方式(可选). mouseover 鼠标经过标注点时(默认),click 点击标注点时 showDetails: false, //标注点是否默认就显示详细信息,默认false(可选) //回调 markerClickBack: function(e) { //点击标注点图标后会触发此事件(可选). e参数:{point:{lng:"经度", lat:"纬度"}, id:"记录主键值"} }, markerDoubleClickBack: function(e) { //双击标注点图标后会触发此事件(可选). e参数:{dom:"地图父节点", map:"地图实例化对象Map", zoom:"当前地图绽放级别", point:{lng:"经度", lat:"纬度"}, id:"记录主键值"} }, labelClickBack: function(e) { //点击标注点文字后会触发此事件(可选). 回调e参数:{point:{lng:"经度", lat:"纬度"}, id:"记录主键值"} }, infoEventsFunc: function(e) { //点标注点信息窗内部DOM系列事件(可选). e参数:{point:{lng:"经度", lat:"纬度"}, id:"记录主键值"} $('#btn-more1').off('click').on('click', function() { alert('【更多1】按钮'); }) $('#btn-more2').off('click').on('click', function() { alert('【更多2】按钮'); }) } } ) //================================ //实例. createMapBoundary 创建行政区域边界 //格式: mapDom.meuiMapHouse('createMapBoundary', ps_source, ps_opts); //eg. var areaFormatJson = { title: '["name"]', description: ' 楼盘数量:["lpsl"] 个 ' } var provinceJson = get_data_province(); mapDom.meuiMapHouse( 'createMapBoundary', { source: provinceJson, format: areaFormatJson }, { enableLabel: false } ); 参数: ps_source 行政区域数据, ps_opts 其它参数(可选) //* ----------------------- ps_source参数格式: //* ----------------------- { source: { data: [{ mc: "福建省", "zuobiao": "经度,纬度", "lpsl": "30" }, { mc: "浙江省", "zuobiao": "经度,纬度", "lpsl": "50" }] }, format: { title: '["name"]', description: ' 楼盘数量:["lpsl"] 个 '} } 其中: ?source 数据源, 里面的字段可随意;?format 数据源字段. title 标注点标题, 值用 '["行政区域字段名"]' 的格式表示.eg. { title: '["name"]' } description 标注点描述(可选).值用 'A["字段1"]B["字段2"]C 的格式表示(A、B、C表示任意字符), 里面可含HTML代码. eg. {description:' 地区名:["name"] 楼盘数量:["lpsl"] 个 '} //* ----------------------- ps_opts参数格式: //* ----------------------- { enableLabel: true, //是否创建文本标注,true是(默认), false 否 offset: [-40, -25], //位置偏移值. [X方向偏移量, Y方向偏移量] style: { //css样式(可选) //采用驼峰写法.eg. //height: "20px", //lineHeight: "20px", fontSize: "14px", //文字大小 fontFamily: "微软雅黑", color: "#1296db", //文字颜色 backgroundColor: "#fff", //背景色 padding: "5px 8px", //内部距离 borderWidth: "1px", //边框宽 borderStyle: "solid", //边框样式 borderColor: "#0ce", //边框颜色 borderRadius: "3px", //边框圆角 zIndex: 99 //层级 } } //================================ //实例. getZoom 获取当前地图绽放级别 var zoom = mapDom.meuiMapHouse('getZoom'); //================================ //实例. getCenter 获取地图当前中心点 var point = mapDom.meuiMapHouse('getCenter'); //================================ //实例. clearOverlays 移除所有地图覆盖物、清空所有标注点 mapDom.meuiMapHouse('clearOverlays'); //================================ //实例. removeOverlay 移除地图指定覆盖物 var label = new BMap.Label('华光中学', { offset: new BMap.Size(x, y), //位置偏移值 position: ps_point, //地理位置坐标 enableMassClear: true //是否在调用clearOverlays时清除此覆盖物,默认true }); map.addOverlay(label); //添加文本覆盖物 mapDom.meuiMapHouse('removeOverlay', label)