码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2022/8/5 uniapp实现附近商家定位


    目录

    一丶申请腾讯位置服务开发者密钥

    二丶下载微信小程序JavaScriptSDK

    三丶安全域名设置

     四丶代码编写

            4.1丶项目配置

            4.2丶定义变量

            4.3丶编写方法

            4.4丶页面加载时调用

            4.5丶数据展示

    五丶真机调试效果图


    有一个月没写博客了,最近在写项目,需要用到腾讯位置服务,获取附近商家位置。这里我就记录一下,实现过程。

    一丶申请腾讯位置服务开发者密钥

            申请地址:腾讯位置服务 - 立足生态,连接未来

            官网教程:微信小程序JavaScript SDK | 腾讯位置服务

     

     点击创建应用,然后创建Key

    这样我们就获得了key了 

    二丶下载微信小程序JavaScriptSDK

    下载链接: https://mapapi.qq.com/web/miniprogram/JSSDK/qqmap-wx-jssdk1.2.zip

    三丶安全域名设置

    安全域名设置,在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com

     四丶代码编写

            4.1丶项目配置

    在项目中创建utils目录将下载好JavaScriptSDK放入其中,并在uniapp中导入。

    1. import QQMapWX from '@/utils/qqmap-wx-jssdk.js'
    2. const qqmapsdk = new QQMapWX({
    3. //填写你申请的key
    4. key: 'XXXXX-A466V-XXXXX-XXXXX-XXXXX-XXXXX'
    5. })

            4.2丶定义变量

    1. export default {
    2. data() {
    3. return {
    4. //商家列表
    5. markers:[],
    6. //自身经纬度
    7. from:{},
    8. //页码值
    9. page_index: 1,
    10. //每页显示多少条数据
    11. page_size: 10,
    12. //分页总条数
    13. total:100,
    14. }
    15. },

            4.3丶编写方法

    1. methods: {
    2. /* 下面的方法是获取当前用户的地址,根据地址获取当前最近的门店 */
    3. getUserLocation(){
    4. //获取当前地理位置
    5. let that = this
    6. uni.getLocation({
    7. type: 'wgs84',
    8. success(res) {
    9. that.from.latitude = res.latitude
    10. that.from.longitude = res.longitude
    11. that.getViennaList()
    12. },
    13. fail: (err) => {
    14. uni.showToast({
    15. title: '无法获取当前位置!',
    16. icon:'error',
    17. duration:1500
    18. });
    19. //默认经纬度
    20. that.from.latitude = 28.326165
    21. that.from.longitude = 112.935354
    22. that.getViennaList()
    23. }
    24. })
    25. },
    26. getViennaList(){
    27. //获取商家位置
    28. let that = this
    29. qqmapsdk.search({
    30. //关键字改成所需商家名称
    31. keyword: "书亦烧仙草",
    32. //自身经纬度对象
    33. location: that.from,
    34. //分页(可忽略)
    35. page_index: that.page_index,
    36. page_size: that.page_size,
    37. success: (res) =>{
    38. var mks = []
    39. for (var i = 0; i < res.data.length; i++) {
    40. mks.push({ // 获取返回结果,放到mks数组中
    41. title: res.data[i].title,
    42. id: res.data[i].id,
    43. latitude: res.data[i].location.lat,
    44. longitude: res.data[i].location.lng,
    45. address: res.data[i].address,
    46. distance:''
    47. })
    48. }
    49. that.changeWidth(mks);
    50. },
    51. fail: (err) => {
    52. uni.showToast({
    53. title: '无法获取商店位置!',
    54. icon:'error',
    55. duration:1500
    56. });
    57. }
    58. })
    59. },
    60. //计算距离
    61. changeWidth(mks){
    62. let _this = this
    63. qqmapsdk.calculateDistance({
    64. from:_this.from,
    65. to: mks,
    66. success:(res) =>{
    67. for (var i = 0; i < res.result.elements.length; i++) {
    68. let hw = res.result.elements[i].distance //拿到距离(米)
    69. if (hw && hw >1 && hw <1000) { //拿到正确的值
    70. hw = hw + '米'
    71. } else if(hw && hw !== -1){
    72. hw = (hw / 2 / 500).toFixed(1) + '公里'
    73. }else{
    74. hw = "距离太近或请刷新重试"
    75. }
    76. mks[i].distance = hw
    77. }
    78. _this.markers = [..._this.markers,...mks]
    79. console.log(_this.markers);
    80. //存入缓存中
    81. uni.setStorageSync("markers",_this.markers)
    82. },
    83. fail: (error) =>{
    84. uni.showToast({
    85. title: error,
    86. icon:'error',
    87. duration:1500
    88. });
    89. },
    90. });
    91. },
    92. },

            4.4丶页面加载时调用

    1. created() {
    2. //判断缓存是否存在附近门店信息有的话不加载
    3. if(uni.getStorageSync("markers")==''){
    4. this.getUserLocation();
    5. }
    6. }

    说明:附近的门店信息已经被我们存入markers数组当中了,并且按距离从小到大排列好的!

            4.5丶数据展示

    五丶真机调试效果图

  • 相关阅读:
    sql优化
    动态规划之线性dp(上)
    2023年亚太杯数学建模亚太赛C题思路解析+代码+论文
    【2023云栖】郭瑞杰:阿里云搜索产品智能化升级
    区间DP(基础+提高)
    Tomcat-8.5_Apr-1.7构建
    Oracle等数据库报盘步骤(使用脚本批量压缩)
    [MAUI 项目实战] 手势控制音乐播放器(三): 动画
    二阶常微分方程的显隐求解格式
    Shell入门
  • 原文地址:https://blog.csdn.net/Abcdzzr/article/details/126187534
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号