最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項(xiàng)目接入高德地圖點(diǎn)擊地圖獲取經(jīng)緯度以及省市區(qū)功能

 更新時(shí)間:2023年08月05日 09:43:31   作者:陌人笙  
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目接入高德地圖點(diǎn)擊地圖獲取經(jīng)緯度以及省市區(qū)功能的相關(guān)資料,開發(fā)中我們需要地圖定位,就是用戶輸入位置,自動(dòng)定位獲取經(jīng)緯度,需要的朋友可以參考下

1、準(zhǔn)備工作

可以先看官方的介紹,JSAPI結(jié)合Vue使用,這個(gè)不需要在main.js中引入

2、index.html中

//如果只需要獲取經(jīng)緯度可以跳過這步,經(jīng)緯度逆解析為詳細(xì)地址時(shí)需要配置這個(gè)
<script type="text/javascript">
   window._AMapSecurityConfig = {
   		securityJsCode: 'XXX', //所申請(qǐng)的安全密鑰 注意這是安全密鑰而不是key
   }
</script>

3、index.vue的html部分

//我是封裝在antd的彈窗組件中
<template>
  <a-modal title="選擇區(qū)域" :visible="visible" @ok="handleOk" @cancel="handleCancel" okText="提交" cancelText="取消">
    <div id="container"></div>
    <div class="toolbar">
      當(dāng)前坐標(biāo): {{ point[0] }}, {{ point[1] }}
      <br />
      地址: {{ address }}
    </div>
  </a-modal>
</template>

4、index.vue的script部分

<script>
import AMapLoader from '@amap/amap-jsapi-loader'
export default {
  name: 'MapDialog',
  data() {
    return {
      visible: false, //彈窗顯隱
      center: [115.97539, 28.715532], //地圖中心點(diǎn)
      point: [], //經(jīng)緯度-lng lat
      map: null, //地圖實(shí)例
      marker: null, //地圖icon
      geocoder: null, //逆解析實(shí)例
      address: null //地址
    }
  },
  methods: {
    // 打開彈窗
    open({ point, address }) {
      // 如果父組件攜帶了參數(shù) 賦值做回顯
      if (point && address) {
        this.address = address
        this.point = point
        this.center = point
      }
      // 打開彈窗
      this.visible = true
      //地圖初始化
      this.initMap()
    },
    //DOM初始化完成進(jìn)行地圖初始化
    initMap() {
      AMapLoader.load({
        key: 'XXX', // 申請(qǐng)好的Web端開發(fā)者Key,首次調(diào)用 load 時(shí)必填
        version: '2.0', // 指定要加載的 JSAPI 的版本,缺省時(shí)默認(rèn)為 1.4.15
        plugins: [
          'AMap.Geocoder', // 逆向地理解碼插件
          'AMap.Marker' // 點(diǎn)標(biāo)記插件
        ] // 需要使用的的插件列表
      })
        .then(AMap => {
          this.map = new AMap.Map('container', {
            //設(shè)置地圖容器id
            zoom: 12, //初始化地圖級(jí)別
            center: this.center //初始化地圖中心點(diǎn)位置
          })
          // 如果父組件傳入了有效值 回顯一個(gè)icon
          if (this.point.length > 0) {
            this.addMarker()
          }
          //監(jiān)聽用戶的點(diǎn)擊事件
          this.map.on('click', e => {
            let lng = e.lnglat.lng
            let lat = e.lnglat.lat
            this.point = [lng, lat]
            // 增加點(diǎn)標(biāo)記
            this.addMarker()
            // 獲取地址
            this.getAddress()
          })
        })
        .catch(e => {
          console.log(e)
        })
    },
    // 增加點(diǎn)標(biāo)記
    addMarker() {
      // 清除其他icon
      if (this.marker) {
        this.marker.setMap(null)
        this.marker = null
      }
      // 重新渲染icon
      this.marker = new AMap.Marker({
        icon: '//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png',
        position: this.point, //icon經(jīng)緯度
        offset: new AMap.Pixel(-13, -30) //icon中心點(diǎn)的偏移量
      })
      this.marker.setMap(this.map) //設(shè)置icon
    },
    // 將經(jīng)緯度轉(zhuǎn)換為地址
    getAddress() {
      const self = this
      // 這里通過高德 SDK 完成。
      this.geocoder = new AMap.Geocoder({
        city: '全國', //地理編碼時(shí),設(shè)置地址描述所在城市; 默認(rèn)全國; 可選值:城市名(中文或中文全拼)、citycode、adcode
        radius: 1000, //逆地理編碼時(shí),以給定坐標(biāo)為中心點(diǎn); 默認(rèn)1000; 取值范圍(0-3000)
        extensions: 'all' //逆地理編碼時(shí),返回信息的詳略; 默認(rèn)值:base,返回基本地址信息; 默認(rèn)值:base,返回基本地址信息
      })
      //調(diào)用逆解析方法 個(gè)人開發(fā)者調(diào)用量上限5000(次/日)
      this.geocoder.getAddress(this.point, function(status, result) {
        if (status === 'complete' && result.info === 'OK') {
          if (result && result.regeocode) {
            // this指向改變
            self.address = result.regeocode.formattedAddress
          }
        }
      })
    },
    // 提交回調(diào)
    handleOk() {
      this.$emit('callback', { point: this.point, address: this.address })
      this.map = null
      this.marker = null
      this.visible = false
    },
    // 取消回調(diào)
    handleCancel() {
      this.map = null
      this.marker = null
      this.visible = false
    }
  }
}
</script>

5、index.vue的css部分

<style lang="less" scoped>
/deep/ .ant-modal {
  width: 100vw !important;
  max-width: 100vw !important;
  top: 0;
  padding-bottom: 0;
  .ant-modal-body {
    height: calc(100vh - 55px - 53px);
    overflow-y: auto;
    padding: 0;
    .search-box {
      width: 100%;
      height: 150px;
    }
    #container {
      padding: 0px;
      margin: 0px;
      width: 100%;
      height: 100%;
      .amap-icon img,
      .amap-marker-content img {
        width: 25px;
        height: 34px;
      }
    }
    .toolbar {
      position: absolute;
      bottom: 50px;
      left: 0;
      width: 100%;
      height: 100px;
      background-color: #fff;
      font-size: 20px;
      text-align: center;
      line-height: 50px;
    }
  }
}
</style>

6、頁面效果

逆解析經(jīng)緯度得到的詳細(xì)地址

Alt

總結(jié) 

到此這篇關(guān)于vue項(xiàng)目接入高德地圖點(diǎn)擊地圖獲取經(jīng)緯度以及省市區(qū)功能的文章就介紹到這了,更多相關(guān)vue點(diǎn)擊地圖獲取經(jīng)緯度省市區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue登錄注冊(cè)組件源碼詳解(注釋)

    vue登錄注冊(cè)組件源碼詳解(注釋)

    用戶自行開發(fā)了一個(gè)Vue登錄注冊(cè)組件,采用Bootstrap表單樣式,簡單實(shí)現(xiàn)防短信轟炸功能,但因接口存在bug僅模擬了登錄注冊(cè)流程
    2025-07-07
  • Vue子組件調(diào)用父組件方法案例詳解

    Vue子組件調(diào)用父組件方法案例詳解

    這篇文章主要介紹了Vue子組件調(diào)用父組件方法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Vite+TS+Vue開啟eslint和prettier規(guī)范及校驗(yàn)方式

    Vite+TS+Vue開啟eslint和prettier規(guī)范及校驗(yàn)方式

    這篇文章主要介紹了Vite+TS+Vue開啟eslint和prettier規(guī)范及校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue3實(shí)現(xiàn)優(yōu)雅加載圖片的動(dòng)畫效果

    Vue3實(shí)現(xiàn)優(yōu)雅加載圖片的動(dòng)畫效果

    這篇文章主要為大家詳細(xì)介紹了Vue3如何實(shí)現(xiàn)加載圖片時(shí)添加一些動(dòng)畫效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2023-10-10
  • vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊

    vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊

    這篇文章主要介紹了vue如何根據(jù)條件判斷按鈕是否可以點(diǎn)擊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 在UniApp中使用WebView實(shí)現(xiàn)雙向通信完整代碼

    在UniApp中使用WebView實(shí)現(xiàn)雙向通信完整代碼

    這篇文章主要介紹了在UniApp中使用WebView實(shí)現(xiàn)雙向通信的相關(guān)資料,適用于需調(diào)用不支持的API(如文件上傳)的場景,包含Vue與HTML間的數(shù)據(jù)交互及調(diào)試技巧,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • Vue實(shí)現(xiàn)雙向滑動(dòng)輸入條

    Vue實(shí)現(xiàn)雙向滑動(dòng)輸入條

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)雙向滑動(dòng)輸入條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vuex的熱更替如何實(shí)現(xiàn)

    Vuex的熱更替如何實(shí)現(xiàn)

    這篇文章主要介紹了Vuex的熱更替如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue3?+?antv/x6實(shí)現(xiàn)流程圖的全過程

    vue3?+?antv/x6實(shí)現(xiàn)流程圖的全過程

    隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的應(yīng)用需要實(shí)現(xiàn)流程圖的制作,如工作流程圖、電路圖等,文中通過代碼以及圖文將實(shí)現(xiàn)的過程介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-06-06
  • Vue?通過this.$emit()方法子組件向父組件傳值(步驟分享)

    Vue?通過this.$emit()方法子組件向父組件傳值(步驟分享)

    這篇文章主要介紹了Vue?this.$emit()方法通過子組件向父組件傳值,第一步在父組件中引入子組件,第二步子組件向父組件傳值,本文通過需要的朋友可以參考下
    2022-11-11

最新評(píng)論

化隆| 毕节市| 德江县| 精河县| 金秀| 中江县| 全南县| 涟水县| 洱源县| 洪江市| 班戈县| 香河县| 和林格尔县| 涡阳县| 花垣县| 措勤县| 蒲城县| 拜泉县| 健康| 勃利县| 吉林市| 元江| 临江市| 紫云| 乌拉特中旗| 开江县| 长沙县| 徐汇区| 渝北区| 旬邑县| 普宁市| 东城区| 黎平县| 衡水市| 桂东县| 洛扎县| 宁海县| 潮州市| 壤塘县| 佛教| 甘南县|