vue开发微信公众号--地图
在最近开发的微信公众号中,要实现一个打卡功能:

由于个人感觉微信SDK里面的地图不太好用,所以使用了腾讯地图。
在项目中引入腾讯地图
1,需要登录腾讯地图网站,注册一个账户,获得一个key。
2,然后找到项目根目录下面的index.html,引入需要使用到的js
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>
3,项目根目录--> src -->service文件夹下新建parking.js(文件名称和路径可以自定义,只需要在使用时能找到就可以了)
parking.js(文件里的key填自己申请的就可以了)
export function TMap() {
return new Promise(function(resolve, reject) {
window.init = function() {
resolve(qq)
}
var script = document.createElement('script')
script.type = 'text/javascript'
script.src = 'https://map.qq.com/api/js?v=2.exp&callback=init&key=SI5BZ-RTZRQ-2YD52-GAIRP-Z2CBK-7SFIC'
script.onerror = reject
document.head.appendChild(script)
})
}
使用地图
1,引入parking.js

2,展示地图的容器

3,获取当前位置,并展示以当前位置为中心的地图(注释位置依旧填写自己注册的key)
先贴代码
getMyLocation() {
var geolocation = new qq.maps.Geolocation("SI5BZ-RTZRQ-2YD52-GAIRP-Z2CBK-7SFIC", "打卡");
geolocation.getIpLocation(this.showPosition, this.showErr);
},
showPosition(position) {
console.warn(position);
this.latitude = position.lat;
this.longitude = position.lng;
this.city = position.city;
this.mapTX();
},
showErr() {
Toast({
message: '定位失败,请稍后重试!',
position:'center',
});
// this.$router.back(-1);
this.getMyLocation();//定位失败再请求定位,测试使用
},
mapTX() {
let that = this;
// 根据地理位置坐标,展示地图
TMap().then(qq => {
var map = new qq.maps.Map(document.getElementById('container'), {
//这里经纬度代表进入地图显示的中心区域
center: new qq.maps.LatLng(that.latitude,that.longitude),
zoom: 15
});
var marker = new qq.maps.Marker({
map : map,
position : new qq.maps.LatLng(that.latitude,that.longitude),
});
// 获取当前经纬度对应的地址
var getAdd = new qq.maps.Geocoder({
complete : function(result){
console.log(result);
that.address = result.detail.address;
}
});
var latLng = new qq.maps.LatLng(that.latitude, that.longitude);
getAdd.getAddress(latLng);
//绑定单击事件添加参数
qq.maps.event.addListener(map, 'click', function(event) {})
})
},

在showPosition(position)这个方法里面就会有位置信息,包括经纬度和地址。

然后根据这里的经纬度就可以调用mapTX()来绘制地图了,但是因为我们需要展示当前定位的位置,而上面打印的并不精确,所以还需要根据获取到当前经纬度对应的详细地址:

只要获取到了经纬度和详细地址,我们就可以进行打卡了。
点击事件
在地图中是可以添加点击事件的,但是由于这里不需要,所以上面没有写。关于点击事件,主要就是获取点击位置的经纬度就可以继续后续的操作。

打印上面代码中点击事件的event

也就是,我们是可以通过event.latLng.getLat()和event.latLng.getLng()获取到经纬度的,如果还需要获取点击的位置,再调用上面getAdd.getAddress(latLng)方法,传入点击获取的经纬度就可以了。

vue开发微信公众号--地图的更多相关文章
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- Vue开发微信公众号默认背景为灰色
最近公司有一个项目,使用Vue开发微信公众号,开发过程遇到一个问题,即设计图的整体背景是白色的,但是公众号里默认的背景是浅灰色,如果某个页面高度没能占满一屏,就会露出浅灰色的默认背景,会显得很不协调. ...
- vue开发微信公众号--开发准备
由于工作项目的原因,需要使用vue开发微信公众号,但是这种微信公众号更多是将APP套了一个微信的壳子,除了前面的授权和微信有关系以外,其他的都和微信没多大的关系了,特此记录 开发流程 首先需要在电脑上 ...
- 使用vue开发微信公众号,解决微信缓存
1.页面加入标红的代码,让页面不缓存 <!DOCTYPE html> <html manifest="IGNORE.manifest"> <head& ...
- vue+node.js+webpack开发微信公众号功能填坑——v -for循环
页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...
- vue+node.js+webpack开发微信公众号功能填坑——组件按需引入
初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...
- vux+vuex+vue+Es6开发微信公众号的坑
初次开发微信公众号遇到很多问题,可能是基础不怎么牢靠,最近几天一直在看vue的东西,现在就来慢慢介绍vux和vue这个骚东西的用法: 细看文档一步步来, npm install vux --save ...
- Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装
在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...
- 小机器人自动回复(python,可扩展开发微信公众号的小机器人)
api来之图灵机器人.我们都知道微信公众号可以有自动回复,我们先用python脚本编写一个简单的自动回复的脚本,利用图灵机器人的api. http://www.tuling123.com/help/h ...
随机推荐
- vue对组件以数组方式赋值的问题
当从后台直接调接口返回数据 直接将数组array赋值给定义的变量,会导致组件无法更改其它值,例如多选框,多选下拉框,会导致无法选中其它的值,也无法取消当前已赋值的选中项 data() { return ...
- 如何获取url里面的参数
想必大家经常会遇到这样的问题吧,每次获取url参数的时候就一阵头疼,那现在我就教大家一个简单的方法,将url的参数转换成一个对象,用的时候直接用对象点出来就好了.不多说,直接上代码 function ...
- HTML--JS 定时刷新、时钟、倒计时
<html> <head> <title>定时刷新时间</title> <script language="JavaScript&quo ...
- 图解Http阅读笔记(二)
简单的HTTP协议 HTTP是一种不保存状态,即无状态(stateless)协议.HTTP 协议自身不对请求和响应之间的通信状态进行保存.也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不 ...
- idea 激活步骤
如果你的idea是已经激活过,但是到期了,点击help-register 删除之前的license server(不是通过注册服务激活的,就不用管) 激活步骤如下: 1.修改hosts文件,把 0.0 ...
- (Vue)移动端点击输入框,弹出键盘,底部被顶起问题
(Vue)移动端点击输入框,弹出键盘,底部被顶起问题:https://www.jianshu.com/p/210fbc846544 问题描述:Vue开发中,当我们相对于父视图的底部布局子控件时,需要用 ...
- ubuntu18.04 搭建scrapy环境(连环踩坑+解决办法)
---恢复内容开始--- 预期需求: 打算搭建scrapy环境,基于python3.x的 环境描述: ubuntu18.04自带了python3.6,打算在虚拟环境vlenv中跑scrapy,装好虚拟 ...
- Topcoder SRM653div2
A . 250 Problem Statement Some people are sitting in a row. Each person came here from some cou ...
- 故事版(storyBoard)-lllegal configuration connection cannot have a prototype objct as
今天下午做项目的时候.居然出了一个太不是问题的问题了,这个错误太低级了. lllegal configuration connection 'flagImg' cannot have a protot ...
- 记录混合APP开发遇到的坑!!
1.在IOS中给body绑定click事件会失效 2.在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是 ...