微信小程序如何利用接口返回经纬计算实际位置并且进行导航功能【下】

news2024/9/23 17:18:08

如果要在微信小程序内部导航的话可以使用wx.navigateToMiniProgram方法来打开腾讯地图小程序,并传递目的地的经纬度信息。 

目录

1.如何获取高精地址 

2.如何调起地图 

3.实现效果 

navigateToDestination: function() {
  let that = this;
  var latitude = parseFloat(that.data.latitude);
  var longitude = parseFloat(that.data.longitude);
  var address = that.data.address;
  
  // 打开腾讯地图小程序并传递目的地经纬度信息
  wx.navigateToMiniProgram({
    appId: '你的腾讯地图小程序AppID',
    path: 'pages/map/index', // 小程序内跳转到地图页面
    extraData: {
      latitude: latitude,
      longitude: longitude,
      name: address, // 目的地名称
      address: address // 目的地地址
    },
    success(res) {
      console.log('打开腾讯地图小程序成功');
    },
    fail(res) {
      console.log('打开腾讯地图小程序失败', res.errMsg);
    }
  });
}

需要自己去申请一个腾讯地图小程序,所以本文使用调起外部地图的方式进行路线导航。 

1.如何获取高精地址 

 wx.getLocation({
      type: 'wgs84',
      success: function(res) {
        var latitude = res.latitude; // 使用 res.latitude 获取经度值
        var longitude = res.longitude; // 使用 res.longitude 获取纬度值
    
        console.log('Latitude:', latitude);
        console.log('Longitude:', longitude);
    
        var location = latitude + ',' + longitude; // 构建经纬度字符串
    
        wx.request({
          url: 'https://apis.map.qq.com/ws/geocoder/v1/',
          data: {
            location: location, // 使用经纬度字符串作为参数
            key: 'OH6BZ-MKJHQ-2565Z-B7IP2-JD5N6-TYB54',
            get_poi: 0
          },
          success: function(res) {
            console.log('Geocoding API response:', res);
    
            var address = res.data.result.address;
            console.log('Address:', address);
    
            that.setData({
              address: address,
              kmnum: options.km
            });
          }
        });
      }
    });
  • wx.request():发起一个网络请求。

  • url: 'https://apis.map.qq.com/ws/geocoder/v1/':指定请求的URL,这里是腾讯地图的逆地理编码API接口。

  • data: {...}:设置请求的参数。

    • location: location:将经纬度字符串作为参数传递给API,以获取该位置的地址信息。
    • key: 'OH6BZ-MKJHQ-2565Z-B7IP2-JD5N6-TYB54':提供有效的腾讯地图API密钥。
    • get_poi: 0:设置是否返回周边POI(兴趣点)信息。这里设置为0表示不返回周边POI信息。

其中呢address是获取到的地址,因为下面调起导航需要,所以我们上面创建变量先进行存储 , kmnum: options.km的options.km是上文的距离,通过跳转传参得来,不明白的可看上文https://blog.csdn.net/m0_71966801/article/details/134083967

这里是跳转传参的方法: 

shops(e){
  console.log(e);
  console.log(e.currentTarget.dataset.id);
  console.log(e.currentTarget.dataset.km);
  wx.navigateTo({
    url: '/pages/countrystore/countrystore?id=' + e.currentTarget.dataset.id + '&km=' + e.currentTarget.dataset.km,
  })
},

2.如何调起地图 

 navigateToDestination: function() {
    let that = this
    var latitude =  parseFloat(that.data.latitude);
    var longitude =  parseFloat(that.data.longitude);
    var address = that.data.address;
    wx.openLocation({
      latitude: latitude,
      longitude: longitude,
      name: that.data.address, // 替换为实际的目的地名称
      address: address // 替换为实际的目的地地址
    });
  },



//let that = this:将当前上下文对象保存到变量that中,以便在后续代码中使用。

var latitude =  parseFloat(that.data.latitude);:从that.data中获取latitude属性的值,并通过parseFloat()函数将其转换为浮点数类型。这里假设latitude是一个经度值。

var longitude =  parseFloat(that.data.longitude);:从that.data中获取longitude属性的值,并通过parseFloat()函数将其转换为浮点数类型。这里假设longitude是一个纬度值。

var address = that.data.address;:从that.data中获取address属性的值,并将其保存到address变量中。这里假设address是目的地的地址信息。

wx.openLocation():调用微信小程序的openLocation方法打开地图页面,并显示目标位置。

latitude和longitude:指定目标位置的纬度和经度。
name: that.data.address:设置目标位置的名称,即目的地的名称。
address: address:设置目标位置的详细地址。
该函数通过调用wx.openLocation()方法实现了跳转到地图页面,并自动定位到指定的目的地位置。用户可以在地图页面查看目的地的位置信息,并进行导航操作。

3.实现效果 

QQ视频20231027215659

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1. 两数之和、Leetcode的Python实现

博客主页:🏆看看是李XX还是李歘歘 🏆 🌺每天分享一些包括但不限于计算机基础、算法等相关的知识点🌺 💗点关注不迷路,总有一些📖知识点📖是你想要的💗 ⛽️今…

Qwt QwtLegend和QwtPlotLegendItem图例类详解

1.概述 QwtLegend类是Qwt绘图库中用于显示图例的类。图例用于标识不同曲线、绘图元素或数据的意义,以便用户能够更好地理解图表中的数据。通过QwtLegend类,可以方便地在图表中添加、删除和设置图例的位置、方向和样式等属性。 QwtPlotLegendItem类是Qwt…

算法训练营第三天 | 203.移除链表元素、707.设计链表 、206.反转链表

关于链表我们应该了解什么: 代码随想录 在实际开发中,遇到指针我们要做好防御性编程。 问题( 一 ) 题目描述 : 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点…

H5营销观察:H5破圈传播有什么秘诀

在移动互联网时代,流量越加碎片化,场景变得相对短促和兴趣导向,一个营销H5产生的每一次点击、每一次互动、每一次流量停留背后都会有相应的动机,也是营销流量效果的成因。 今天,我们一起来探究下什么样的内容更容易传播…

calcite 校验层总结

1、校验的作用 1)完善语义信息 例如在SQL语句中,如果碰到select * 这样的指令,在SQL的语义当中,“*” 指的是取出对应数据源中所有字段的信息,因此就需要根据元数据信息来展开。 2)结合元数据信息来纠偏…

微服务-统一网关Gateway

网关的作用 对用户请求做身份认证、权限校验将用户请求路由到微服务,并实现负载均衡对用户请求做限流 搭建网关服务 创建新module,命名为Gateway,引入依赖(1.SpringCloudGateway依赖;2.Eureka客户端依赖或者nacos的服…

web开发简单知识

文章目录 springboot快速入门快速构建SpringBoot工程起步依赖原理分析springboot配置配置文件分类yaml的基本语法yaml数据格式获取数据profile内部配置加载顺序外部配置加载顺序 springboot整合整合junit整合redis整合mybatis springboot原理分析springboot自动配置Condition 监…

“第五十二天”

算术逻辑单元: 之前提过的运算器包括MQ,ACC,ALU,X,PSW;运算器可以实现运算以及一些辅助功能(移位,求补等)。 其中ALU负责运算,运算包括算术运算(加减乘除等)和逻辑运算&#xff08…

蓝桥杯双周赛算法心得——通关(哈希+小根堆)

大家好,我是晴天学长,这是很重要的贪心思维题,哈希的存法和小根堆的表示很重要。 1) .通关 2) .算法思路 通关 用hash(int[])存点的子节点并按输入顺序存关卡的号码(输入顺序就是) 列如&#…

Unity的live2dgalgame多语言可配置剧情框架

这段代码用于读取表格 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using OfficeOpenXml; using System.IO; using UnityEngine.Networking; using UnityEngine.UI; using Random UnityEngine.Random;public class Plots…

【Linux】部署单机OA项目及搭建spa前后端分离项目

一,部署oa项目 在虚拟机中,将项目打包成war文件放置到tomcat根目录下的webapps文件目录下 再在主机数据库中连接数据库,并定义数据库名导入相关的表 继续进入tomcat目录下双击点击startup.bat,启动oa项目 主机访问OA项目 如果登入…

MySQL之事务、存储引擎、索引

文章目录 前言一、事务1.概念2.操作(1)开启事务(2)提交事务(3)回滚事务 3.四大特性ACID(1)原子性(Atomicity)(2)一致性(Co…

Web APIs——焦点事件以及小米搜索框

一、事件类型 二、焦点事件 <body><input type"text"><script>const input document.querySelector(input)input.addEventListener(focus,function(){console.log(有焦点触发)})input.addEventListener(blur,function(){console.log(失去焦点触…

H5新Api | requestIdleCallback - requestAnimationFram

文章目录 浏览器渲染机制事件循环机制宏队列与微队列浏览器中事件循环流程 requestAnimationFrame(rAF)requestAnimationFrame API requestIdleCallbackrequestIdleCallback API任务拆分requestIdleCallback的使用场景 浏览器渲染机制 每一轮 Event Loop 都会伴随着渲染吗&…

力扣:142. 环形链表 II(Python3)

题目&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评…

命令行参数、环境变量

我们在使用C语言的时候&#xff0c;经常的写法是int main(){//函数体}。 而且我们也知道它也只是一个函数&#xff0c;当一个进程启动的时候&#xff0c;会有专门的函数来调用这个函数。 那他有没有函数参数呢&#xff1f;其实也是有的&#xff0c;我们今天&#xff0c;就来认识…

常用的网络攻击手段

前言&#xff1a;本文旨在介绍目前常用的网络攻击手段&#xff0c;分享交流技术经验 目前常用的网络攻击手段 社会工程学攻击物理攻击暴力攻击利用Unicode漏洞攻击利用缓冲区溢出漏洞进行攻击等技术 社会工程学攻击 社会工程学 根据百度百科定义&#xff1a; 社会工…

2023/10/27 JAVA学习

tab键可以对文件名进行补全 想切到其他盘的某个文件,必须先使用切盘命令 在当前文件目录输入cmd,可直接打开命令行窗口,并且处于当前文件目录 运行java文件,只用文件名不需要后缀 记得勾选文件扩展名 直接这样执行不会出现class文件,因为在底层临时生成了一个,不会长久的出现

NX二次开发后处理中保存tcl变量值到文本

直接上代码&#xff1a; static bool GetTclValue(UF_MOM_id_t mom_id, char *szName, char *szInfo, std::string &stValue,bool bShowValue /* false*/) {UF_MOM_ask_string(mom_id, szName, (const char **)&szInfo);if (szInfo){stValue szInfo;if (bShowValue){…