亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue項目使用高德地圖的定位及關(guān)鍵字搜索功能的實例代碼(踩坑經(jīng)驗)

 更新時間:2020年03月07日 12:33:56   作者:MrsTing  
這篇文章主要介紹了vue項目使用高德地圖的定位及關(guān)鍵字搜索功能的實例代碼,也是小編踩了無數(shù)坑總結(jié)出來的經(jīng)驗,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

1.首先在index.html引入高德地圖的秘鑰。如圖:

在這里插入圖片描述

注意:如果使用關(guān)鍵字搜索功能要加上 plugin=AMap.Autocomplete,AMap.PlaceSearch,否則功能無法使用,并會報錯
2. 定位功能,代碼如下:

const map = new AMap.Map(this.$refs.container, {
    resizeEnable: true
   }) // 創(chuàng)建Map實例
   const options = {
    'showButton': true, // 是否顯示定位按鈕
    'buttonPosition': 'LB', // 定位按鈕的位置
    'buttonOffset': new AMap.Pixel(10, 20), // 定位按鈕距離對應角落的距離
    'showMarker': true, // 是否顯示定位點
    'showCircle': true, // 是否顯示定位精度圈
    'circleOptions': {// 定位精度圈的樣式
     'strokeColor': '#0093FF',
     'noSelect': true,
     'strokeOpacity': 0.5,
     'strokeWeight': 1,
     'fillColor': '#02B0FF',
     'fillOpacity': 0.25
    },
    zoomToAccuracy: true // 定位成功后是否自動調(diào)整地圖視野到定位點
   }
   AMap.plugin(['AMap.Geolocation'], function() {
    const geolocation = new AMap.Geolocation(options)
    map.addControl(geolocation)
    geolocation.getCurrentPosition()
   })
   //下面是點擊地圖時加入mark。注意:要在綁定事件前記錄this,否則在綁定的回調(diào)方法中使用this將是該事件的this
   const _this = this
   AMap.event.addListener(map, 'click', function(e) {
    map.clearMap() // 清除地圖上所有添加的覆蓋物
    new AMap.Marker({
     position: e.lnglat,
     map: map
    })
    _this.handleMap(e.lnglat.getLng(), e.lnglat.getLat())
   })

3.關(guān)鍵字搜索功能
html部分代碼(注意ref,id,class的名字要和官網(wǎng)保持一致,否則可能出不來想要的效果):

<template>
 <div class="map-chart">
  <div id="container" ref="container" />
  <div id="myPageTop">
   <table>
    <tr>
     <td>
      <label>請輸入關(guān)鍵字:</label>
     </td>
    </tr>
    <tr>
     <td>
      <input id="tipinput">
     </td>
    </tr>
   </table>
  </div>
 </div>
</template>

script代碼:

export default {
 name: 'Map',
 props: [],
 data() {
  return {
   placeSearch: null
  }
 },
 mounted() {
  this.mapInit()
 },
 methods: {
  mapInit() {
   const map = new AMap.Map(this.$refs.container, {
    resizeEnable: true
   }) // 創(chuàng)建Map實例
   const options = {
    'showButton': true, // 是否顯示定位按鈕
    'buttonPosition': 'LB', // 定位按鈕的位置
    'buttonOffset': new AMap.Pixel(10, 20), // 定位按鈕距離對應角落的距離
    'showMarker': true, // 是否顯示定位點
    'showCircle': true, // 是否顯示定位精度圈
    'circleOptions': {// 定位精度圈的樣式
     'strokeColor': '#0093FF',
     'noSelect': true,
     'strokeOpacity': 0.5,
     'strokeWeight': 1,
     'fillColor': '#02B0FF',
     'fillOpacity': 0.25
    },
    zoomToAccuracy: true // 定位成功后是否自動調(diào)整地圖視野到定位點
   }
   //注意:要在綁定事件前記錄this,否則在綁定的回調(diào)方法中使用this將是該事件的this
   const _this = this
   // 輸入提示
   const autoOptions = {
    input: 'tipinput'
   }
   const auto = new AMap.Autocomplete(autoOptions)
   this.placeSearch = new AMap.PlaceSearch({
    map: map
   }) // 構(gòu)造地點查詢類
   AMap.event.addListener(auto, 'select', this.select)// 注冊監(jiān)聽,當選中某條記錄時會觸發(fā)
   //點擊搜索出的mark點事件
   AMap.event.addListener(this.placeSearch, 'markerClick', function(e) {
    _this.$emit('bMapDate', e.data.location.lng, e.data.location.lat)
   })
  },
  select(e) {
   this.placeSearch.setCity(e.poi.adcode)
   this.placeSearch.search(e.poi.name) // 關(guān)鍵字查詢查詢
  },
  handleMap(o, a) {
   this.$emit('bMapDate', o, a)
  }
 }
}
</script>

整體完成代碼:

<template>
 <div class="map-chart">
  <div id="container" ref="container" />
  <div id="myPageTop">
   <table>
    <tr>
     <td>
      <label>請輸入關(guān)鍵字:</label>
     </td>
    </tr>
    <tr>
     <td>
      <input id="tipinput">
     </td>
    </tr>
   </table>
  </div>
 </div>
</template>

<script>
export default {
 name: 'Map',
 props: [],
 data() {
  return {
   placeSearch: null
  }
 },
 mounted() {
  this.mapInit()
 },
 methods: {
  mapInit() {
   const map = new AMap.Map(this.$refs.container, {
    resizeEnable: true
   }) // 創(chuàng)建Map實例
   const options = {
    'showButton': true, // 是否顯示定位按鈕
    'buttonPosition': 'LB', // 定位按鈕的位置
    'buttonOffset': new AMap.Pixel(10, 20), // 定位按鈕距離對應角落的距離
    'showMarker': true, // 是否顯示定位點
    'showCircle': true, // 是否顯示定位精度圈
    'circleOptions': {// 定位精度圈的樣式
     'strokeColor': '#0093FF',
     'noSelect': true,
     'strokeOpacity': 0.5,
     'strokeWeight': 1,
     'fillColor': '#02B0FF',
     'fillOpacity': 0.25
    },
    zoomToAccuracy: true // 定位成功后是否自動調(diào)整地圖視野到定位點
   }
   AMap.plugin(['AMap.Geolocation'], function() {
    const geolocation = new AMap.Geolocation(options)
    map.addControl(geolocation)
    geolocation.getCurrentPosition()
   })
   const _this = this
   AMap.event.addListener(map, 'click', function(e) {
    map.clearMap() // 清除地圖上所有添加的覆蓋物
    new AMap.Marker({
     position: e.lnglat,
     map: map
    })
    _this.handleMap(e.lnglat.getLng(), e.lnglat.getLat())
   })

   // 輸入提示
   const autoOptions = {
    input: 'tipinput'
   }
   const auto = new AMap.Autocomplete(autoOptions)
   this.placeSearch = new AMap.PlaceSearch({
    map: map
   }) // 構(gòu)造地點查詢類
   AMap.event.addListener(auto, 'select', this.select)// 注冊監(jiān)聽,當選中某條記錄時會觸發(fā)
   AMap.event.addListener(this.placeSearch, 'markerClick', function(e) {
    _this.$emit('bMapDate', e.data.location.lng, e.data.location.lat)
   })
  },
  select(e) {
   this.placeSearch.setCity(e.poi.adcode)
   this.placeSearch.search(e.poi.name) // 關(guān)鍵字查詢查詢
  },
  handleMap(o, a) {
   this.$emit('bMapDate', o, a)
  }
 }
}
</script>

<style scoped>
  .map-chart{
    position: relative;
    margin-bottom:15px;
    width: 100%;
    height: 400px;
    border: 1px #dddddd solid;
  }
  /deep/ .amap-logo,/deep/ .amap-copyright {
    display: none!important;
  }

  #container {
    margin-bottom:15px;
    width: 100%;
    height: 400px;
    border: 1px #dddddd solid;
    z-index: 99999999;
  }

  .button-group {
    position: absolute;
    bottom: 20px;
    right: 20px;
    font-size: 12px;
    padding: 10px;
  }

  .button-group .button {
    height: 28px;
    line-height: 28px;
    background-color: #0D9BF2;
    color: #FFF;
    border: 0;
    outline: none;
    padding-left: 5px;
    padding-right: 5px;
    border-radius: 3px;
    margin-bottom: 4px;
    cursor: pointer;
  }
  .button-group .inputtext {
    height: 26px;
    line-height: 26px;
    border: 1px;
    outline: none;
    padding-left: 5px;
    padding-right: 5px;
    border-radius: 3px;
    margin-bottom: 4px;
    cursor: pointer;
  }
  #tip {
    background-color: #fff;
    padding-left: 10px;
    padding-right: 10px;
    position: absolute;
    font-size: 12px;
    right: 10px;
    top: 20px;
    border-radius: 3px;
    border: 1px solid #ccc;
    line-height: 30px;
  }
  .amap-info-content {
    font-size: 12px;
  }
  #myPageTop {
    position: absolute;
    top: 5px;
    right: 10px;
    background: #fff none repeat scroll 0 0;
    border: 1px solid #ccc;
    margin: 10px auto;
    padding:6px;
    font-family: "Microsoft Yahei", "微軟雅黑", "Pinghei";
    font-size: 14px;
    z-index: 99999999;
  }
  #myPageTop label {
    margin: 0 20px 0 0;
    color: #666666;
    font-weight: normal;
  }
  #myPageTop input {
    width: 170px;
  }
  #myPageTop .column2{
    padding-left: 25px;
  }
</style>

由于我在項目中使用了dialog,搜索出來的結(jié)果會在蒙版后面顯示,去掉scope和加/deep/、>>>都沒用,最后在index.html加樣式。代碼如下:

<style type="text/css">
  .amap-sug-result {
   z-index: 2999!important;
  }
 </style>

效果:

在這里插入圖片描述

以上就是踩了無數(shù)坑總結(jié)出來的經(jīng)驗。。。

到此這篇關(guān)于vue項目使用高德地圖的定位及關(guān)鍵字搜索功能的實例代碼(踩坑經(jīng)驗)的文章就介紹到這了,更多相關(guān)vue 高德地圖定位搜索內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你在vue項目中使用svg圖標的方法

    教你在vue項目中使用svg圖標的方法

    本文給大家介紹了在vue項目中使用svg圖標的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-04-04
  • vue中echarts3.0自適應的方法

    vue中echarts3.0自適應的方法

    這篇文章主要介紹了vue中echarts3.0自適應,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue中$nexttick,$set,$forceupdate的區(qū)別

    vue中$nexttick,$set,$forceupdate的區(qū)別

    本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • vue中數(shù)據(jù)綁定值(字符串拼接)的幾種實現(xiàn)方法

    vue中數(shù)據(jù)綁定值(字符串拼接)的幾種實現(xiàn)方法

    這篇文章主要介紹了vue中數(shù)據(jù)綁定值(字符串拼接)的幾種實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue Router4 嵌套路由的示例代碼

    Vue Router4 嵌套路由的示例代碼

    在 Vue Router 4 中,嵌套路由是一種非常重要的功能,它允許我們創(chuàng)建更復雜的 UI 結(jié)構(gòu),同時保持路由的清晰和易于管理,這篇文章主要介紹了Vue Router4 嵌套路由,需要的朋友可以參考下
    2024-04-04
  • Vue 樣式綁定的實現(xiàn)方法

    Vue 樣式綁定的實現(xiàn)方法

    學習 Vue 的時候覺得樣式綁定很簡單,但是使用的時候總是容易搞暈自己。這篇文章主要介紹了Vue 樣式綁定的實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2019-01-01
  • vue父組件與子組件之間的數(shù)據(jù)交互方式詳解

    vue父組件與子組件之間的數(shù)據(jù)交互方式詳解

    最近一直在做一個vue移動端商城的實戰(zhàn),期間遇到一個小小的問題,值得一說,下面這篇文章主要給大家介紹了關(guān)于vue父組件與子組件之間數(shù)據(jù)交互的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 快速解決element的autofocus失效問題

    快速解決element的autofocus失效問題

    這篇文章主要介紹了快速解決element的autofocus失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue3循環(huán)設置ref并獲取的解決方案

    vue3循環(huán)設置ref并獲取的解決方案

    我們在平時做業(yè)務的時候,父子組件通信會經(jīng)常用到ref,這篇文章主要給大家介紹了關(guān)于vue3循環(huán)設置ref并獲取的解決方案,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • 代理模式在vue中的使用示例解析

    代理模式在vue中的使用示例解析

    這篇文章主要為大家介紹了代理模式在vue中的使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論