亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue-cli中使用高德地圖的方法示例

2019-11-19 11:55:58
字體:
來源:轉載
供稿:網友

第一步 去高德地圖開放平臺申請密鑰  高德地圖開放平臺


第二部 在vue-cli項目目錄結構 


里面多了config文件夾和 utils文件夾 

config.js里面是這樣的  主要是導出密鑰 

// 高德地圖 keyexport const MapKey = '你的密鑰key'// 地圖限定城市export const MapCityName = '武漢'

utils文件夾里面 新建路一個remoteLoad.js

主要是動態創建script標簽 封裝了一個函數 傳入URL地址()

export default function remoteLoad (url, hasCallback) { return createScript(url) /**  * 創建script  * @param url  * @returns {Promise}  */ function createScript (url) {  var scriptElement = document.createElement('script')  document.body.appendChild(scriptElement)  var promise = new Promise((resolve, reject) => {   scriptElement.addEventListener('load', e => {    removeScript(scriptElement)    if (!hasCallback) {     resolve(e)    }   }, false)   scriptElement.addEventListener('error', e => {    removeScript(scriptElement)    reject(e)   }, false)   if (hasCallback) {    window.____callback____ = function () {     resolve()     window.____callback____ = null    }   }  })  if (hasCallback) {   url += '&callback=____callback____'  }  scriptElement.src = url  return promise } /**  * 移除script標簽  * @param scriptElement script dom  */ function removeScript (scriptElement) {  document.body.removeChild(scriptElement) }}

第三步 在Home組件中

<template> <div class="m-map">  <div class="search" v-if="placeSearch">   <input type="text" placeholder="請輸入關鍵字" v-model="searchKey">   <button type="button" @click="handleSearch">搜索</button>   <div id="js-result" v-show="searchKey" class="result"></div>  </div>  <div id="js-container" class="map"></div> </div></template><script>import remoteLoad from '@/utils/remoteLoad.js'import { MapKey, MapCityName } from '@/config/config'export default { props: ['lat', 'lng'], data () {  return {   searchKey: '',   placeSearch: null,   dragStatus: false,   AMapUI: null,   AMap: null  } }, watch: {  searchKey () {   if (this.searchKey === '') {    this.placeSearch.clear()   }  } }, methods: {  // 搜索  handleSearch () {   if (this.searchKey) {    this.placeSearch.search(this.searchKey)   }  },  // 實例化地圖  initMap () {   // 加載PositionPicker,loadUI的路徑參數為模塊名中 'ui/' 之后的部分   let AMapUI = this.AMapUI = window.AMapUI   let AMap = this.AMap = window.AMap   AMapUI.loadUI(['misc/PositionPicker'], PositionPicker => {    let mapConfig = {     zoom: 16,     cityName: MapCityName    }    if (this.lat && this.lng) {     mapConfig.center = [this.lng, this.lat]    }    let map = new AMap.Map('js-container', mapConfig)    // 加載地圖搜索插件    AMap.service('AMap.PlaceSearch', () => {     this.placeSearch = new AMap.PlaceSearch({      pageSize: 5,      pageIndex: 1,      citylimit: true,      city: MapCityName,      map: map,      panel: 'js-result'     })    })    // 啟用工具條    AMap.plugin(['AMap.ToolBar'], function () {     map.addControl(new AMap.ToolBar({      position: 'RB'     }))    })    // 創建地圖拖拽    let positionPicker = new PositionPicker({     mode: 'dragMap', // 設定為拖拽地圖模式,可選'dragMap'、'dragMarker',默認為'dragMap'     map: map // 依賴地圖對象    })    // 拖拽完成發送自定義 drag 事件    positionPicker.on('success', positionResult => {     // 過濾掉初始化地圖后的第一次默認拖放     if (!this.dragStatus) {      this.dragStatus = true     } else {      this.$emit('drag', positionResult)     }    })    // 啟動拖放    positionPicker.start()   })  } }, async created () {  // 已載入高德地圖API,則直接初始化地圖  if (window.AMap && window.AMapUI) {   this.initMap()  // 未載入高德地圖API,則先載入API再初始化  } else {   await remoteLoad(`http://webapi.amap.com/maps?v=1.3&key=${MapKey}`)   await remoteLoad('http://webapi.amap.com/ui/1.0/main.js')   this.initMap()  } }}</script><style lang="css">.m-map{ min-width: 500px; min-height: 300px; position: relative; }.m-map .map{ width: 100%; height: 100%; }.m-map .search{ position: absolute; top: 10px; left: 10px; width: 285px; z-index: 1; }.m-map .search input{ width: 180px; border: 1px solid #ccc; line-height: 20px; padding: 5px; outline: none; }.m-map .search button{ line-height: 26px; background: #fff; border: 1px solid #ccc; width: 50px; text-align: center; }.m-map .result{ max-height: 300px; overflow: auto; margin-top: 10px; }</style>

第四步  在app.vue中 導入組件

<template> <div id="app">  <div class="g-wraper">   <div class="m-part">    <mapDrag @drag="dragMap" class="mapbox"></mapDrag>   </div>  </div> </div></template><script>import mapDrag from './components/Home.vue'export default { name: 'app', components: {  mapDrag }, data () {  return {   dragData: {    lng: null,    lat: null,    address: null,    nearestJunction: null,    nearestRoad: null,    nearestPOI: null   }  } }, methods: {  dragMap (data) {   console.log(data)   this.dragData = {    lng: data.position.lng,    lat: data.position.lat,    address: data.address,    nearestJunction: data.nearestJunction,    nearestRoad: data.nearestRoad,    nearestPOI: data.nearestPOI   }  } }}</script><style>body{ margin: 0; }.page-header{ color: #fff; text-align: center; background: #159957; background-image: -webkit-linear-gradient(330deg,#155799,#159957); background-image: linear-gradient(120deg,#155799,#159957); padding: 3rem 4rem; margin-bottom: 30px;}.page-header h1{ margin: 0; font-size: 40px; }.page-header p{ color: #ccc; margin: 0; margin-bottom: 30px; }.page-header a{ display: inline-block; border: 1px solid #fff; margin-right: 10px; line-height: 40px; padding: 0 20px; border-radius: 4px; color: #fff; text-decoration: none; transition: all .3s; }.page-header a:hover{ background: #fff; color: #333; }.g-wraper{ width: 1000px; margin: 0 auto; color: #666; font-size: 16px; line-height: 30px; }.m-part{ margin-bottom: 30px; }.m-part::after{ content: ''; display: block; clear: both; }.m-part .title{ font-size: 30px; line-height: 60px; margin-bottom: 10px; color: #333; }.m-part .mapbox{ width: 600px; height: 400px; margin-bottom: 20px; float: left; }.m-part .info{ margin: 0; padding: 0; list-style: none; line-height: 30px; margin-left: 620px; }.m-part .info span{ display: block; color: #999; }.m-part ol{ line-height: 40px; margin-left: 0; padding-left: 0; }.m-part pre{ padding: 10px 20px; line-height: 30px; border-radius: 3px; box-shadow: 0 0 15px rgba(0,0,0,.5); }.m-footer{ background: #eee; line-height: 60px; text-align: center; color: #999; font-size: 12px; }.m-footer a{ margin: 0 5px; color: #999; text-decoration: none; }</style>

上面 地圖初始化渲染的方法 直接拿別人封裝好的東西

最后運行后


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大片在线看免费观看| 欧美极品欧美精品欧美视频| 狠狠色香婷婷久久亚洲精品| 色老头一区二区三区在线观看| 91精品国产综合久久男男| 亚洲成色777777女色窝| 精品爽片免费看久久| 国产精品久久久久91| 欧美国产日韩二区| 亚洲欧洲激情在线| 亚洲激情视频网| 清纯唯美亚洲激情| 欧美黑人狂野猛交老妇| 国产主播在线一区| 国产精品a久久久久久| 在线精品视频视频中文字幕| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲加勒比久久88色综合| 亚洲国产91精品在线观看| 久久福利网址导航| 91精品啪在线观看麻豆免费| 日韩小视频在线观看| 欧美国产精品va在线观看| 成人激情黄色网| 国产日韩欧美成人| 久久久噜噜噜久噜久久| 日韩女优人人人人射在线视频| 国产精品欧美久久久| 国产成人精品a视频一区www| 国产精品一区久久| 亚洲精选一区二区| 久久久成人精品| 久久亚洲国产精品| 欧美裸身视频免费观看| 7777精品久久久久久| 91精品久久久久久久久久| 国产一区二区激情| 欧美性猛交xxxx乱大交蜜桃| 亚洲成人精品视频在线观看| 不用播放器成人网| 精品国产1区2区| 欧美精品一本久久男人的天堂| 中日韩美女免费视频网站在线观看| 亚洲欧洲在线视频| 国产精品久久久久久久久免费| 57pao成人永久免费视频| 精品国产一区二区三区四区在线观看| 国产精品美女在线观看| 久久久99久久精品女同性| 欧美日韩亚洲国产一区| 日韩精品免费在线视频| 欧美黑人性猛交| 欧美成人激情在线| 国产亚洲一级高清| 亚洲天天在线日亚洲洲精| 亚洲人成在线一二| 欧美精品福利视频| 久久精品99无色码中文字幕| 欧美精品手机在线| 日韩中文字幕在线精品| 亚洲人午夜色婷婷| 久久久久亚洲精品国产| 欧美午夜女人视频在线| 日韩在线观看视频免费| 欧美与欧洲交xxxx免费观看| 久久视频在线视频| 成人免费观看a| 91久久夜色精品国产网站| 热门国产精品亚洲第一区在线| 亚洲精品有码在线| 91亚洲精品一区二区| 国产拍精品一二三| 国产成人精品在线视频| 亚洲精品电影在线| 亚洲国产欧美精品| 久久久久久国产精品久久| 久久久99免费视频| 欧美午夜视频在线观看| 2018中文字幕一区二区三区| 国产成人av在线| 国产亚洲欧美一区| 亚洲视频国产视频| 国产精品久久9| 亚洲一区二区三区成人在线视频精品| 亚洲色图第三页| 久久99国产精品久久久久久久久| 久久国产精品网站| 欧美日韩国产页| 日韩亚洲在线观看| 欧美成人高清视频| 欧美二区乱c黑人| 精品久久久久久久久中文字幕| 亚洲黄一区二区| 国产精品丝袜视频| 亚洲永久免费观看| 亚洲人成伊人成综合网久久久| 国产综合福利在线| 97视频在线观看播放| 日韩亚洲综合在线| 奇米成人av国产一区二区三区| 91国语精品自产拍在线观看性色| 最近更新的2019中文字幕| 亚洲一区二区三区视频| 都市激情亚洲色图| 国产大片精品免费永久看nba| 亚洲摸下面视频| 97国产精品视频| 欧美激情视频一区二区| 日韩av免费看| 亚洲第一男人天堂| 成人福利网站在线观看| 日本免费在线精品| 亚洲伦理中文字幕| 久久97精品久久久久久久不卡| 国产欧美在线播放| 亚洲老板91色精品久久| 久久韩剧网电视剧| 日韩电视剧免费观看网站| 久久久久久久久久久久av| 久久久精品一区| 国产日韩精品入口| 欧美极品少妇xxxxⅹ喷水| 国产精品中文在线| 超碰91人人草人人干| 中文欧美日本在线资源| 亚洲自拍中文字幕| 欧美国产日产韩国视频| 日韩电影网在线| 狠狠操狠狠色综合网| 少妇av一区二区三区| 亚洲最大中文字幕| 欧美日韩国产va另类| 亚洲精品98久久久久久中文字幕| 日韩欧美aⅴ综合网站发布| 91地址最新发布| 精品二区三区线观看| 91成人免费观看网站| 国产一区视频在线| 亚洲尤物视频网| 欧美黑人国产人伦爽爽爽| 视频在线一区二区| 日韩欧美在线视频日韩欧美在线视频| 成人免费在线视频网站| 久久影院资源网| www.欧美三级电影.com| 91亚洲国产精品| 亚洲国产精品系列| 一区二区成人精品| 久久精品久久久久久国产 免费| 91九色蝌蚪国产| 亚洲电影免费观看高清完整版在线| 日韩精品在线视频| 欧美黄色片在线观看| 亚洲欧美日韩国产精品| 欧美黄色三级网站| 久久久久久久久网站| 欧美午夜激情视频| 欧美性极品xxxx娇小| 亚洲美女精品成人在线视频| 韩国三级日本三级少妇99| 欧美一区在线直播| 亚洲男人天堂久| 欧美一区二粉嫩精品国产一线天| 中文字幕日韩高清|