詳解vue.js下引入百度地圖jsApi的兩種方法
前言
今天有個(gè)項(xiàng)目需要用到百度地圖,一般我們?cè)谝苿?dòng)端使用百度地圖,都是直接通過這樣的方式,直接引入百度地圖的jsApi。
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=D9b45bc6f98deafc489e9ac1bc7f7612"></script>
這種方法的原理,就是直接給全局widow對(duì)象添加一個(gè)BMap對(duì)象,從而可以使我們?cè)谝呀?jīng)加載api的頁面的任何地方,使用百度地圖的api。但是單單通過引入的方法,對(duì)于使用單文件組件的vue+webpack開發(fā)的項(xiàng)目,顯然是不夠的。于是,通過網(wǎng)上查資料。這里找到了兩種方法。
直接引入script標(biāo)簽
第一種方法是通過直接引入的方法,當(dāng)然除了引入script標(biāo)簽還不夠,要想在vue文件中使用bmap對(duì)象,還需要在webpack的配置文件中,設(shè)置外部擴(kuò)展(externals屬性)
//webpack.dev.conf.js externals: { 'BaiduMap': 'BMap' }
externales屬性來自官方的解釋是:
防止將某些 import 的包(package)打包到 bundle 中,而是在運(yùn)行時(shí)(runtime)再去從外部獲取這些擴(kuò)展依賴(external dependencies)。
webpack文檔也給出了一個(gè)示例:從 CDN 引入 jQuery,而不是把它打包。
index.html
<script src="https://code.jquery.com/jquery-3.1.0.js" integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk=" crossorigin="anonymous"> </script>
webpack.config.js
externals: { jquery: 'jQuery' }
import $ from 'jquery'; $('.my-element').animate(...);
參考這個(gè)實(shí)例,我們就可以在我們的項(xiàng)目中通過引入js文件的方法,直接使用百度地圖的api。
import BaiduMap from 'BaiduMap' export default { name: 'Index', .....
mounted() { var map = new BaiduMap.Map('allmap') // 創(chuàng)建地圖實(shí)例 var point = new BaiduMap.Point(120.343373,31.540212) // 創(chuàng)建中心點(diǎn)坐標(biāo) var marker = new BaiduMap.Marker(point) // 創(chuàng)建標(biāo)注 map.centerAndZoom(point,15) // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別 map.addOverlay(marker) // 將標(biāo)注添加到地圖中 }
注意這里,實(shí)例化地圖api,最好要在mounted階段進(jìn)行,如果你的dom中采用的是官方的示例如
<div id="allmap"></div>
因?yàn)橹挥性趍ounted的階段,dom才會(huì)生成并掛載。
通過模塊化引入的方法
實(shí)際上百度地圖官方去年已經(jīng)開源了基于jsApi的vue和react的對(duì)應(yīng)開源組件,我們可以直接通過npm安裝,然后使用。
VUE:https://github.com/Dafrok/vue-baidu-map
React: https://github.com/huiyan-fe/react-bmap
可參考它們?cè)趃ithub上面的文檔進(jìn)行使用。這里只介紹下vue的。
安裝
npm i vue-baidu-map --save
初始化
import Vue from 'vue' import BaiduMap from 'vue-baidu-map' Vue.use(BaiduMap, { ak: 'YOUR_APP_KEY' //這個(gè)地方是官方提供的ak密鑰 })
使用
<template> <baidu-map class="map"> </baidu-map> </template> <style> /* The container of BaiduMap must be set width & height. */ .map { width: 100%; height: 300px; } </style>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
antdv vue upload自定義上傳結(jié)合表單提交方式
這篇文章主要介紹了antdv vue upload自定義上傳結(jié)合表單提交方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue+webpack實(shí)現(xiàn)異步組件加載的方法
下面小編就為大家分享一篇vue+webpack實(shí)現(xiàn)異步組件加載的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02vue.js動(dòng)畫中的js鉤子函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了vue.js動(dòng)畫中的js鉤子函數(shù)的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07解決Vue2跨域報(bào)錯(cuò)AxiosError?net::ERR_FAILED、?Network?Error、ERR_N
這篇文章主要給大家介紹了關(guān)于解決Vue2跨域報(bào)錯(cuò)AxiosError?net::ERR_FAILED、?Network?Error、ERR_NETWORK的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11vue 使用axios 數(shù)據(jù)請(qǐng)求第三方插件的使用教程詳解
這篇文章主要介紹了vue 使用axios 數(shù)據(jù)請(qǐng)求第三方插件的使用 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07基于vue2.0實(shí)現(xiàn)的級(jí)聯(lián)選擇器
這篇文章主要介紹了基于vue2.0實(shí)現(xiàn)的級(jí)聯(lián)選擇器,基于Vue的級(jí)聯(lián)選擇器,可以單項(xiàng),二級(jí), 三級(jí)級(jí)聯(lián),多級(jí)級(jí)聯(lián),有興趣可以了解一下2017-06-06Vue.js中使用iView日期選擇器并設(shè)置開始時(shí)間結(jié)束時(shí)間校驗(yàn)功能
本文通過實(shí)例代碼給大家介紹了Vue.js中使用iView日期選擇器并設(shè)置開始時(shí)間結(jié)束時(shí)間校驗(yàn)功能,需要的朋友可以參考下2018-08-08Element中table組件按照屬性執(zhí)行合并操作詳解
在我們?nèi)粘i_發(fā)中,表格業(yè)務(wù)基本是必不可少的,對(duì)于老手來說確實(shí)簡(jiǎn)單,家常便飯罷了,但是對(duì)于新手小白如何最快上手搞定需求呢?本文從思路開始著手,幫你快速搞定表格2022-11-11