uniapp使用百度地圖的保姆式教學(xué)(適合初學(xué)者!)
前言
最近在寫(xiě)一個(gè)移動(dòng)端的地圖項(xiàng)目,也是首次完整的去了解百度地圖api,這篇博客會(huì)手把手的教你如何使用百度地圖api和一些常見(jiàn)問(wèn)題,后續(xù)我也會(huì)繼續(xù)更新完善此博客
1、百度地圖api,獲取密鑰
為什么選擇這個(gè)呢,作為頂級(jí)大廠,百度地圖開(kāi)放平臺(tái)功能非常完善而且簡(jiǎn)單明了
這篇博客主要是以javascriptAPI為主
首先登入控制臺(tái)左側(cè)應(yīng)用管理→我的應(yīng)用→創(chuàng)建應(yīng)用
完成這些后可以看到我的應(yīng)用中多了個(gè)剛才創(chuàng)建的,里面的訪(fǎng)問(wèn)應(yīng)用(AK)就是我們需要的AK。
2、uniapp中使用百度地圖api
看了很多博客,有的博客說(shuō)npm下載對(duì)應(yīng)的然后全局掛載之類(lèi)的,這里我按照官網(wǎng)所說(shuō)的來(lái)寫(xiě)。
2.1web-view(第一個(gè)小重點(diǎn)!)
百度地圖api與我們之前使用的過(guò)的其他組件不同,初學(xué)者看官網(wǎng)中寫(xiě)的是在html頁(yè)面中使用,然后uniapp項(xiàng)目里我們的頁(yè)面卻是.vue的文件,所以很懵逼。所以在這里呢,我們用到了uniapp中一個(gè)組件,名字叫web-view
官網(wǎng)這句話(huà)什么意思呢,簡(jiǎn)單的來(lái)說(shuō)就是類(lèi)似一個(gè)iframe標(biāo)簽,也就是我們常說(shuō)的在一個(gè)頁(yè)面中嵌套另一個(gè)頁(yè)面,并且我們嵌套的這個(gè)頁(yè)面呢會(huì)自動(dòng)鋪滿(mǎn)整個(gè)頁(yè)面(除非我們給它設(shè)置寬高)
也就是說(shuō)我們?cè)谝@示的.vue文件里加上標(biāo)簽來(lái)引入我們的.html文件,從而實(shí)現(xiàn)在頁(yè)面中使用百度地圖
2.2實(shí)例(h5端測(cè)試)
首先我們創(chuàng)一個(gè)map.html的文件(這里建議把文件放在static目錄下,不然在vue中引入的時(shí)候會(huì)發(fā)現(xiàn)沒(méi)反應(yīng))
層級(jí)目錄這個(gè)有幾個(gè)都無(wú)所謂,反正根目錄得在static下,然后我們編輯下map.html文件
//這個(gè)文件里面就是我們對(duì)百度地圖進(jìn)行一系列操作和更改的地方 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>百度地圖</title> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0px; padding: 0px } #mapPage { height: 100%; position: relative; } #container { height: 100% } </style> </head> <body> <div id='mapPage'> <div id='container'></div> </div> </body> <!-- 微信 JS-SDK 如果不需要兼容小程序,則無(wú)需引用此 JS 文件 --> <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script> <!-- uni 的 SDK --> <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"> </script> <!-- 百度地圖 --> <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&&type=webgl&ak=這里填剛才我們?cè)诎俣鹊貓D控制臺(tái)中得到的AK"></script> <script type="text/javascript"> document.addEventListener('UniAppJSBridgeReady', function() { // ------------------------------------ 配置百度地圖 -------------------------------------------------------------------------------- var map = new BMapGL.Map("container"); // 創(chuàng)建地圖實(shí)例 var point = new BMapGL.Point(116.404, 39.915); // 創(chuàng)建點(diǎn)坐標(biāo) map.centerAndZoom(point, 15); // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別 map.enableScrollWheelZoom(true); //開(kāi)啟鼠標(biāo)滾輪縮放 map.setHeading(64.5); //設(shè)置地圖旋轉(zhuǎn)角度 map.setTilt(73); //設(shè)置地圖的傾斜角度 }); </script> </html>
然后我們打開(kāi)我們要用地圖的那個(gè)vue文件
<template> <view class="map"> //在web-view標(biāo)簽中引入我們map.html文件的地址,如果沒(méi)顯示出來(lái),按照上面說(shuō)的把map.html文件放到static目錄下 //不設(shè)置寬高的話(huà)地圖就會(huì)默認(rèn)的鋪滿(mǎn)整個(gè)頁(yè)面 <web-view src="/static/html/map.html" style="width: 100%;height: 500px;"></web-view> </view> </template> <script> export default { data() { return { } }, mounted() { } } </script> <style lang="scss" scoped> .map { width: 100%; height: 300px; } </style>
最后讓我們運(yùn)行一下項(xiàng)目
可以看到地圖已經(jīng)加載出來(lái)了
3、百度地圖api基本參數(shù)和使用介紹
基本使用講解
var map = new BMapGL.Map("container");//創(chuàng)建地圖實(shí)例,與id匹配 var point = new BMapGL.Point(116.404, 39.915);//創(chuàng)建中心點(diǎn)的坐標(biāo)(經(jīng)緯度),百度地圖在坐標(biāo)上有個(gè)轉(zhuǎn)換,百度對(duì)外接口用的是BD09坐標(biāo)系,這個(gè)下一個(gè)博客會(huì)細(xì)說(shuō) map.centerAndZoom(point, 15); // 初始化地圖,設(shè)置中心點(diǎn)坐標(biāo)和地圖級(jí)別 map.setHeading(64.5); //設(shè)置地圖旋轉(zhuǎn)角度 map.setTilt(73); //設(shè)置地圖的傾斜角度
部分參數(shù)
map.setMapType(BMAP_EARTH_MAP); // 設(shè)置地圖類(lèi)型為地球模式 var scaleCtrl = new BMapGL.ScaleControl(); // 添加比例尺控件,地圖左下方 map.addControl(scaleCtrl); var zoomCtrl = new BMapGL.ZoomControl(); // 添加縮放控件,地圖右下方 map.addControl(zoomCtrl); var cityCtrl = new BMapGL.CityListControl(); // 添加城市列表控件,左上方 map.addControl(cityCtrl); var copyrightCtrl = new BMapGL.CopyrightControl(); // 添加版權(quán)控件,左下方 map.addControl(copyrightCtrl);
切換成2d地圖
map.setHeading(0); map.setTilt(0); //上面這兩個(gè)值不要或者像我一樣設(shè)置成0,然后添加地圖類(lèi)型為默認(rèn) map.addControl(new BMap.MapTypeControl({ mapTypes:[ BMAP_NORMAL_MAP, ]}));
關(guān)于地圖交互功能和坐標(biāo)轉(zhuǎn)換功能在下一篇博客里
總結(jié)
到此這篇關(guān)于uniapp使用百度地圖的保姆式教學(xué)的文章就介紹到這了,更多相關(guān)uniapp使用百度地圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)時(shí)鐘功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)時(shí)鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06ECMAScript6函數(shù)默認(rèn)參數(shù)
這篇文章主要介紹了ECMAScript6函數(shù)默認(rèn)參數(shù)的相關(guān)資料,需要的朋友可以參考下2015-06-06js根據(jù)手機(jī)客戶(hù)端瀏覽器類(lèi)型,判斷跳轉(zhuǎn)官網(wǎng)/手機(jī)網(wǎng)站多個(gè)實(shí)例代碼
這篇文章主要介紹了js根據(jù)手機(jī)客戶(hù)端瀏覽器類(lèi)型,判斷跳轉(zhuǎn)官網(wǎng)/手機(jī)網(wǎng)站多個(gè)實(shí)例代碼,需要的朋友可以參考下2016-04-04ajax中g(shù)et和post的說(shuō)明及使用與區(qū)別
對(duì)付亂碼我都是用過(guò)濾器做字符編碼過(guò)濾的,Get方法過(guò)濾器監(jiān)聽(tīng)不到,所以我一直喜歡使用Post方法,下面對(duì)Ajax Get和Post方法做一對(duì)比,需要了解的朋友可以 參考下2012-12-12ES6中Array.includes()函數(shù)的用法
這篇文章主要介紹了ES6中Array.includes()函數(shù)的用法,需要的朋友可以參考下2017-09-09js實(shí)現(xiàn)無(wú)縫滾動(dòng)圖(可控制當(dāng)前滾動(dòng)的方向)
本文主要分享了js實(shí)現(xiàn)無(wú)縫滾動(dòng)圖的示例代碼,這個(gè)版本可以控制左右滾動(dòng),鼠標(biāo)點(diǎn)擊對(duì)應(yīng)的廣告會(huì)自動(dòng)滑動(dòng)把廣告完全展示出來(lái),當(dāng)鼠標(biāo)離開(kāi),接著繼續(xù)滾動(dòng)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02