美文网首页Java web
百度地图JavaScript API学习

百度地图JavaScript API学习

作者: 北风吹_yfy | 来源:发表于2019-10-31 16:58 被阅读0次

    简介

    • 官方网址

    http://lbsyun.baidu.com/index.php?title=jspopular

    百度地图JavaScript API 是一套由JavaScript语言编写的应用程序接口,是百度目前 为止功能最齐全的有关地图的网站。他能够帮助您在网站中构建功能丰富、交互性强的 地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。

    该套API免费对外开放,自V1.5版本起,需要先申请密钥(AK)才可以使用,接口(除发送短信功能外),无使用次数限制。

    JavaScript API首家支持Https,如需要申请Https服务,需要认证企业信息,成为企业认证用户后,https将自动开通,同时获得更高的服务配额。

    • 使用方法

    第一种:直接加载

    第二种:异步加载

        优点:功能多,提供可用的插件多
        缺点:因为是针对js,而不是vue,所以需要自己封装。
    
    //src/api/config.js
    export const ak = "你的密钥";
    
    //src/api/load-bmap.js
    import { ak } from "./config";
    
    export default function loadBMap() {
      return new Promise(function(resolve, reject) {
        if (typeof BMap !== "undefined") {
          // eslint-disable-next-line no-undef
          resolve(BMap);
          return true;
        }
        window.onBMapCallback = function() {
          // eslint-disable-next-line no-undef
          resolve(BMap);
        };
        let script = document.createElement("script");
        script.type = "text/javascript";
        script.src =
          "http://api.map.baidu.com/api?v=3.0&ak=" +
          ak +
          "&callback=onBMapCallback";
        script.onerror = reject;
        document.head.appendChild(script);
      });
    }
    
    //src/components/index.vue
    <template>
      <div class="map-area" :id="mapId"></div>
    </template>
    <script>ss
    import loadBMap from './load-bmap.js'
    export default {
      data() {
        return {
          mapId: 'BMap-' + parseInt(Date.now() + Math.random()),
          myMap: null
        }
      },
      mounted() {
        this.initMap()
      },
      methods: {
        initMap() {
          loadBMap()
            .then(() => {
              // 百度地图API功能
              this.myMap = new BMap.Map(this.mapId) // 创建Map实例
              this.myMap.centerAndZoom(new BMap.Point(116.404, 39.915), 11) // 初始化地图,设置中心点坐标和地图级别
              //添加地图类型控件
              this.myMap.addControl(
                new BMap.MapTypeControl({
                  mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP]
                })
              )
              this.myMap.setCurrentCity('北京') // 设置地图显示的城市 此项是必须设置的
              this.myMap.enableScrollWheelZoom(true) //开启鼠标滚轮缩放
            })
            .catch(err => {
              console.log('地图加载失败')
            })
        }
      }
    }
    </script>
    <style scoped>
    .map-area {
      width: 100%;
      height: 500px;
    }
    </style>
    
    

    使用Vue Baidu Map

    • 简介

    这种是针对vue框架的一种地图,已经封装好。

    • 官网地址

    https://dafrok.github.io/vue-baidu-map/#/zh/index

    • 使用方法

    直接npm下载依赖就可以
    优点:针对Vue的,一个封装好,直接粘贴复制就可以。
    缺点:功能不全,只有百度地图JavaScript API地图的一部分内容,看项目需求,想我的项目用地图的比较多,这个网站满足不了,只能选择第一种。

    使用vue-amap

    • 简介

    基于Vue 2.x与高德的地图组件,数据状态与地图状态单向绑定,开发者无需关心地图的具体操作【使用方法很简单,跟着官网走就可以了】

    • 官方地址

    https://elemefe.github.io/vue-amap/#/

        优点:跟Vue Baidu Map的一样,是针对Vue框架的,已经封装好的,可以直接使用
        缺点:跟Vue Baidu Map的缺点一样,功能少
    

    JavaScript API 在 vue 中的具体使用方法

    • 申请密钥

    申请密钥(百度地图开放平台-->开发文档-->web开发-->JavaScript API-->立即使用-->创建应用)

    应用类型:浏览器端

    Referer白名单:填*即可

    密钥申请成功后即可使用密钥(AK)

    • 第一种方法:直接引入script标签

    除了引入script标签还不够,要想在vue文件中使用bmap对象,还需要在webpack的配置文件中,设置外部扩展(external属性)

    externals属性介绍:
        防止将某些import的包(package)打包到bundle中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。
    
    1. 在html 文件中引入百度地图API
    //同步加载
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
    
    1. 设置外部扩展(externals属性)
    //webpack.dev.conf.js
    externals:{
        'BMap':'BMap'
    }
    
    //或vue.config.js
    module.exports = {
      configureWebpack: {
        externals: {
          BMap: "BMap"
        }
      },
      publicPath: "./"
    };
    
    
    1. 添加dom结构
    <div id="allmap"></div>
    
    1. 直接使用百度地图的api
    import BMap from 'BMap'
    export default{
        name:'Index',
        ......
        mounted() {
        var map = new BMap.Map("container");
        // 创建地图实例  
        var point = new BMap.Point(116.404, 39.915);
        // 创建点坐标  
        map.centerAndZoom(point, 15);
        // 初始化地图,设置中心点坐标和地图级别  
      }
    }
    
    • 第二种方法:通过模块化引入的方法
    1. 安装
    npm install vue-baidu-map --save
    
    1. 使用

    全局注册(一次性引入百度地图组件库的所有组件)

    import Vue from 'vue';
    import BaiduMap from 'vue-baidu-map';
    
    Vue.use(BaiduMap,{
        ak:'密钥'
    })
    
    <template>
        <baidu-map class="bm-view"/>
    </template>
    
    <style>
    .bm-view{
        width:100%;
        height:300px;
    }
    </style>
    

    局部注册(按需引入组件)

    <template>
        <baidu-map class="bm-view" ak="密钥"></baidu-map>
    </template>
    
    <script>
    import BaiduMap from 'vue-baidu-map/components/ map/Map.vue';
    export default{
        components:{
            BaiduMap
        }
    }
    </script>
    <style>
    .bm-view {
      width: 100%;
      height: 300px;
    }
    </style>
    
    

    相关文章

      网友评论

        本文标题:百度地图JavaScript API学习

        本文链接:https://www.haomeiwen.com/subject/dxvtbctx.html