記前端vue 實現地圖選址


1.前端選擇框點擊跳轉至地圖選址頁面

<van-row class="address_item">
  <van-col span="6" class="item-title">收貨地址</van-col>
  <van-col span="18">
  <p class="item">
  <van-icon name="arrow" class="arrow"/>
  <van-icon name="location-o" />
  <span><van-field v-model="mapname" placeholder="點擊選擇" readonly v-on:click="mapaddress"/></span>
  </p>
  </van-col>
</van-row>

2. 觸發點擊事件 

mapaddress(){
     et a=this.$route.query.id
  localStorage.setItem('names',this.names);
  localStorage.setItem('phone',this.phone);
  localStorage.setItem('addressDetail',this.addressDetail);
  localStorage.setItem('postalCode',this.postalCode);
  localStorage.setItem('checked',this.checked);
  this.$router.push({
    path: '/mapLocation',
    query: {id:a,are:this.are}
  })

}

3.地圖選址頁面 使用ifarm內嵌引入高德地圖組件高德地圖  注意使用地圖需要申請key 申請時注意根據自己需求選擇服務

<template>
  <iframe id="getAddress" @load="loadiframe"
    src="https://m.amap.com/picker/?keywords=寫字樓,小區,學校&zoom=15&center=&radius=1000&total=20&key=你申請的key"
    style="width:100%; height:100%;position: absolute;z-index:22222;">
  </iframe>
</template>

4.地圖加載完成選擇地址后跳轉至父頁面,由於我的需求在輸入后跳轉父頁面,父頁面的表單會刷新,所以做了一個緩存處理。

loadiframe() {
  let iframe = document.getElementById('getAddress').contentWindow;
  iframe.postMessage('hello', 'https://m.amap.com/picker/');
  window.addEventListener("message", function (e) {
  if (e.data.command != "COMMAND_GET_TITLE") {
  //實現業務代碼
  let a=this.$route.query.id
  let are=this.$route.query.are
  let address=e.data.address
  let location=e.data.location
  let name=e.data.name
  this.$router.push({
  path: '/addressFill',
    query: {address:address,location:location,name:name,id:a,are:are}
  })

  }

  }.bind(this), false);
},

5.緩存處理,在跳轉子地圖選擇頁面時將表單數據存入緩存,子頁面跳轉回來時當前頁面表單數據不刷新。

localStorage.setItem('names',this.names);
localStorage.setItem('phone',this.phone);
localStorage.setItem('addressDetail',this.addressDetail);
localStorage.setItem('postalCode',this.postalCode);
localStorage.setItem('checked',this.checked);

6.緩存解決了頁面返回無數據的情況,但是同時會產生這個頁面的緩存一直存在,所以,在返回當前頁面時進行驗證,並清除緩存

let addressDetail= localStorage.getItem('addressDetail');

if(addressDetail!=undefined&&addressDetail!=null&&addressDetail!=""){
  this.addressDetail=addressDetail
  localStorage.removeItem("addressDetail");
}else{
  this.addressDetail=""
}

以上就是一個后台菜鳥程序員現學現做的sdk地圖選址小功能,對我頗有感觸,遂記錄下來。如有不正確之處希望指出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM