• 百度地图JS API


    1、百度地图api的使用

    1)申请百度账号和ak

    2)引用百度地图API文件

    <script src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

    3)获取当前位置的经纬度

    //获取当前位置的经纬度
    getCurrentPosition:function(context,params){
        //navigator.geolocation部分手机有权限问题
        Vue.prototype.$common.showLoading('正在获取当前位置');
        //使用百度地图api获取当前位置每次进入服务号都需要授权
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function(r){
            if(this.getStatus() == BMAP_STATUS_SUCCESS){
                Vue.prototype.$common.hideLoading();
                var pos={
                    longitude:r.point.lng+'',
                    latitude:r.point.lat+''
                }
                context.commit('setCurrentPosition',pos);
                if(params.callback){
                    params.callback();
                }
            }else {
                Vue.prototype.$common.hideLoading();
                weui.alert('获取当前位置失败');
            }        
        },{enableHighAccuracy: true});
    }

     4)展示地图

    百度地图API中的大部分对象都含有addEventListener方法,您可以通过该方法来监听对象事件。

    mounted:function(){
        var self=this;
        this.$common.httpPost('userRegisterPre.do',{},function(response){
            self.user=response.User;
            //deptseq
            store.dispatch('getCurrentPosition',{callback:setMap});
            function setMap(){
                var map = new BMap.Map("map");
                var currentPosition=store.state.glob.currentPosition;
                var point = new BMap.Point(currentPosition.longitude, currentPosition.latitude);
                map.centerAndZoom(point, 12);
                
                var me = new BMap.Icon("images/current-pos.png", new BMap.Size(32,32));
                var meMarker = new BMap.Marker(point,{icon:me});//创建标注
                map.addOverlay(meMarker);
                
                var DeptList=store.state.glob.deptList,pointArray=[];
                for(var i=0;i<DeptList.length;i++){
                    var item=DeptList[i];
                    if(item.deptseq==response.User.deptseq){
                        self.dept=item;
                    }
                    var deptPoint=new BMap.Point(item.Longitude, item.Latitude);
                    var marker = new BMap.Marker(deptPoint);//创建点
                    map.addOverlay(marker);//增加点
                    pointArray.push(deptPoint);
                    marker.addEventListener("click",(function(i){
                        return function(){
                            self.dept=DeptList[i];
                            self.showedMap=false;
                        }
                    })(i));  //通过闭包为多个点注册点击事件
                    var label = new BMap.Label(item.Deptname,{offset:new BMap.Size(20,-10)});
                    marker.setLabel(label);
                    self.showedMap=false;
                }
            }    
        });
    },

     5)地图带检索功能的信息窗口

    引入js和css:

    <script src="https://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js"></script>

    <link rel="stylesheet" href="https://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.css" />

    setDeptList:function(){
        var self=this;
        this.$common.httpPost('queryBankDeptList.do',{},function(response){
            var DeptList=response.DeptList;
            self.deptList=DeptList;
            for(var i=0;i<DeptList.length;i++){
                var item=DeptList[i];
                var deptPoint=new BMap.Point(item.Longitude, item.Latitude);
                var marker = new BMap.Marker(deptPoint);//创建点
                self.map.addOverlay(marker);//增加点
                var label = new BMap.Label(item.Deptname,{offset:new BMap.Size(20,-10)});
                marker.setLabel(label);
                
                DeptList[i].marker=marker;
                var content='<p>地址:'+item.addr+'</p>';
                content+='<p>客户经理:'+item.contactname+'</p>';
                var telStr='<a href="tel:'+item.phone+'">'+item.phone+'</a>';
                content+='<p>联系方式:'+telStr+'</p>';
                DeptList[i].searchInfoWindow = new BMapLib.SearchInfoWindow(self.map, content, {
                    title  : item.Deptname+'社区支行',      //标题
                    width  : 290,             //宽度
                    height : 80,              //高度
                    panel  : "panel",         //检索结果面板
                    enableAutoPan : true,     //自动平移
                    searchTypes   :[
                        //BMAPLIB_TAB_SEARCH,   //周边检索
                        //BMAPLIB_TAB_TO_HERE,  //到这里去
                        //BMAPLIB_TAB_FROM_HERE //从这里出发
                    ]
                });
                marker.addEventListener("click",(function(i){
                    return function(){
                        DeptList[i].searchInfoWindow.open(DeptList[i].marker);
                    }
                })(i));
            }
        });
    },
  • 相关阅读:
    gitblit安装使用
    谷歌AMP和百度MIP是什么鬼?
    微信小程序开发体验
    设计模式之策略模式
    【前端安全】JavaScript防XSS攻击
    【前端安全】JavaScript防流量劫持
    设计模式之“中间件模式”
    设计模式之Mixin模式
    设计模式之观察者模式
    设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/colorful-coco/p/7825327.html
Copyright © 2020-2023  润新知