日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue+高德地圖實現地圖搜索及點擊定位操作

瀏覽:197日期:2022-06-11 15:59:11

首先需要在index.html中引入高德地圖的js鏈接,key需要換成你自己的key

最近有個需求是實現一個使用地圖搜索定位的功能,在網上參考了下其他的文章,感覺不是很完善,自己整理了一下,可以實現點擊定位,搜索列表定位等功能,可能有些地方是多余的,需要的自己看著改下

<script type='text/javascript' src='https://webapi.amap.com/maps?v=1.4.14&key=你的key'></script>

效果圖如下

vue+高德地圖實現地圖搜索及點擊定位操作

下邊就是實現過程

html部分

<template> <div id='wrap'> <div id='searchWrap'> <div class='searchWrap'><input type='text' v-model='address' @input='search'><button @click='search'>搜索</button> </div> <div v-show='hide'><div v-for='(item,index) in poiArr' @click='openMarkerTipById(index,$event)' @mouseout='onmouseout_MarkerStyle(index+1,$event)' :key='index'> <div style='border-bottom: 1px solid #eaeaea'> <div :class='index==selectedIndex?’selected’:’’'>{{index+1}}</div> <div v-if='item.url' : ></div> <h3 > <span class='poi-name'>{{item.name}}</span> </h3> <div class='poi-info'> <p class='poi-addr'>地址:{{item.address}}</p> <p class='poi-tel'>電話:{{item.tel}}</p> </div> <div class='clear'></div> </div></div> </div> </div> <div id='iCenter'></div> <button @click='fetAddressName'>獲取當前位置和名字</button> </div></template>

js部分

<script> export default { props:[’newAddress’,’dataObj’],// 父組件傳過來的地址和地址經緯度信息, data() { return { address:this.newAddress ? this.newAddress : ’鄭州’,//保存地址的漢字名字 map1: ’’, map:’’,//保存地址的經緯度 poiArr: [],//左邊搜索出來的數組 windowsArr: [],//信息窗口的數組 marker: [], mapObj: '',//地圖對象 selectedIndex: -1, hide: false, clickType: 1, location:{ P:this.dataObj.lat, Q:this.dataObj.lng, } }; }, mounted() { console.log(333,this.dataObj,this.location) this.mapInit() this.placeSearch(this.address) }, methods: { showToast(address){ this.placeSearch(address.address) console.log(444,address) this.location.P =address.lat this.location.Q =address.lng this.address = address.address let that = this; new AMap.InfoWindow({ content:'<h3>' + ’當前選中地址’ + '</h3>' + that.address, size: new AMap.Size(300, 0), autoMove: true, offset: new AMap.Pixel(-4, -10) }).open(that.mapObj,that.location) }, cancelSave(){ eventBus.$emit(’cancelSave’) }, saveAddress(){ let addressName,location; if(this.clickType==1){ let address = this.poiArr[this.selectedIndex] addressName = address.name+address.address; location = address.location console.log(address.name+address.address,address.location) }else if(this.clickType==2){ console.log(this.address,this.map) addressName = this.address; location = this.map; }else if(this.clickType==3){ console.log(this.address,this.map1) addressName = this.address; location = this.map1; } eventBus.$emit(’saveAddress’,[addressName,location]) }, // 經緯度轉化為詳細地址 getAddress(){ let that = this; AMap.plugin(’AMap.Geocoder’,function(){ let geocoder = new AMap.Geocoder({ radius: 100, extensions: 'all' }); geocoder.getAddress([that.map1.lng,that.map1.lat], function(status, result) { if (status === ’complete’ && result.info === ’OK’) { let address = result.regeocode.formattedAddress; console.log(result.regeocode); that.address = result.regeocode.formattedAddress; // that.placeSearch(that.address) } }); }) }, // 地圖點擊事件 testevent(){ let that = this; this.clickType = 3 // var map=new AMap.Map(’iCenter’);//重新new出一個對象,傳入參數是div的id AMap.event.addListener(this.mapObj,’click’,function (e) { //添加點擊事件,傳入對象名,事件名,回調函數 that.map1 = e.lnglat; that.getAddress(); setTimeout(()=>{ new AMap.InfoWindow({ content:'<h3>' + ’當前選中地址’ + '</h3>' + that.address, size: new AMap.Size(300, 0), autoMove: true, offset: new AMap.Pixel(-4, -10) }).open(that.mapObj,e.lnglat) },100) }) }, //創建一個map mapInit() { this.mapObj = new AMap.Map('iCenter', { resizeEnable: true, zoom: 10, }) this.testevent(); }, //根據名字地址去搜索結果 placeSearch(name) { let that = this; this.hide = true var MSearch; this.mapObj.plugin( ['AMap.PlaceSearch', 'AMap.ToolBar', 'AMap.Scale'], () => { this.mapObj.addControl(new AMap.ToolBar()) this.mapObj.addControl(new AMap.Scale()) MSearch = new AMap.PlaceSearch({ //構造地點查詢類 city: that.address //城市 }); AMap.event.addListener(MSearch,'complete',this.keywordSearch_CallBack) //返回地點查詢結果 MSearch.search(name); //關鍵字查詢 } ); }, //結果的回調 keywordSearch_CallBack(data) { console.log(111,data) var poiArr = data.poiList.pois var resultCount = poiArr.length this.poiArr = poiArr; //左邊要渲染的數據 for (var i = 0; i < resultCount; i++) { this.addmarker(i, poiArr[i]) console.log(poiArr[i]) this.poiArr[i].url = this.poiArr[i].photos? this.poiArr[i].photos[0]? this.poiArr[i].photos[0].url: '': '' } this.mapObj.setFitView() }, //添加marker&infowindow addmarker(i, d) { var lngX = d.location.getLng(); var latY = d.location.getLat(); console.log(lngX,latY) var markerOption = { map: this.mapObj, position: new AMap.LngLat(lngX, latY) }; var mar = new AMap.Marker(markerOption); this.marker.push(new AMap.LngLat(lngX, latY)); var infoWindow = new AMap.InfoWindow({ content: '<h3>' +’當前選中位置:’+ d.name + '</h3>' + this.TipContents(d.name, d.address), size: new AMap.Size(300, 0), autoMove: true, offset: new AMap.Pixel(0, -30) }); console.log() this.windowsArr.push(infoWindow); var _this = this; var aa = (e) => { this.clickType = 2 var obj = mar.getPosition(); this.map = obj //這里保存的地址經緯度 this.address = d.name + d.address //這里保存的是地址名字 infoWindow.open(_this.mapObj, obj); } AMap.event.addListener(mar, 'click', aa) }, TipContents(name, address) { //窗體內容 if ( name == '' || name == 'undefined' || name == null || name == ' undefined' || typeof name == 'undefined' ) { type = '暫無'; } if ( address == '' || address == 'undefined' || address == null || address == ' undefined' || typeof address == 'undefined' ) { address = '暫無'; } var str = `地址:${address}` return str }, openMarkerTipById(pointid, event) { //根據id 打開搜索結果點tip this.clickType = 1 event.currentTarget.style.background = '#CAE1FF'; this.selectedIndex = pointid // this.map = this.marker[pointid] this.map1 = this.poiArr[pointid].location console.log(222,this.mapObj, this.marker[pointid]) console.log(this.marker[pointid],this.poiArr[pointid]) this.address = this.poiArr[pointid].address + this.poiArr[pointid].name this.windowsArr[pointid].open(this.mapObj, this.marker[pointid]) }, onmouseout_MarkerStyle(pointid, event) { //鼠標移開后點樣式恢復 event.currentTarget.style.background = '' }, search() { this.windowsArr = [] this.marker = [] this.mapObj=’’ this.mapInit() this.placeSearch(this.address) } }, };</script>

css部分

<style lang='scss'> #wrap{ width:100%; display: flex; #iCenter { height: 600px; position: relative; display: flex; flex: 1; } #searchWrap{ width:300px; position: relative; height:600px; .searchWrap{position: absolute;width:300px;z-index: 9;display: flex;align-items: center;input{ width:260px; height:24px;}button{ width:36px; height:28px;} } #result {width: 300px;position: absolute;top:30px;height: 570px;z-index: 8;overflow-y: scroll;border-right: 1px solid #ccc; } } .amap_lib_placeSearch { height: 100%; overflow-y: scroll; .poibox {border-bottom: 1px solid #eaeaea;cursor: pointer;padding: 5px 0 5px 10px;position: relative;min-height: 35px;.selected { background-image: url(https://webapi.amap.com/theme/v1.3/markers/n/mark_r.png) !important;}&:hover { background: #f6f6f6;}.poi-img { float: right; margin: 3px 8px 0; width: 90px; height: 56px; overflow: hidden;}.poi-title { margin-left: 25px; font-size: 13px; overflow: hidden;}.poi-info { word-break: break-all; margin: 0 0 0 25px; overflow: hidden; p { color: #999; font-family: Tahoma; line-height: 20px; font-size: 12px; }}.poibox-icon { margin-left: 7px; margin-top: 4px;}.amap_lib_placeSearch_poi { background: url(https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png) no-repeat; height: 31px; width: 19px; cursor: pointer; left: -1px; text-align: center; color: #fff; font: 12px arial, simsun, sans-serif; padding-top: 3px; position: absolute;} } } .btn{ position: fixed; bottom:20px; left:50%; padding:10px; } }</style>

補充知識:vue-amap 高德地圖定位 點擊獲取經緯度和具體地址的使用

官方文檔地址: 點這里!!

vue+高德地圖實現地圖搜索及點擊定位操作

經緯度獲取只要通過點擊事件就可以通過e.lnglat來獲取,然后就是插件Geocoder使用了。在main.js中initAMapApiLoader中寫入:AMap.Geocoder,注意 官方文檔中有提示:

vue+高德地圖實現地圖搜索及點擊定位操作

所以插件中使用的依然是AMap,與導入名無關

vue+高德地圖實現地圖搜索及點擊定位操作

不然會報錯,Geocoder無法使用。

定位文檔 照著文檔寫就行 注意在main.js中注冊AMap.Geolocation插件,

另外使用到地圖的.vue頁面 不能使用scoped對樣式進行局域化。

以上這篇vue+高德地圖實現地圖搜索及點擊定位操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: 高德 地圖
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品一区二区三区四区五区| 国产免费久久| av免费不卡国产观看| 国产毛片久久久| 欧美日韩1区2区3区| 日本国产亚洲| 久久国内精品| 国产日韩高清一区二区三区在线 | 欧美国产亚洲精品| 国产亚洲精aa在线看 | 免播放器亚洲| 亚洲精品婷婷| 亚洲美女91| 青草av.久久免费一区| 日韩高清二区| 国产日韩欧美| 成人影视亚洲图片在线| 国产一区二区三区四区| 精品日产乱码久久久久久仙踪林| 欧美a一区二区| 麻豆一区在线| 日韩免费av| 九一国产精品| 深夜福利一区| 欧美国产免费| se01亚洲视频| 99亚洲视频| 欧美亚洲国产日韩| 国产一区2区| 一级欧洲+日本+国产| 午夜性色一区二区三区免费视频| 国产亚洲精aa在线看| 成人在线超碰| 成人久久一区| 免费看精品久久片| 麻豆视频一区二区| 蜜桃精品在线| 欧美另类综合| 欧美三级第一页| 国产一区二区精品福利地址| 亚洲大片在线| 日韩精品视频一区二区三区| 欧美91在线|欧美| 久久蜜桃av| 日韩在线电影| 成人av三级| 日韩专区欧美专区| 久久av日韩| 欧洲亚洲一区二区三区| 水野朝阳av一区二区三区| 国产精品蜜月aⅴ在线| 国产成人精品亚洲日本在线观看| 日韩专区欧美专区| 精品国产成人| 在线亚洲激情| 免费在线日韩av| 亚洲精品123区| 久久不见久久见中文字幕免费 | 国产高潮在线| 亚洲一区二区三区四区五区午夜| 欧美日韩精品一区二区三区视频 | 99国产精品久久久久久久成人热| 国产麻豆精品| 国产高清一区| 国产情侣久久| 亚洲欧美日韩高清在线| 国产精品蜜月aⅴ在线| 婷婷精品进入| 国产精品分类| 久久要要av| 久久久国产精品网站| 亚洲免费中文| 中文字幕在线免费观看视频| 日韩手机在线| 黄色亚洲精品| 国产v日韩v欧美v| 久久国内精品视频| 日韩亚洲在线| 国产videos久久| 无码日韩精品一区二区免费| 欧美日韩精品一区二区视频| 国产精品v亚洲精品v日韩精品| 日韩午夜av| 日韩欧美午夜| 日韩精品三级| 免费日韩精品中文字幕视频在线| 国产va免费精品观看精品视频| 亚洲一级大片| 日韩精品免费一区二区在线观看| 国产精品久久乐| 视频一区欧美精品| 亚洲成人一区在线观看| 国产精品视频一区二区三区综合| 亚洲一区日本| 欧美日韩在线观看视频小说| 免费在线欧美黄色| 日韩精品一页| 老牛影视一区二区三区| 久久久精品久久久久久96| 国产调教一区二区三区| 视频一区欧美精品| 欧美在线亚洲| 91tv亚洲精品香蕉国产一区| 韩日一区二区| 日韩av黄色在线| 亚洲一区二区三区在线免费| 好看不卡的中文字幕| 亚洲精品在线影院| а√天堂8资源中文在线| 国产精品s色| 欧美一区91| 日本不卡视频在线| 日韩高清不卡一区二区| 日韩一区二区三区精品视频第3页| 精品一区欧美| 2023国产精品久久久精品双| 欧美日韩一二| 国产精品7m凸凹视频分类| 亚洲91久久| 久久精品国产99久久| 秋霞影视一区二区三区| 亚洲h色精品| 欧美国产91| 婷婷综合亚洲| 亚洲精华国产欧美| 中文一区一区三区免费在线观| 玖玖精品视频| 婷婷精品在线| 国产日产一区| 国产精品一区二区三区四区在线观看 | 少妇精品久久久一区二区三区| 欧美久久精品一级c片| 国产一区导航| 国产模特精品视频久久久久| 亚洲国产一区二区三区在线播放 | 成人在线视频中文字幕| 91日韩免费| 国产精品超碰| 蜜桃视频在线观看一区| 99久精品视频在线观看视频| 欧美成人精品三级网站| caoporn视频在线| 中文字幕日本一区二区| 亚洲一区资源| 亚洲风情在线资源| 国产精品一区三区在线观看| 久久一区国产| 国产视频一区欧美| 美女高潮久久久| 亚洲午夜久久| 亚洲一区二区三区四区五区午夜| 国产精品**亚洲精品| 国产精品综合| 欧美搞黄网站| 免费日韩一区二区三区| 久久精品高清| 热久久免费视频| 亚洲精品麻豆| 久久爱www成人| 精品久久在线| 国产69精品久久| 美女毛片一区二区三区四区最新中文字幕亚洲 | 久久国产视频网| 黄色免费成人| 黄色在线网站噜噜噜| 日韩综合精品| 免费一级片91| 91精品蜜臀一区二区三区在线| 欧美日韩在线精品一区二区三区激情综合| 国产欧美日韩精品高清二区综合区| 国产成人精品一区二区三区免费| 国产精品久久| 亚洲第一区色| 国产高清亚洲| 国产亚洲人成a在线v网站| 久久亚洲一区| 91精品蜜臀一区二区三区在线| 精品国产黄a∨片高清在线| 国产一卡不卡| 午夜天堂精品久久久久| 国产免费成人| 蜜桃视频一区二区三区| 国产一区二区精品福利地址| 福利在线免费视频| 国产福利片在线观看| 欧美另类中文字幕| 国产精品一在线观看| 亚洲三级毛片| 日韩**一区毛片| 香蕉久久夜色精品国产| 日韩午夜电影| aa国产精品| 亚洲精品国产嫩草在线观看| 国产欧美精品| 亚洲五月综合| 五月精品视频| 亚洲香蕉久久| 99xxxx成人网| 亚洲精品免费观看| 亚洲ww精品|