国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue-使用Baidu(百度地圖)實現(xiàn)輸入位置獲取定位經(jīng)緯度

這篇具有很好參考價值的文章主要介紹了vue-使用Baidu(百度地圖)實現(xiàn)輸入位置獲取定位經(jīng)緯度。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

  • 開發(fā)中我們需要地圖定位,就是用戶輸入位置,自動定位獲取經(jīng)緯度,傳遞給后端存在數(shù)據(jù)庫

  • 找了一圈發(fā)現(xiàn)千篇一律,最后也是使用element的搜索輸入款配合原生百度地圖實現(xiàn)這個功能

  • 點擊地圖需要逆地址解析,輸入地址時調(diào)用百度地圖渲染在下拉框,選擇傳輸?shù)刂?,?jīng)緯度

  • 一般是在添加時加載地圖,可能會因為網(wǎng)絡原因加載地圖實例失敗,所以需要一直加載到實例

  • 在項目中工具文件形式引入,相當于創(chuàng)建了一個<script>標簽引入地圖資源,掛在在全局上

效果圖

獲取經(jīng)緯度

代碼實現(xiàn)-直接復制需要申請AK-主頁文章有

1.在工具文件下建立utils/loadBMap.js-內(nèi)容如下

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)
 ?  }
 ?  const script = document.createElement('script')
 ?  script.type = 'text/javascript'
 ?  script.src =
 ? ?  'https://api.map.baidu.com/api?v=3.0&ak=' +
 ? ?  ak +
 ? ?  '&callback=onBMapCallback'
 ?  script.onerror = reject
 ?  document.head.appendChild(script)
  })
}
?

2.在頁面中使用-注意沒有寫AK-需要換

<template>
  <div class="conter">
 ?  <el-button type="primary" size="small" @click="addbaidu"
 ? ?  >添加信息</el-button
 ?  >
 ?  <el-dialog title="地圖定位" :visible.sync="dialogVisible" @close="close" width="30%">
 ? ?  <el-form ref="form" :model="form" label-width="100px">
 ? ? ?  <el-form-item label="歸屬地址:" prop="building">
 ? ? ? ?  <el-autocomplete
 ? ? ? ? ?  style="width: 100%"
 ? ? ? ? ?  v-model="form.building"
 ? ? ? ? ?  :fetch-suggestions="querySearchAsync"
 ? ? ? ? ?  :trigger-on-focus="false"
 ? ? ? ? ?  placeholder="請先搜索地址"
 ? ? ? ? ?  clearable
 ? ? ? ? ?  @select="handleSelect"
 ? ? ? ?  >
 ? ? ? ? ?  <template slot-scope="{ item }">
 ? ? ? ? ? ?  <i class="el-icon-search fl mgr10" />
 ? ? ? ? ? ?  <div style="overflow: hidden">
 ? ? ? ? ? ? ?  <div class="title">{{ item.title }}</div>
 ? ? ? ? ? ? ?  <span class="address ellipsis">{{ item.address }}</span>
 ? ? ? ? ? ?  </div>
 ? ? ? ? ?  </template>
 ? ? ? ?  </el-autocomplete>
 ? ? ?  </el-form-item>
 ? ? ?  <el-form-item label="地圖定位:">
 ? ? ? ?  <div id="map-container" style="width: 100%; height: 300px" />
 ? ? ?  </el-form-item>
 ? ? ?  <el-form-item label="經(jīng)度:">
 ? ? ? ?  <el-input v-model="form.longitude" autocomplete="off"></el-input>
 ? ? ?  </el-form-item>
 ? ? ?  <el-form-item label="維度:">
 ? ? ? ?  <el-input v-model="form.latitude" autocomplete="off"></el-input>
 ? ? ?  </el-form-item>
 ? ?  </el-form>
 ? ?  <span slot="footer" class="dialog-footer">
 ? ? ?  <el-button @click="dialogVisible = false">取 消</el-button>
 ? ? ?  <el-button type="primary" @click="dialogVisible = false"
 ? ? ? ?  >確 定</el-button
 ? ? ?  >
 ? ?  </span>
 ?  </el-dialog>
  </div>
</template>
?
<script>
// 引入第三方工具包
import loadBMap from '@/utils/loadBMap.js'
export default {
  name: 'Baidu',
  data() {
 ?  return {
 ? ?  // 地圖實例
 ? ?  map: null,
 ? ?  // Marker實例
 ? ?  mk: null,
 ? ?  // 定時器
 ? ?  initMapeq: null,
 ? ?  // 表單開關
 ? ?  dialogVisible: false,
 ? ?  // 表單
 ? ?  form: {}
 ?  }
  },
  created() {},
  mounted() {
 ?  // 頁面加載完之后,加載百度地圖
 ?  // 加載引入BMap
 ?  loadBMap('你的AK')-需要申請主頁文章有
  },
  methods: {
 ?  close(){
 ? ? this.form = {}
 ?  },
 ?  // 添加開關
 ?  addbaidu() {
 ? ?  // 打開表單
 ? ?  this.dialogVisible = true
 ? ?  // 加載地圖
 ? ?  this.getbaidu()
 ?  },
 ?  // 加載地圖方法
 ?  getbaidu() {
 ? ?  this.showDialog = true
 ? ?  this.initMapeq = setInterval(() => {
 ? ? ?  if (this.initMap()) {
 ? ? ? ?  clearInterval(this.initMapeq)
 ? ? ?  }
 ? ?  })
 ?  },
 ?  // 百度地圖封裝方法
 ?  // 初始化地圖
 ?  initMap() {
 ? ?  try {
 ? ? ?  var that = this
 ? ? ?  // 1、掛載地圖
 ? ? ?  // 創(chuàng)建地圖實例
 ? ? ?  this.map = new BMap.Map('map-container')
 ? ? ?  // 設置中心經(jīng)緯度  這里我們使用BMapGL命名空間下的Point類來創(chuàng)建一個坐標點。Point類描述了一個地理坐標點,其中120.872845表示經(jīng)度,32.021089表示緯度。(為南通濠河風景區(qū)坐標) 作者:星銀色飛行船
 ? ? ?  var point = new BMap.Point(
 ? ? ? ?  this.form.longitude || 116.41338729034514,
 ? ? ? ?  this.form.latitude || 39.910923647957596
 ? ? ?  )
 ? ? ?  // 3.在創(chuàng)建地圖實例后,我們需要對其進行初始化,BMapGL.Map.centerAndZoom()方法要求設置中心點坐標和地圖級別。 地圖必須經(jīng)過初始化才可以執(zhí)行其他操作
 ? ? ?  this.map.centerAndZoom(point, 14)
 ? ? ?  // 滾輪縮放
 ? ? ?  this.map.enableScrollWheelZoom()
 ? ? ?  // 3、設置圖像標注并綁定拖拽標注結(jié)束后事件
 ? ? ?  this.mk = new BMap.Marker(point, { enableDragging: true })
 ? ? ?  this.map.addOverlay(this.mk)
 ? ?  } catch (err) {
 ? ? ?  return false
 ? ?  }
 ? ?  // 4、添加(右上角)平移縮放控件
 ? ?  this.map.addControl(
 ? ? ?  new BMap.NavigationControl({
 ? ? ? ?  anchor: BMAP_ANCHOR_TOP_RIGHT,
 ? ? ? ?  type: BMAP_NAVIGATION_CONTROL_SMALL
 ? ? ?  })
 ? ?  )
 ? ?  // 7、綁定點擊地圖任意點事件
 ? ?  this.map.addEventListener('click', function (e) {
 ? ? ?  console.log('點擊了', e)
 ? ? ?  that.getAddrByPoint(e.point)
 ? ?  })
 ? ?  return true
 ?  },
 ?  // 2、逆地址解析函數(shù) 根據(jù)坐標點獲取詳細地址  point ? 百度地圖坐標點,必傳
 ?  getAddrByPoint(point) {
 ? ?  var that = this
 ? ?  var geco = new BMap.Geocoder()
 ? ?  geco.getLocation(point, function (res) {
 ? ? ?  // console.log(res);
 ? ? ?  that.mk.setPosition(point)
 ? ? ?  that.map.panTo(point)
 ? ? ?  that.form.building = res.address
 ? ? ?  that.form.longitude = res.point.lng
 ? ? ?  that.form.latitude = res.point.lat
 ? ?  })
 ?  },
 ?  // 8-1、地址搜索
 ?  querySearchAsync(str, cb) {
 ? ?  // 根據(jù)狀態(tài)碼
 ? ?  var options = {
 ? ? ?  onSearchComplete: function (res) {
 ? ? ? ?  var s = []
 ? ? ? ?  if (local.getStatus() == BMAP_STATUS_SUCCESS) {
 ? ? ? ? ?  for (var i = 0; i < res.getCurrentNumPois(); i++) {
 ? ? ? ? ? ?  s.push(res.getPoi(i))
 ? ? ? ? ?  }
 ? ? ? ? ?  cb(s)
 ? ? ? ?  } else {
 ? ? ? ? ?  cb(s)
 ? ? ? ?  }
 ? ? ?  }
 ? ?  }
 ? ?  var local = new BMap.LocalSearch(this.map, options)
 ? ?  local.search(str)
 ?  },
 ?  // 8-2、選擇地址
 ?  handleSelect(item) {
 ? ?  this.form.building = item.address + item.title
 ? ?  console.log(item);
 ? ?  this.form.longitude = item.point.lng
 ? ?  this.form.latitude = item.point.lat
 ? ?  console.log('lng', item.point.lng)
 ? ?  console.log('lat', item.point.lat)
 ? ?  this.map.clearOverlays()
 ? ?  this.mk = new BMap.Marker(item.point)
 ? ?  this.map.addOverlay(this.mk)
 ? ?  this.map.panTo(item.point)
 ?  }
  }
}
</script>
?
<style lang="scss" scoped>
.conter {
  // 去除百度地圖的圖標
  ::v-deep .anchorBL {
 ?  display: none !important;
  }
}
</style>

總結(jié):

經(jīng)過這一趟流程下來相信你也對 vue-使用Baidu(百度地圖)實現(xiàn)輸入位置獲取定位經(jīng)緯度 有了初步的深刻印象,但在實際開發(fā)中我 們遇到的情況肯定是不一樣的,所以我們要理解它的原理,萬變不離其宗。加油,打工人!

什么不足的地方請大家指出謝謝 -- 風過無痕文章來源地址http://www.zghlxwxcb.cn/news/detail-602173.html

到了這里,關于vue-使用Baidu(百度地圖)實現(xiàn)輸入位置獲取定位經(jīng)緯度的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • (2023進階版)vue+h5 通過高德地圖(原生) 獲取當前位置定位

    (2023進階版)vue+h5 通過高德地圖(原生) 獲取當前位置定位

    前言:因為也是用的上一個版本的代碼,為了描述清楚所以就直接復制文章來更改了,這一版更加完善簡潔,高德地圖精確度也更高 (2021年寫過的一版上線了挺長時間,2023年突然被應用市場下架,說流程走不通,就卡在獲取定位失敗。改了之后已上線運行 經(jīng)抓包發(fā)現(xiàn),在 本

    2024年02月11日
    瀏覽(20)
  • uniapp - [安卓|蘋果]實現(xiàn)App端引入高德地圖,詳細獲取當前用戶手機定位、兩個地點的路線規(guī)劃及相關示例代碼,uniapp安卓Android平臺軟件下使用高德地圖,獲取當前位置信息及規(guī)劃路線

    uniapp - [安卓|蘋果]實現(xiàn)App端引入高德地圖,詳細獲取當前用戶手機定位、兩個地點的路線規(guī)劃及相關示例代碼,uniapp安卓Android平臺軟件下使用高德地圖,獲取當前位置信息及規(guī)劃路線

    在uniapp安卓app端 | 蘋果app端開發(fā)中,詳細完成APP端引入使用高德地圖插件,提供可直接復制的示例,例如獲取當前定位及取到當前城市位置信息,規(guī)劃兩個位置的路線(規(guī)劃城市2個點的路線軌跡及在地圖上顯示)等示例。 新手跟著教程一步步來,輕松實現(xiàn)此功能。 首先,

    2024年02月22日
    瀏覽(196)
  • vue獲取+設置光標位置 光標定位 選擇輸入框文本

    版本:vue2、vant2 在vue是用ref、 r e f s 獲取 d o m 的,在 v a n t 框架里 v a n ? f i e l d 是輸入框組件,它不支持直接設置光標的方法 s e t S e l e c t i o n R a n g e ( ) ,所以通過 t h i s . refs獲取dom的,在vant框架里van-field是輸入框組件,它不支持直接設置光標的方法setSelectionRange(),所

    2024年02月16日
    瀏覽(19)
  • vue中使用百度地圖

    3.在頁面使用 4.百度地圖初始化函數(shù)及批量生成自定義圖標點 5.需求1:切換中心點 6.需求2:鼠標滑過自定義圖標改變 需求3:鼠標滑過展示信息窗口

    2024年02月14日
    瀏覽(34)
  • vue 使用百度地圖記錄

    vue 使用百度地圖記錄

    參考文檔 https://lbsyun.baidu.com/index.php?title=jspopular3.0/guide/infowindow https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html#a0b0 參考鏈接:https://api.map.baidu.com/library/MarkerClusterer/1.2/docs/symbols/BMapLib.MarkerClusterer.html 下載這個js

    2024年02月13日
    瀏覽(19)
  • vue3使用高德地圖實現(xiàn)點擊獲取經(jīng)緯度以及搜索功能

    vue3使用高德地圖實現(xiàn)點擊獲取經(jīng)緯度以及搜索功能

    ?話不多說直接上干活 在此之前你需要有高德地圖的 key,這個自己去申請即可 1,首先需要在終端安裝 2,準備一個容器 3,在需要使用的頁面引入剛才安裝的 4, 5,綁定input框 最后附上css代碼 ???????這個時候就已經(jīng)可以了

    2024年02月12日
    瀏覽(25)
  • uniapp微信小程序獲取當前位置信息、經(jīng)緯度轉(zhuǎn)換、導航地圖實現(xiàn)

    uniapp微信小程序獲取當前位置信息、經(jīng)緯度轉(zhuǎn)換、導航地圖實現(xiàn)

    1、調(diào)用接口,官網(wǎng)文檔是這樣寫的 2、將經(jīng)緯度轉(zhuǎn)化為位置信息 需要開通騰訊位置服務,開發(fā)者每天有一萬次的免費轉(zhuǎn)化次數(shù)。開通地址 ?記住當前申請的key值,然后下載微信小程序JavaScriptSDK 然后安全域名設置,在小程序管理后臺?- 開發(fā) - 開發(fā)管理 - 開發(fā)設置 - “服務器域

    2024年02月11日
    瀏覽(93)
  • vue3使用百度地圖(詳)

    vue3使用百度地圖(詳)

    提示:該博客vue采用vue3,使用百度地圖通過組件 vue-baidu-map-3x : 組件官網(wǎng):https://map.heifahaizei.com/doc/baidu-map.html 下面會從頭開始介紹如何使用百度地圖以及常用組件功能(附帶遇到的問題和解決方案) 步驟:1. 進入百度地圖開放平臺 | 百度地圖API SDK | 地圖開發(fā)?2.打開頂部控制

    2024年02月06日
    瀏覽(19)
  • vue項目中使用百度地圖(一)

    vue+百度地圖的基礎使用。 首先,第一步申請key,保存好這個密鑰。 鏈接:jspopular | 百度地圖API SDK (baidu.com) 使用百度地圖有兩種方式:1.javaScript API? ? 2.直接引用組件。 以2.0版本為例。 方法1:百度地圖javaScript API 引入方式有兩種。 方法1:index.html中引用 在想要展示地圖的

    2024年02月12日
    瀏覽(25)
  • vue3 中使用百度地圖

    vue3 中使用百度地圖

    最近一個項目要用到地圖,因為微信小程序用的也是百度地圖,所以想著網(wǎng)頁端也用百度地圖,在網(wǎng)上查了很多方法,包括引入百度地圖第三方庫,還是有問題,發(fā)現(xiàn)最簡單的方法就是在index.html中引入script,然后直接在相關頁面肝就完事。 在百度開發(fā)者平臺上面申請,其他

    2023年04月17日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包