1. 程式人生 > >vue、百度地圖

vue、百度地圖

點選頁面中的位置,跳轉到百度地圖,並且根據經緯度定位到具體位置

開啟   百度地圖開放平臺 | 百度地圖API SDK | 地圖開發   獲取 金鑰ak

頁面中在位置的地方新增一個點選事件

<div class="lxdz_nr" @click = "baidu(116.442208,39.922129)">  //具體的經緯度,可以直接寫在這裡,也可以寫給地址的位置
    <p>xx公司</p>
    <p>北京市xxxxxx</p> 
<p>400-665-0265
</p>
</div>
<div class="lxdz_nr" @click = "baidu(116.442208,39.922129)">  //具體的經緯度
    <p>xx公司</p>
    <p>北京市xxxxxx</p> 
<p>400-665-0265</p>
</div>

<script>
  export default {    methods: {      baidu (lng, lat) {         sessionStorage.setItem('bddt', 1)         this.$router.push({path: '/Lxdt', query: {lng: lng, lat: lat}})
    //path下指的是需要到的另外一個Lxdt頁面,傳兩個值lng,lat           }        }      }  }   </script>

以上是放位置的頁面,跳轉到百度地圖,需要再新建一個頁面   (就是上面寫的path:/Lxdt)

<template>
<div class
="dt"> <div id="bddt"> </div> </div> </template> <script> export default { name: 'lxdt', mounted () { if (sessionStorage.getItem('bddt') - 0 === 1) { sessionStorage.setItem('bddt', 0) setTimeout(_ => { window.history.go(0) }, 0) } } } </script> <style scoped> .dt{ position: fixed; left: 0; top: 0; width: 100%; height: 100%; } #bddt{ height:100% } </style>

本來想直接在vue頁面中顯示出來或者寫成元件,但是看百度api和看一些文件,寫在裡面也是各種報錯,只好把程式碼寫在html裡,程式碼如下:

先在html裡引入   <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=百度獲取的金鑰"></script>

<!DOCTYPE html> <html>
<head> <meta charset="utf-8"> <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=百度獲取的金鑰"></script> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="shortcut icon" href="./static/img/bitbug_favicon.ico" type="image/x-icon" /> <title>北京xxxx有限公司</title> </head>
<body>   <div id="app"></div> <!-- built files will be auto injected --> </body>
</html> <script>  function getUrlData() {    var url = location.hash    var arr = []    var obj = {}    if (url.indexOf('?') === -1) {      return     } else {        url = url.split('?')[1]        arr = url.split('&')        arr.forEach(function (k) {        obj[k.split('=')[0]] = k.split('=')[1]         })        }        return obj      }      var XY = {      lng: getUrlData().lng,      lat: getUrlData().lat      }      var opts = {      width: 250, // 資訊視窗寬度      height: 100, // 資訊視窗高度      title: "Hello" // 資訊視窗標題      }       var map = new BMap.Map("bddt"); // 建立地圖例項      var point = new BMap.Point(XY.lng, XY.lat); // 建立點座標      map.centerAndZoom(point, 15);      map.enableScrollWheelZoom(); // 開啟滾輪縮放      var marker = new BMap.Marker(point);  //建立一個標誌物圓點      map.addOverlay(marker);        //以上如果還有需要的內容都可以在百度地圖文件裡新增
</script>

這也是第一次做地圖之類的頁面,簡單實現下,以後再做改善