人工智能研究中心快递柜——代码分析七
2021SC@SDUSC
目录
index.wxml
index.js
本次分析项目中柜子的定位功能的实现。
index.wxml
在微信官方开发文档中,提供了map组件,通过对wx.createMapContext api的使用可以实现一些基础属性的设定,id用于设置控件id,在控件点击事件回调会返回此id;style综合设置了相关尺寸;bindtap用于在点击地图时触发;bindmarkertap用于点击标记点时触发;markers设置地图中的标记点;latitude设置标记点位于地图上显示标记位置的纬度,longtitude用于设置经度;show-location显示带有方向的当前定位点;show-compass,show-scale用于显示指南针和比例尺。
<map id="myMap" bindtap="bindMapTap" style="width: 95%; margin-left: 2.5%; height: 1150rpx;" latitude="{{latitude}}" longitude="{{longitude}}" markers="{{markers}}" show-location bindmarkertap="markerTap" show-compass show-scale></map>
柜子地图放在container中,用ID,柜子的名称、详细地址、距离都通过view进行可视化实现,在view标签中调用js中定义的属性。
<view style="display: flex; justify-content: space-between;"><view><view style="font-size: 40rpx;">{{temp.name}}</view><!-- distance --><view>{{temp.distance}}km</view><view>{{temp.location}}</view><!-- 柜子的详细地址 --></view><image src="/img/icon/map_go_there.png" style="width: 80rpx; height: 80rpx; background-color: #3c69ef; border-radius: 50%;" bindtap="openOtherApp"></image></view>
index.js
在这部分进行获得柜子距离、位置的方法实现。
定义getItems方法用于根据用户定位信息获取周围柜子信息,首先通过wx.getLocation方法获取当前的地理位置、速度。可以重新定义object.res参数的latitude纬度和longitude经度,并将重设的经纬度存在params中,接下来请求用户周围的柜子信息列表。
wx.getLocation({success(res) {console.log("location", res, res.latitude, res.longitude);that.setData({latitude: res.latitude,longitude: res.longitude,})let params = {latitude: res.latitude,longitude: res.longitude,};request.request("/wechat/getAroundCabinet", "GET", params, (data) => {console.log("--markers data--", data);data.forEach((item) => {item.width = that.data.size; item.height = that.data.size;item.distance = Number(item.distance).toFixed(2);})that.setData({markers: data,}, () => {that.includePoints();})}, (data) => {console.log("on fail ", data);}) }})
includePoints是定义的缩放视野展示所有经纬度方法;markertap定义标记的点击事件;resizeMarker用于还原第index个marker,emphasizeMarker用于放大第index个marker,markertap调用这两个方法实现标记事件的定义。
resizeMarker: function(index) {console.log("resize marker", index)if(index != null) {this.setData({[`markers[${index}].width`]: this.data.size,[`markers[${index}].height`]: this.data.size,})}},
emphasizeMarker: function(index) {let markersWidth = `markers[${index}].width`;let markersHeight = `markers[${index}].height`;this.setData({[markersWidth]: this.data.emphasizeSize,[markersHeight]: this.data.emphasizeSize,}, () => {console.log("emphasize set data", this.data.markers)})},
markerTap: function(e) {console.log("marker tap", e, e.markerId);// 还原上次点击的markerthis.resizeMarker(this.data.index);var index = this.data.markers.findIndex((item) => {return item.id == e.markerId});let marker = this.data.markers[index];console.log("marker temp", index, marker);this.setData({temp: marker,index: index,})console.log("----", typeof index)// 放大新点击的 markerthis.emphasizeMarker(index);},
最后是openOtherApp方法,用于调用微信的API打开当前位置,内含使用其他APP导航的功能。
openOtherApp: function() {console.log("open other app", this.data.temp)wx.openLocation({latitude: this.data.temp.latitude,longitude: this.data.temp.longitude,name: this.data.temp.name,address: this.data.temp.location, // 详细地址})},
至此借用wx api的相关内容实现了柜子位置的展示和导航的功能。
人工智能研究中心快递柜——代码分析七相关推荐
- 人工智能研究中心快递柜——代码分析八
2021SC@SDUSC 本次开始介绍柜子的具体使用功能的实现. 由于关于wxml方面都是使用view标签设置相应参数,进行展示故不做具体分析,主要是对 wx:if的运用,合理使用js中传入的数据参数 ...
- 人工智能研究中心快递柜——源码部署及分析综述
2021SC@SDUSC 目录 项目简介 1.格子柜 2.审计柜 人员分工 源码部署 项目简介 1.格子柜 格子柜项目主要用于物品的存储和中转功能,项目分为微信小程序.安卓柜子端.web后台三个呈现形 ...
- 2021SC@SDUSC BRPC代码分析(七) —— bthread综述、Butex及mutex详解
2021SC@SDUSC 文章目录 一.bthread的背景知识学习 二.代码分析 总结 一.bthread的背景知识学习 经过前面6篇代码分析,我将BRPC一个极其实用的工具--bvar做了全面系统 ...
- kdb代码分析(七)
在大家都进入了kdb之后,in control的那个cpu就开始执行1566行的kdb_local()函数了.依然定义于kdb/kdbmain.c: 1134 /* 1135 * kdb_local ...
- lighttpd1.4.18代码分析
lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1) 编辑 lig ...
- Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...
- 2019级软件工程应用与实践-人工智能快递柜(代码分析2)
2021SC@SDUSC 第一篇博客中学习了Android Studio的基本使用方式. 第二篇主要是利用了第一周的部分时间和第二周的全部时间来学习Android开发所需要的语法,通过学习,终于可以看 ...
- 丰巢快递柜启动超时收费3元封顶;谷歌市值一夜暴涨5000亿;两行代码构成的npm包影响到了数百万项目 | EA周报...
EA周报 2020年4月30日 每个星期7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 热点大事件 丰巢快递柜启动超时收费3元封顶,菜鸟驿站表态继续免费保管 从深圳市丰巢科技有 ...
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)
BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) author: wolfenstein (NeverSayNever) 上次我们分析了Tracker类初始化的 ...
最新文章
- 微软这次发布会巨硬:安卓折叠手机、双屏电脑,还有无线耳机和超薄平板
- 从Struts2 action 获取json 数据格式 显示到Jquery EasyUI
- 静态链接中的那点事儿(2):C++二进制兼容性及跨平台初步
- 【解题报告】Leecode 35. 搜索插入位置——Leecode刷题系列
- eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
- adb native raact 夜神_React-Native安装及环境搭建(夜神模拟机运行)
- C++安全方向(二):2.4 openssl_BIO接口解析
- vsftp服务器mysql认证_基于mysql控制vsftp的用户认证机制
- 青春有多9,我爱我所有
- 高通ISP流程中,ADRC Gain与GTMLTM的对应关系
- 关于oracle双活参考
- 马云的SNS梦美好却残酷
- 超融合解决方案已成新黑马 市场排名初见端倪
- 软件测试行业中ta表示什么意思,温度冲击测试ta/tc分别代表什么意思
- java8 朗姆表达式,Python基础
- Python 面向对象 --- 多态
- 走进京东 | 中国空间技术研究院青年创新联盟成员莅临参观京东总部
- 清除Windows安全中心保护历史记录方法
- 程序员开发指南!半路出家Android程序员看我轻松逆袭!实战篇
- Android游戏开发之地图编辑器的使用以及绘制地图 (四)
热门文章
- Google的恶搞新闻联播
- php dt dd,DL.DT.DD实现左右的布局简单例子
- 华为智慧屏鸿蒙系统2.0,搭载鸿蒙2.0系统?华为即将推出入门级智慧屏
- 执行vite run dev时的spawn error问题
- 如何使用手机软件将图片转换为文字
- 关闭oracle job定时任务,oracle job 定时任务,定时执行
- 解决RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 踩过的坑(配置环境:linux+anaconda3+pytorch ...)
- mysql根据字符转行
- JVM笔记-性能监控与分析工具
- 全闪存存储的服务器虚拟化场景应用