WEBAPP开发之自定义百度地图导航控件
白羽 2019-01-08 来源 :网络 阅读 1124 评论 0

摘要:本文将带你了解WEBAPP开发自定义百度地图导航控件,希望本文对大家学WEBAPP有所帮助。

    本文将带你了解WEBAPP开发自定义百度地图导航控件,希望本文对大家学WEBAPP有所帮助。


百度地图js版   的导航控件按钮,在webapp有几点问题

1 不好点击,也就是点不中

2   不能置灰,也就是说当缩小到最小的时候,按钮应该为灰色,反之放大到最大也该为灰色

基于以上2点,自定一下,其实很简单,目的在于可以自己来控制

代码如下

  1   /**    2      *@ NavControl    3      */    4     var NavControl =    5         /**  6            * NavControl    7          * @class     8          * @constructor    9          * @param {Map} map   地图的一个实例。   10          * @remark  11            *     12          */ 13           BMapLib.NavControl =   function (options) { 14               this.defaultAnchor = options.anchor; 15             this.defaultOffset = options.offset ||   new   BMap.Size(10,   10); 16             this.zoom_btn=null; 17             this.zoomout_btn=null; 18         }; 19  20  21         NavControl.prototype = new BMap.Control(); 22  23         NavControl.prototype.initialize   = function(map)   {   24             this.map = map; 25             var that = this; 26             map.addEventListener(‘zoomend‘, function () { 27                 if(that.map.getZoom()>=18){ 28                       that.removeClass(that.zoom_btn,‘blue_off‘); 29                       that.removeClass(that.zoom_btn,‘blue_disable‘); 30                       that.addClass(that.zoom_btn,‘blue_disable‘); 31                 }else if(that.map.getZoom()<=3){ 32                       that.removeClass(that.zoomout_btn,‘blue_off‘); 33                       that.removeClass(that.zoomout_btn,‘blue_disable‘); 34                       that.addClass(that.zoomout_btn,‘blue_disable‘); 35                 }else{ 36                       that.removeClass(that.zoomout_btn,‘blue_disable‘); 37                       that.removeClass(that.zoom_btn,‘blue_disable‘); 38                       that.addClass(that.zoom_btn,‘blue_off‘); 39                       that.addClass(that.zoomout_btn,‘blue_off‘); 40                   }   41             }); 42  43  44               var   container = document.createElement(‘div‘); 45               container.id=‘zoom-btn-container‘; 46  47               var   zoom_btn=this.zoom_btn =   document.createElement(‘div‘); 48             zoom_btn.className+=‘zoom_btn    zoom_btn_in‘; 49               zoom_btn.style.cssText += this.buildZoomBtnIn(); 50               zoom_btn.addEventListener(‘click‘,function(){ 51                 if(that.map.getZoom()<=18){ 52                       that.map.zoomIn(); 53                   }   54             }); 55               container.appendChild(zoom_btn); 56  57             var zin = document.createElement(‘div‘); 58             zin.className+=‘zin icon -plus‘; 59             zoom_btn.appendChild(zin); 60  61             var zoomout_btn =this.zoomout_btn=   document.createElement(‘div‘); 62               zoomout_btn.className+=‘zoom_btn blue_off zoom_btn_out‘; 63               zoomout_btn.addEventListener(‘click‘,function(){ 64                 if(that.map.getZoom()>3){ 65                       that.map.zoomOut(); 66                   }   67             }); 68               container.appendChild(zoomout_btn); 69  70             var zout = document.createElement(‘div‘); 71             zout.className+=‘zout icon -minus‘; 72               zoomout_btn.appendChild(zout); 73  74                75    76             var div=document.createElement(‘div‘);  77               div.appendChild(container); 78               this.map.getContainer().appendChild(div); 79             return div; 80           };   81    82    83    84    85    86           NavControl.prototype.buildZoomBtnIn=function(){ 87               var csstext   = []; 88             csstext.push(‘font-size: 11px‘); 89             csstext.push(‘line-height: 18px‘); 90             return csstext.join(‘;‘); 91           };   92    93           NavControl.prototype.buildZoomBtnOut=function(){ 94               var csstext   = []; 95             csstext.push(‘font-size: 11px‘); 96             csstext.push(‘line-height: 18px‘); 97             return csstext.join(‘;‘); 98           };   99 100         NavControl.prototype.hasClass   = function (obj, cls)   {101             return obj.className.match(new RegExp(‘(\\s|^)‘ + cls + ‘(\\s|$)‘));102           };103 104           NavControl.prototype.addClass = function (obj, cls) {105             if (!this.hasClass(obj, cls)) obj.className +=   " " + cls;106           };107 108           NavControl.prototype.removeClass = function (obj, cls) {109             if (this.hasClass(obj, cls)) {110                 var reg = new RegExp(‘(\\s|^)‘ + cls + ‘(\\s|$)‘);111                 obj.className =   obj.className.replace(reg, ‘ ‘);112               }113           };

其中css代码如下

1 @charset "UTF-8";@font-face { 2       font-family:   mwa;   3     src:   url(//map.baidu.com/mobile/simple/static/styleguide/icons/mwa_8077edf.eot); 4     src: url(//map.baidu.com/mobile/simple/static/styleguide/icons/mwa_f9e0ebd.woff)   format("woff"),url(//map.baidu.com/mobile/simple/static/styleguide/icons/mwa_77e7dd3.ttf)   format("truetype") 5 } 6  7 #zoom-btn-container { 8       -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,.4); 9     background: rgba(255,255,255,.8);10     border-radius: 3px;11       background-image: url(//api0.map.bdimg.com/images/geolocation-control/mobile/gradient-bg-1x64.png)12 }13 14 .bl_btn {15     background: url(//s1.map.bdimg.com/mobile/simple/static/common/widget/apiext/images/result_bgs_b6bbaa6.png)   0 0 no-repeat;16     -webkit-background-size: 58px 160px17 }18 19 .zoom_btn {20     display: -webkit-box;21     -webkit-box-align: center;22       -webkit-box-pack:   center;23       -webkit-box-sizing: border-box24   }25 26 .zoom_btn {27       height: 40px;28       width: 48px;//   宽带加大在于容易触控到29 }30 31 .zoom_btn_in {32     margin-bottom: 5px;33       border-bottom: 1px solid   #ececec34 }35   36 .zoom_btn_on {37     background-color: #eee38 }39   40 .zin,.zout {41       width: 16px;42     height:   16px;43       font-size:   16px;44     color:   #686A5B45 }46   47 .blue_off.zin{48   opacity: .849 }50 .blue_off.zout{51     opacity: .852 }53 .blue_disable  {54       opacity: .3355 }56 57 .blue_disable {58       opacity: .3359 }60 61 .icon.-plus:before {62       content: "\e60d";63 }64 65 .icon.-minus:after {66       content: "\e60f";67 }68 69 .icon {70       display: inline-block;71       font-family:   mwa;72       font-weight: 400;73       font-style:   normal;74     font-variant: normal;75       line-height: 1;76       text-transform:   none;77       -webkit-font-smoothing:   antialiased;78       font-size:   16px;79     width:   1em;80     height:   1em;81 }

注意这里面的   “+”    “-”号使用了自定义的图标字体

 

 

使用

this.NavControl = new BMapLib.NavControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT});   that.Map.addControl(this.NavControl);

 

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之WebApp频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程