

微信小程序地图如何显示附近厕所WC步行路线
source link: https://segmentfault.com/a/1190000040576099
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

第一次使用腾讯位置服务也算是挺早的,当时是在web端使用。后来,个人慢慢接触到小程序,有一次的需求是能够展示附近的各类店铺,方便自己快速定位周围有什么好吃好逛的地方。再后来每次到一个地方旅游,我们必不可少的一个需求就是需要上WC,当时就在想如何通过一个地图来实现快速定位周边WC的位置以及步行路线,现在好了,有腾讯位置服务功能可以直接在小程序上面直接使用,借助巨人的力量可以好好发挥去实现需求功能了。
因此,写这篇文章,也是希望能够总结对接腾讯位置服务功能步骤和知识点,方便开发同行快速上手和使用。
申请Key
创建用于自己某一业务或某一场景的Key密钥,拥有这把钥匙,就可以开始地图功能体验啦!直接微信扫码授权登录即可,腾讯列表功能使用微信扫码登录方便好多,省去了古老需要密码登录的好方式。
后台点击菜单:key与配额 ->key管理,具体开发者密钥申请信息填写如下
小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com
点击官网的开发文档中的微信小程序JavaScript SDK进行下载
// 引入SDK核心类,js文件根据自己业务,位置可自行放置 var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); var qqmapsdk; Page({ data:{ longitude:'113.390451', latitude:'23.048914' }, onLoad: function () { // 实例化API核心类 qqmapsdk = new QQMapWX({ key: 'xxxx-xxxx,你自己申请到的key' }); }, onShow: function () { // 调用接口 qqmapsdk.search({ keyword: '广州大学城', success: function (res) { //console.log(res); }, fail: function (res) { //console.log(res); }, complete: function (res) { console.log(res); } }); } })
使用地图map组件,具体参数可登录微信官方文档进行查看
温馨提示:小程序界面默认顶部是白色背景固定高度的标题栏,如果需要隐藏顶部标题栏的方法,那么需要在app.json配置里的window里加"navigationStyle": "custom",
默认效果图
地图组件参数什么也没设置的情况下,默认如下效果图
view代码
<view class='view'> <map longitude="{{longitude}}" latitude="{{latitude}}"></map> </view>
给默认坐标加个标注,标注可以是数组,坐标点数组值,这样在地图的效果就是多个标注点
marker:标记点用于在地图上显示标记的位置
关键代码:markers:[{longitude:'113.390451',latitude:'23.048914'}]
多个标注:markers:[{longitude:'113.390451',latitude:'23.048914'},{longitude:'113.390451',latitude:'23.048914'}]
- bindmarkertap:点击标记点时触发
- bindlabeltap:点击标记点label时触发
- bindcallouttap:点击标记点对应的气泡时触发
默认标注效果
// 引入SDK核心类,js文件根据自己业务,位置可自行放置 var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); var qqmapsdk; Page({ data:{ longitude:'113.390451', latitude:'23.048914', markers:[{longitude:'113.390451',latitude:'23.048914'}] }, onLoad: function () { // 实例化API核心类 qqmapsdk = new QQMapWX({ key: 'xxxx-xxxx,你自己申请到的key' }); }, onShow: function () { // 调用接口 qqmapsdk.search({ keyword: '广州大学城', success: function (res) { //console.log(res); }, fail: function (res) { //console.log(res); }, complete: function (res) { console.log(res); } }); } })
view代码
<view class='view'> <map longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}"></map> </view>
标注显示文本
js代码效果
//关键代码 //markers属性下还有属性成员-{label:{content:'广州番禺大学城'} data:{ markers:[{label:{content:'广州番禺大学城'},longitude:'113.390451',latitude:'23.048914'}] },
WC路线规划
下面的还有做样式设置,比如:箭头、和线路颜色,以及起点和终点的文本显示等等,纯属默认参数
// 引入SDK核心类,js文件根据自己业务,位置可自行放置 var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); var qqmapsdk; Page({ data:{ longitude:'113.390451', latitude:'23.048914', markers:[{label:{content:'广州番禺大学城'},longitude:'113.390451',latitude:'23.048914'}] }, onLoad: function () { // 实例化API核心类 qqmapsdk = new QQMapWX({ key: 'xxxx-xxxx,你自己申请到的key' }); }, onShow: function () { // 调用接口 qqmapsdk.search({ keyword: 'GoGo厕所', success: function (res) { //console.log(res); }, fail: function (res) { //console.log(res); }, complete: function (res) { console.log(res); } }); }, //触发表单提交事件,调用接口 formSubmit(e) { //起点坐标:23.048914,113.390451 //终点坐标:23.061793,113.392056 //23.061793,113.392056 //23.063073,113.391762 var _this = this; //调用距离计算接口 qqmapsdk.direction({ mode: 'driving',//可选值:'driving'(驾车)、'walking'(步行)、'bicycling'(骑行),不填默认:'driving',可不填 //from参数不填默认当前地址 from: e.detail.value.start, to: e.detail.value.dest, success: function (res) { console.log(res); var ret = res; var coors = ret.result.routes[0].polyline, pl = []; //坐标解压(返回的点串坐标,通过前向差分进行压缩) var kr = 1000000; for (var i = 2; i < coors.length; i++) { coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr; } //将解压后的坐标放入点串数组pl中 for (var i = 0; i < coors.length; i += 2) { pl.push({ latitude: coors[i], longitude: coors[i + 1] }) } console.log(pl) //设置polyline属性,将路线显示出来,将解压坐标第一个数据作为起点 _this.setData({ latitude:pl[0].latitude, longitude:pl[0].longitude, polyline: [{ points: pl, color: '#FF0000DD', width: 4 }] }) }, fail: function (error) { console.log(error); }, complete: function (res) { console.log(res); } }); } })
view代码
<!--地图容器--> <map id="myMap" style="width: 100%; height: 300px;" longitude="{{longitude}}" latitude="{{latitude}}" scale='16' polyline="{{polyline}}" show-location > </map> <form bindsubmit="formSubmit"> <!--输入起点和目的地经纬度坐标,格式为string格式--> <!--起点输入框,同终点,不填默认当前位置--> <label>起点坐标:<input style="border:1px solid #000;" name="start"></input></label> <!--终点输入框,例:39.984060,116.307520--> <label>终点坐标:<input style="border:1px solid #000;" name="dest"></input></label> <!--提交表单数据--> <button form-type="submit">路线规划</button> </form>
开启个性化腾讯地图
微信扫码绑定,微信会判断当前小程序是否注册腾讯位置服务,如果提示未注册,那么可以输入已注册的账号,一般是手机号码登录,完成小程序和腾讯位置服务账号的绑定。
有些插件还要另外申请appid
原文作者:小5聊
原文链接:https://blog.csdn.net/lmy_520...
Recommend
-
49
附近厕所 - 出门在外,找不到厕所怎么办?附近厕所快速带你找到附近的厕所 - NEXT
-
79
来源:把科学带回家假设你结识了一个外国友人小白,她打算暑假过来与你见见面,顺便一起游览一下上海著名的外滩,那么她大概会打开谷歌地图,预先看一下外滩长什么样,有什么景点可以玩。如果小白使用的是街景地图,看起来很正常——但是,小白想看一看在建筑
-
13
世界厕所组织曾发布一组统计数据,每人每年大约要上 2500 次厕所,人一生中平均有 3 年在厕所度过。 如此漫长的时间都是在方便吗,答案显然是否定的,我和身边的朋友聊了一下,大家的答案可谓是五花八门、尽显神通,有说是去抽根...
-
7
Apple Pay终于要支持支付宝了?微信表示哭晕在厕所 评论(1) ...
-
8
相信微信附近的人的功能大家都应该用过 我可以很随意的通过我自己的定位能看到我附近的人,并且能看到那个人距离我的距离,大家...
-
6
一个人带异性娃如何上厕所? 楼主:十年1K
-
7
越来越多的用户进入了微信灰测名单,这意味着他们看到的微信可能有两个点和我们不大一样。一是视频号直播有了一个独立入口,二是「附近的人」已经从发现页面消失了。 前不久视频号直播拥有了独立的入口,我们在灰测版本中发现「附近」入口中最大的改变就...
-
4
Mapuino - 一个硬件极客风的 WEB 访客地图显示摆件 Post:2021-09-27 21:46:59 Tags:/ Arduino /...
-
4
微信小程序百度地图API移动选点因为业务需要使用百度地图API,参考一位大佬编写腾讯API的思路和方法,改造成百度地图API移动选点。 wxml前端部分就不改了,用用大佬的。 微信地图API获取当前位置经纬度...
-
6
V2EX › 问与答 有没有查询附近停车场的小程序或者 App 呢
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK