Vue 使用百度地圖 實(shí)現(xiàn)搜索 定位

配置解析:https://www.cnblogs.com/Marco-hui/p/12155995.html

//配置文件

/**
 * 動(dòng)態(tài)加載百度地圖api函數(shù)
 * @param {String} ak  百度地圖AK苞也,必傳
 */
export default function loadBMap(ak) {
    return new Promise(function(resolve, reject) {
      if (typeof window.BMap !== 'undefined') {
        resolve(window.BMap)
        return true
      }
      window.onBMapCallback = function() {
        resolve(window.BMap)
      }
      let script = document.createElement('script')
      script.type = 'text/javascript'
      script.src =
        'http://api.map.baidu.com/api?v=3.0&ak=' + ak + '&callback=onBMapCallback'
      script.onerror = reject
      document.head.appendChild(script)
    })
  }
//要求能定位到國外 及 查看了文檔 百度支持東南亞大部分地區(qū)  滿足需求 從而使用百度地圖<template>
  <div class="addHospital">
      <div class="map" v-loading="loading">
        <el-input placeholder="請(qǐng)輸入搜索地址" v-model="mapName" class="input-with-select">
          <el-button slot="append" icon="el-icon-search" @click="mapNameChange"></el-button>
        </el-input>
        <div style="padding:10px 0;" v-if="mapPointName">當(dāng)前選中:{{mapPointName}}</div>
        <div id="container" style="height: 400px; width: 100%" ref="allmap"></div>
        <div class="map-btn">
          <el-button type="primary" @click="dialogMap = false">確認(rèn)</el-button>
        </div>
      </div>
  </div>
</template>

<script>
let map = null,
  geoc = null;
export default {
  name: "addHospital",
  data() {
    return {
      dialogMap: false,
      mapName: "",
      mapPointName: "",
      loading:true,
      mapGetshow: true,
      dialogName: ""
    };
  },
  created() {this.mapBuild()},
  methods: {
    //搜索地圖
    mapNameChange() {
      let that = this,
        point,
        marker = null;
      let local = new BMap.LocalSearch(map, {
        renderOptions: { map: map },
        onSearchComplete: res => {
          if (local.getResults() != undefined) {
            map.clearOverlays(); //清除地圖上所有覆蓋物
            if (local.getResults().getPoi(0)) {
              point = local.getResults().getPoi(0).point; //獲取第一個(gè)智能搜索的結(jié)果
              map.centerAndZoom(point, 10);
              marker = new BMap.Marker(point); // 創(chuàng)建標(biāo)注
              map.addOverlay(marker); // 將標(biāo)注添加到地圖中
              marker.enableDragging(); // 可拖拽
              geoc.getLocation(point, function(rs) {
                var addComp = rs.addressComponents;
                console.log(addComp);
                that.mapPointName =
                  addComp.province +
                  ", " +
                  addComp.city +
                  ", " +
                  addComp.district +
                  ", " +
                  addComp.street +
                  ", " +
                  addComp.streetNumber;
                  
              });
            } else {
              alert("未匹配到地點(diǎn)!可拖動(dòng)地圖上的紅色圖標(biāo)到精確位置");
            }
          } else {
            alert("未找到搜索結(jié)果");
          }
        }
      });
      local.search(this.mapName);
    },
    //地圖顯示
    mapBuild() {
      let that = this;
      this.dialogMap = !this.dialogMap;
      setTimeout(function() {
        if (that.mapGetshow) {
          map = new BMap.Map("container");
          geoc = new BMap.Geocoder();
          let point = new BMap.Point(116.3964, 39.9093);
          map.centerAndZoom(point, 10);
          map.enableScrollWheelZoom();
          var geolocation = new BMap.Geolocation();
          //定位
          geolocation.getCurrentPosition(
            r => {
              console.log(r);
              var mk = new BMap.Marker(r.point);
              map.addOverlay(mk);
              map.panTo(r.point);
              geoc.getLocation(r.point, function(rs) {
                var addComp = rs.addressComponents;
                console.log(addComp);
                that.mapPointName =
                  addComp.province +
                  addComp.city +
                  addComp.district +
                  addComp.street +
                  addComp.streetNumber;
                  that.loading = false;
                that.mapGetshow = false;
              });
            },
            { enableHighAccuracy: true }
          );
          //鼠標(biāo)點(diǎn)擊
          map.addEventListener("click", function(e) {
            console.log(e);
            var pt = e.point;
            var marker = new BMap.Marker(pt); // 創(chuàng)建標(biāo)注
            map.clearOverlays();
            map.addOverlay(marker);
            geoc.getLocation(pt, function(rs) {
              var addComp = rs.addressComponents;
              console.log(addComp);
              that.mapPointName =
                addComp.province +
                addComp.city +
                addComp.district +
                addComp.street +
                addComp.streetNumber;
            });
          });
        }
      }, 1000);
    }
  }
};
</script>
<style scoped lang="scss">
@import "../../filters/css/all.css";
.addHospital {
  width: 100%;
  height: 100%;
  .map {
    padding: 10px;
    .input-with-select {
    }
    .map-btn {
      padding: 10px 20px;
      margin: auto;
      text-align: right;
      button {
        padding: 12px 30px;
      }
    }
  }
}
</style>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锌历,一起剝皮案震驚了整個(gè)濱河市鲜锚,隨后出現(xiàn)的幾起案子迟隅,更是在濱河造成了極大的恐慌傻唾,老刑警劉巖幢哨,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奕翔,死亡現(xiàn)場(chǎng)離奇詭異聊记,居然都是意外死亡秸苗,警方通過查閱死者的電腦和手機(jī)召娜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惊楼,“玉大人玖瘸,你說我怎么就攤上這事秸讹。” “怎么了雅倒?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵璃诀,是天一觀的道長。 經(jīng)常有香客問我蔑匣,道長劣欢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任裁良,我火速辦了婚禮氧秘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趴久。我一直安慰自己丸相,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布彼棍。 她就那樣靜靜地躺著灭忠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪座硕。 梳的紋絲不亂的頭發(fā)上弛作,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音华匾,去河邊找鬼映琳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜘拉,可吹牛的內(nèi)容都是我干的萨西。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼旭旭,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谎脯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起持寄,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤源梭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后稍味,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體废麻,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年模庐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烛愧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屑彻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顶吮,我是刑警寧澤社牲,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站悴了,受9級(jí)特大地震影響搏恤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湃交,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一熟空、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搞莺,春花似錦息罗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至温圆,卻和暖如春挨摸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背岁歉。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工得运, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锅移。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓熔掺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親非剃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞬女,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355