VUE——自動定位+拖拽選址+搜尋選址
地圖載入完成後,進行自動定位到裝置當前所在位置(顯示當前周邊),拖拽地圖進行選擇地址,點選搜尋按鈕,搜尋框內輸入時會提示相關點,通過搜尋結果進行搜尋選擇地址
元件部分:
<template> <div> <button @click="addRadius">增加範圍</button> <button @click="startSearch">搜尋</button> <p>{{address}}</p> <hr> <div class="amap-page-container"注:el-amap-circle只是為了更直觀的看到效果,可以省略。
<style scoped> .amap-page-container { height: 300px; position: relative; } .search-input{ border: 1px solid red; position: absolute; z-index: 5; width: 80%; left: 10%; padding: 5px; } .toolbar{ margin-top: 15px; }</style>js部分:
<script> import {AMapManager} from "vue-amap" let amapManager=new AMapManager(); export default { data() { let vm = this; return { zoom:16, center: [121.329402,31.228667], result:[], address:"", radius:100, toSearch:false, amapManager, map:null, events:{ init(o){ vm.map=o; //方法一 // AMapUI.loadUI(['misc/PositionPicker'], function(PositionPicker) { // var positionPicker = new PositionPicker({ // mode: 'dragMap', // map: o // }); // positionPicker.on('success', function(positionResult){ // vm.result=positionResult.regeocode.pois; // vm.address=positionResult.regeocode.formattedAddress; // vm.center=[positionResult.position.lng,positionResult.position.lat] // }) // positionPicker.start(); // }) } } }; }, watch:{ map:function(){ if(this.map!=null){ this.startDrag(); } } }, methods:{ startDrag(){//方法二 let vm=this; let map=this.amapManager.getMap(); AMapUI.loadUI(['misc/PositionPicker'], function(PositionPicker) { var positionPicker = new PositionPicker({ mode: 'dragMap', map: map }); //定位 let geolocation; map.plugin('AMap.Geolocation', function () { geolocation=new AMap.Geolocation({ showButton: true, //顯示定位按鈕,預設:true showMarker: false, //定位成功後在定位到的位置顯示點標記,預設:true extensions:'all' }) map.addControl(geolocation); geolocation.getCurrentPosition(); AMap.event.addListener(geolocation, 'complete', function(data){ positionPicker.start(); });//返回定位資訊 }) positionPicker.on('success', function(positionResult){ vm.result=positionResult.regeocode.pois; vm.address=positionResult.regeocode.formattedAddress; vm.center=[positionResult.position.lng,positionResult.position.lat] }) positionPicker.on('fail', function(failResult){ console.log(failResult) }) // positionPicker.start(); }) }, addRadius(){ this.radius+=10; }, startSearch() { let vm=this; let map=this.amapManager.getMap(); this.toSearch=true; AMapUI.loadUI(['misc/PoiPicker'], function(PoiPicker) { var poiPicker = new PoiPicker({ input: 'search', //輸入框id }); //監聽poi選中資訊 poiPicker.on('poiPicked', function(poiResult) { //使用者選中的poi點資訊 vm.center=[poiResult.item.location.lng,poiResult.item.location.lat] }); }); }, } };</script>說明:
拖拽選點使用的是UI元件裡面的misc/PositionPicker,new一個positionPicker例項,對拖拽進行配置,可以選擇拖拽地圖還是marker,具體配置請自行參照參考手冊點選開啟連結,此處以拖拽地圖為例,
positionPicker例項有success方法和fail方法,分別對應拖拽選址成功和失敗,返回的引數為拖拽後的地址以及周邊,失敗資訊。定義好後,positionPicker.start(),則可以開始拖拽(若不呼叫開始方法,則無法進行拖拽)
有兩種寫法(JS中已經給註釋)
1,地圖載入完成後,即在init方法中,直接進行定義
2,地圖init完成後 記錄當前map例項,監控map例項,若map初始化完成,則呼叫方法,進行相關操作
此處以第2中為例
監控map例項,當map例項存在時,將中心點定位到當前裝置所在地點,定位成功後啟動拖拽選擇功能
拓展:
若只使用定位功能
可以在el-amap上繫結plugin屬性,
:plugin="plugin"在data中進行定位外掛繫結,配置定位的引數
// plugin: [{ //方法一 // pName: 'Geolocation', // events: { // init(o) { // // o 是高德地圖定位外掛例項 // o.getCurrentPosition((status, result) => { // console.log(status); // console.log(result); // if (result && result.position) { // self.lng = result.position.lng; // self.lat = result.position.lat; // self.center = [self.lng, self.lat]; // self.loaded = true; // self.$nextTick(); // } // }); // } // } // }]搜尋
此處使用的是UI元件裡面的'misc/PoiPicker' new一個PoiPicker例項並繫結搜尋框,選中的搜尋出來的某一條結果,講改結果的經緯路設為中心點,即可實現搜尋選擇地址的效果
效果如下:
此案例的git地址:前往git
相關推薦
VUE——自動定位+拖拽選址+搜尋選址
地圖載入完成後,進行自動定位到裝置當前所在位置(顯示當前周邊),拖拽地圖進行選擇地址,點選搜尋按鈕,搜尋框內輸入時會提示相關點,通過搜尋結果進行搜尋選擇地址元件部分:<template> <div> <button @click="add
高德地圖 自動定位+拖拽選址 +搜尋選址
功能:使用高德地圖實現自動定位,以及客戶拖拽選址和搜尋指定地址的功能條件:引入高德地圖及相關js檔案效果: js: var lat,lng AMapUI.loadUI(['misc/PositionPicker','misc/PoiPicker
vue draggable 火狐拖拽搜尋問題
最近在使用vuedraggable做導航時候,谷歌拖拽是沒問題的,但是在火狐測試時候,拖拽時候是可以成功,但是火狐還是打開了一個新的tab,並且搜尋了,一開始想著是阻止預設行為,但是在@end時間中阻止了預設行為,使用vue的.prevent.stop也是不行, 後來各種搜
vue 自定義拖拽指令
win input app ctrl off title nbsp ini sca <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t
vue-draggable-resizable 拖拽縮放插件
default () fault sel ali call ets bsp tor 安裝: npm install --save vue-draggable-resizable 使用: <template> <div style="height: 5
基於Vue實現可以拖拽排序的樹形表格
專案需要一個可以拖拽排序的樹形表格,github上搜了一下,併為找到,大部分都不支援拖拽,所以自己實現了一個簡單的元件,已開源 原始碼在這裡,併發布到npm上,如果有類似需求可以試一下,chrome上沒有任何問題 效果圖如下: drag-tree-table 使用方式
基於Vue實現可以拖拽的樹形表格(原創)
因業務需求,需要一個樹形表格,並且支援拖拽排序,任意未知插入,github搜了下,真不到合適的,大部分樹形表格都沒有拖拽功能,所以決定自己實現一個。這裡分享一下實現過程,專案原始碼請看github,外掛已打包封裝好,釋出到npm上 本博文會分為兩部分,第一部分為使用方式,第二部分為實現方式 安裝方式
vue實現div拖拽互換位置
template模板 <transition-group tag="div" class="container"> <div class="item" v-for="(item,index) in items" :key="item.key" :style="{ba
解決VUE自定義拖拽指令時 onmouseup 與 click事件衝突
功能描述: 如圖,右側懸浮選單按鈕,只支援上下方向拖動,點選時展開或關閉選單。 BUG說明: 滑鼠上下方向拖拽,如果鬆開時滑鼠位於懸浮按鈕上會預設執行click事件,經驗證,click事件與mouse事件的執行順序為onmousedown =》onmouseup =》on
vue模塊拖拽實現示例代碼
off lan 現在 簡單 comm etl nbsp xhtml www 正巧在之前面試中遇到問實現拖拽效果 當時面試的時候簡單回答了實現的方式與邏輯。 現在閑來無事,把這個東西實現了一下。 原理很簡單,寫的很方便。 數據驅動,建立一個數組,數組初始長度為1 拖
vue中實現百度地圖拖拽地圖定位功能
.com 元素 偏移量 locals 進行 函數 nco 查看 page 效果如果所示,拖動地圖。中間圖標不動,並且自動獲取地圖當前中心點的經緯度。然後就可以用經緯度做其他的操作了。。。首先查看了百度地圖的api。能實現這個功能最貼近的就是marker。marker
Vue實現浮動按鈕元件 - 頁面滾動時自動隱藏 - 可拖拽
效果圖 說明 本文可能有點囉嗦了... 元件難點 如何監聽滾動完成事件 移動端如何監聽拖拽事件 前置條件 為了充分發揮vue的特性,我們不應該通過ref來直接操作dom,而是應該通過修改資料項從而讓vue自動更新dom。因此,我們這樣編寫template。 <templa
Android 自定義可拖拽View,界面渲染刷新後不會自動回到起始位置
AD att starty attrs floating blog body .get dmi 以自定義ImageView為例: /** * 可拖拽ImageView * Created by admin on 2017/2/21. */ public class
Vue 組件總結 (一、拖拽組件 Vue-draggable)
Vue-draggable vue 一、vue-draggable 安裝使用npm地址: https://www.npmjs.com/package/vuedraggable 二、表格拖拽使用, 舉例: <table class="table table-co
vue的移動app項目中,自定義拖拽指令的問題
喜歡 end direct 需要 不支持 rect 兼容 left dir 使用vue的都知道vue有一個自定義指令,我比較喜歡的就是拖拽的自定義指令,感覺挺方便的! //組件內的拖拽指令 directives: { //組建內自定義指令 drag: {
JavaScript--百度地圖定位,可拖拽
event 控件 int pla location view api 事件 ont <html> <head> <meta http-equiv="Content-Type" content="text/html; char
vue視頻: 自定義指令 && 拖拽 && 自定義鍵盤信息
dfa 數據 top sta option box -s con v-for v-textv-forv-html 指令: 擴展html語法 自定義指令:1. 自定義屬性指令: Vue.directive(指令名稱,function(參數){ this.el
Vue拖拽Draggable外掛
Draggable為基於Sortable.js的vue元件,用以實現拖拽功能。 具體說明,請參考:https://www.npmjs.com/package/vuedraggable npm官方演示: vuedraggable特性: 支援觸控裝置 支援拖拽和選擇
vue下使用echarts折線圖及其橫座標拖拽功能
vue頁面中使用折線圖,並且有時間段篩選。因此就需要用到橫座標的拖拽功能。 介面效果如下: 現在來看這個效果的實現程式碼: drawLine() { let that = this, lineDate = [], dispatchCount = [
vue下使用echarts折線圖及其橫坐標拖拽功能
旋轉 tip pos 需要 頁面 技術 too ger draw vue頁面中使用折線圖,並且有時間段篩選。因此就需要用到橫坐標的拖拽功能。 界面效果如下: 現在來看這個效果的實現代碼: drawLine() { let that = this,