vue中使用百度地图(一)

百度地图api实例 地址链接:http://lbsyun.baidu.com/jsdemo.htm#a1_2

百度地图个性化地图编辑 地址链接:http://lbsyun.baidu.com/custom/

编辑好之后,点击查看json,将内容添加到相应的位置
需要申请秘钥
获取位置:使用坐标获取器
调用百度地图api去掉地图logo的方法:
在APP.vue中的style标签下添加

.BMap_cpyCtrl {
display: none;
}
.anchorBL {
display: none;
}

Vue框架中添加百度地图组件:https://blog.csdn.net/ting_163/article/details/78637602
具体的步骤:
1.需要在vue项目的index.html 中引入script:

externals: {
'BMap': 'BMap'
}, 

3.在地图组件中import BMap
// 导入BMap组件

import BMap from 'BMap'

4.实例

<template>
    
    <div id="XSDFXPage" class="XSDFXPage">div>
    template>
    <script>
    export default {
    name:'',
    data () {
    return {

    }
    },
    mounted() {
    // 百度地图API功能
    // 创建Map实例
    //let map = new BMap.Map('allmap',{minZoom:13,maxZoom:13});
    // minZoom:13,maxZoom:13分别为最大放大倍数和最小放大倍数
    //map.disableDragging(); //禁止拖拽
    var map = new BMap.Map("XSDFXPage",{enableMapClick:true});
    // 初始化地图,设置中心点坐标和地图级别
    map.centerAndZoom(new BMap.Point(116.4035,39.915), 11);
    // 添加地图类型控件,其中数字分别代表经纬度和地图放大的倍数

    map.addControl(new BMap.MapTypeControl()); 
    // 设置地图显示的城市 此项是必须设置的
    map.setCurrentCity("杭州"); 
    // 开启鼠标滚轮缩放 
    map.enableScrollWheelZoom(true);
    // 设置定时器,对地图进行自动移动
    setTimeout(function(){
    map.panTo(new BMap.Point(113.262232,23.154345));
    }, 2000);
    setTimeout(function(){
    map.setZoom(14);
    },4000);
    /************************************************
    添加折线
    *************************************************/
    var pointGZ = new BMap.Point(113.262232,23.154345);
    var pointHK = new BMap.Point(110.35,20.02);
    setTimeout(function(){
    var polyline = new BMap.Polyline([pointGZ,pointHK], 
    {strokeColor:"blue",strokeWeight:5,strokeOpacity:0.5});
    map.addOverlay(polyline);
    },6000);
    /************************************************
    添加工具条、比例尺控件
    *************************************************/
    map.addControl(new BMap.ScaleControl 
    ({anchor:BMAP_ANCHOR_TOP_LEFT}));
    map.addControl(new BMap.NavigationControl());
    map.addControl(new BMap.NavigationControl 
    ({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,type:BMAP_NAVIGATION_CONTROL_SMALL}));
    /************************************************
    添加自定义控件类,放大ZoomControl
    *************************************************/
    function ZoomControl() {
    //默认停靠位置和偏移量
    this.defaultAnchor = BMAP_ANCHOR_BOTTOM_RIGHT;
    this.defaultOffset = new BMap.Size(50,23);
    }
    //通过JavaScript的prototype属性继承于BMap.Control
    ZoomControl.prototype = new BMap.Control();
    //自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返 //在本方法中创建div容器,并将其添加到地图容器中
    ZoomControl.prototype.initialize = function(map) {
    //创建一个DOM元素
    var div = document.createElement('div');
    //添加文字说明
    div.appendChild(document.createTextNode('放大两级'));
    //添加样式
    div.style.color = '#40C5CC'; 
    div.style.cursor = 'pointer';
    div.style.border = '3px solid gray';
    div.style.backgroundColor = '#eee';
    //绑定事件,点击触发
    div.onclick = function(e) {
    map.setZoom(map.getZoom() + 2);
    }
    //添加DOM元素到地图上
    map.getContainer().appendChild(div);
    //将DOM元素返回
    return div;
    }
    //创建控件
    var myZoomCtrl = new ZoomControl();
    map.addControl(myZoomCtrl)

    /************************************************
    添加添加城市列表控件
    *************************************************/
    map.addControl(new BMap.CityListControl({
    anchor:BMAP_ANCHOR_BOTTOM_RIGHT,
    offset:new BMap.Size(130,23)
    // 切换城市之间事件
    // onChangeBefore: function(){
    // alert('before');
    // },
    // 切换城市之后事件
    // onChangeAfter:function(){
    // alert('after');
    // }
    }));
    /************************************************
    添加新图标
    *************************************************/
    //定义新图标
    var myIcon = new BMap.Icon 
    ("http://developer.baidu.com/map/jsdemo/img/fox.gif",new BMap.Size 
    (300,157));
    //创建标注
    var marker = new BMap.Marker(pointHK,{icon:myIcon});
    var marker1 = new BMap.Marker(pointGZ,{icon:myIcon});
    //将标注放大地图上
    map.addOverlay(marker);
    map.addOverlay(marker1);
    //文字提示
    var label = new BMap.Label('广州西站',{offset:new BMap.Size 
    (140,10)});
    marker1.setLabel(label); 
    //添加新图标的监听事件
    marker1.addEventListener('click',function(){
    var p = marker1.getPosition();//获取位置
    alert("点击的位置是:" + p.lng + ',' + p.lat);
    })

    /************************************************
    添加曲线
    *************************************************/
    var beijingPosition=new BMap.Point(116.432045,39.910683),
    hangzhouPosition=new BMap.Point(120.129721,30.314429),
    taiwanPosition=new BMap.Point(121.491121,25.127053);
    var point = [beijingPosition,hangzhouPosition,taiwanPosition];

    var curve = new BMapLib.CurveLine(point, {strokeColor:"blue", 
    strokeWeight:3, strokeOpacity:0.5});//创建弧线
    map.addOverlay(curve);//添加到地图上
    curve.enableEditing();//开启编辑功能

    /************************************************
    给地图添加右键菜单
    *************************************************/
    var menu = new BMap.ContextMenu();

    var txtMenuItem = [
    {
    text:'放大',
    callback:function(){map.zoomIn()}
    },
    {
    text:'缩小',
    callback:function(){map.zoomOut()}
    }
    ];
    for(var i=0; i < txtMenuItem.length; i++){
    menu.addItem(new BMap.MenuItem(txtMenuItem 
    [i].text,txtMenuItem[i].callback,100));
    }
    map.addContextMenu(menu);
    }
    }
    script>
    <style scoped>
    html,body,.XSDFXPage{
    width: 100%;
    height: 100%;
    overflow: hidden;
    margin: 0;
    font-family: "微软雅黑";
    }
    style>

你可能感兴趣的:(vue)