Vue 通过调用百度API获取地理位置-经度纬度省份城市
一、首先在百度api注册获得ak密钥

二、新建js文件,我命名为loadBMap.js,里面创建script,代码如下:
/**
* 加载地图
* @param {Function} callback 回调函数名称,回调函数将会挂载到window上,例如:window.initBaiduMapScript,在方法中就能拿到BMap对象
*/
export function loadBMap(callback) {
var script = document.createElement('script')
script.src = 'http://api.map.baidu.com/api?v=2.0&ak=你的AK&callback=' + callback
document.body.appendChild(script)
}
三、在Vue页面中导入js
import { loadBMap } from './loadBMap'
四、在Vue页面中定义一些需要用到的数据
data () {
return {
BMap: null,
geolocation: null, // Geolocation对象实例
positioning: false, // 定位中
positioningInterval: null, // 定位倒计时计时器
countDown: 30, // 倒计时,单位秒
location: null // 位置信息
}
}
四、在mounted中调用创建回调函数,并调用loadMap方法,将回调函数名称传递到loadMap中
mounted() {
const _this = this
window.initBaiduMapScript = () => {
_this.BMap = window.BMap
}
loadBMap('initBaiduMapScript')
}
五、在methods中定义获取地理位置的方法
// 获取地理定位
getLocation() {
const _this = this
_this.geolocation = new _this.BMap.Geolocation()
if (_this.geolocation) {
// 开启SDK辅助定位,仅当使用环境为移动web混合开发,且开启了定位sdk辅助定位功能后生效
_this.geolocation.enableSDKLocation()
// 开始定位
this.positioning = true
// 倒计时
this.positioningInterval = setInterval(() => {
if (this.countDown === 0) {
this.countDown = 30
clearInterval(this.positioningInterval)
} else {
this.countDown--
}
}, 1000)
// 位置选项
const positionOptions = {
enableHighAccuracy: true, // 要求浏览器获取最佳结果
timeout: 30, // 超时时间
maximumAge: 0 // 允许返回指定时间内的缓存结果。如果此值为0,则浏览器将立即获取新定位结果
}
// 获取用户位置信息
_this.geolocation.getCurrentPosition(position => {
_this.resetPositioning()
// 获取定位结果状态码
const statusCode = _this.geolocation.getStatus()
let msg = '由于未知错误而无法检索设备的位置' // 提示消息
let msgType = 'error' // 消息类型
// 判断结果状态码,为0代表获取成功,读取省市、经纬度
switch (statusCode) {
case 0:
msgType = 'success'
msg = '获取地理位置定位请求成功'
if (position) {
// 数据变量定义
let lat = 0.0 // 经度
let lng = 0.0 // 纬度
let province = '未知' // 经度
let city = '未知' // 纬度 // 坐标
if (position.point) {
lat = position.point.lat
lng = position.point.lng
}
// 位置
if (position.address) {
province = position.address.province
city = position.address.city
}
_this.location = {
省份: province,
城市: city,
经度: lat,
纬度: lng
}
} else {
msg = '由于未知错误而无法检索设备的位置'
}
break
case 2:
msg = '由于未知错误而无法检索设备的位置'
break
case 4:
case 5:
msg = '位置服务请求非法'
break
case 6:
msg = '应用程序没有使用位置服务的权限'
break
case 7:
msg = '网络不可用或者无法连接到获取位置信息的卫星'
break
case 8:
msg = '无法在指定的最大超时间隔内检索位置信息'
break
default:
msg = '由于未知错误而无法检索设备的位置'
break
}
_this.$notification[msgType]({
key: NotificationKey,
message: '提示',
description: msg
})
}, positionOptions)
} else {
_this.$notification.error({
key: NotificationKey,
message: '提示',
description: '您的浏览器不支持地理位置服务'
})
}
},
// 重置定位相关数据
resetPositioning() {
this.positioning = false
this.location = null
this.countDown = 30
clearInterval(this.positioningInterval)
}
六、在需要的地方调用getLocation即可,例如:
<a-form-model-item label="地理位置" prop="location">
<span>{{ location }}</span>
<a v-show="!location && !positioning" @click="getLocation">点击获取位置</a>
<a-spin :spinning="positioning" />
<span v-show="positioning">
还需等待
<span class="red">{{ countDown }}</span> 秒
</span>
</a-form-model-item>
效果:
【获取前】

【获取中】

【获取后】

Vue 通过调用百度API获取地理位置-经度纬度省份城市的更多相关文章
- 【转】百度API获取城市名地名(附源码)
在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
服务端java实现根据地址从百度API获取经纬度 代码: package com.pb.baiduapi; import java.io.BufferedReader; import java.io. ...
- 调用百度API返回经纬度
后台调用百度API接口生成: import java.io.BufferedReader; import java.io.IOException;import java.io.InputStreamR ...
- 用百度SDK获取地理位置和天气信息
以下实现通过百度SDK获取地理位置和天气信息,请參考title=android-locsdk/guide/v5-0">百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解 ...
- 调用百度API进行文本纠错
毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Wo ...
- html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...
- 调用ZoomEye API获取信息
最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,json,os模块. 功能:调用ZoomEye API获取信息 import urllib.requ ...
- 【前端】html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...
- PhoneGap Geolocation结合百度地图api获取地理位置api
一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...
随机推荐
- Pandas 复习2
import pandas as pd import numpy as np food_info = pd.read_csv('food_info.csv') 1.处理缺失值(可使用平均数,众数填充) ...
- FPAG_Microblaze_PWM_定时器
由于Xilinx底层库的定时器没有PWM例程,调试过程中费了不少劲.生产PWM需要两个定时器同时工作,一个控制频率,一个控制占空比,位数可通过硬件设置. #include "xtmrctr_ ...
- Python file() 函数
描述 file() 函数用于创建一个 file 对象,它有一个别名叫 open(),更形象一些,它们是内置函数.参数是以字符串的形式传递的.每组词 www.cgewang.com 更多文件操作可参考: ...
- Virtuoso 中 display.drf、techfile.tf、tech.db 之间的关系,以及 Packet 在它们之间的作用
https://www.cnblogs.com/yeungchie/ 一般工艺库下的"技术文件"有 tech.db 和 techfile.tf , Packet 是 display ...
- C/C++编程笔记:流行的数字游戏【2048】,C语言400行源代码分享
游戏介绍 你玩过2048吗?2048是一款流行于各大网页和手机的数字游戏,手机安卓版推出的是<挑战2048>,之后的版本中还加入了双人对战的游戏模式,更加受到玩家的热捧. 2048的游戏规 ...
- 详细记录了python爬取小说《元尊》的整个过程,看了你必会~
学了好几天的渗透测试基础理论,周末了让自己放松一下,最近听说天蚕土豆有一本新小说,叫做<元尊>,学生时代的我可是十分喜欢读天蚕土豆的小说,<斗破苍穹>相信很多小伙伴都看过吧.今 ...
- day13. 迭代器与高阶函数
一.迭代器 """ 能被next调用,并不断返回下一个值的对象,叫做迭代器(对象) 概念: 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果 ...
- tp3.2 新增邮件类
1.新建方法 调用发送邮件,我的目录在/admin下 2.新增邮件方法 类的发送配置功能 文件地址: 网站根目录\项目目录\Admin\Common\ 文件 名 :function.php ...
- IdentityServer4 (3) 授权码模式(Authorization Code)
写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...
- Android Studio--家庭记账本(四)
今天,实现了在数据库中的删除功能,但是无法实现对表单的删除与自动更新.需要重新启动虚拟机重新从数据库中读取数据才可以实现表单的更新.List表单中的remove功能不太会用.