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


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

    目录

    1.如何获取高精地址 

    2.如何调起地图 

    3.实现效果 

    1. navigateToDestination: function() {
    2. let that = this;
    3. var latitude = parseFloat(that.data.latitude);
    4. var longitude = parseFloat(that.data.longitude);
    5. var address = that.data.address;
    6. // 打开腾讯地图小程序并传递目的地经纬度信息
    7. wx.navigateToMiniProgram({
    8. appId: '你的腾讯地图小程序AppID',
    9. path: 'pages/map/index', // 小程序内跳转到地图页面
    10. extraData: {
    11. latitude: latitude,
    12. longitude: longitude,
    13. name: address, // 目的地名称
    14. address: address // 目的地地址
    15. },
    16. success(res) {
    17. console.log('打开腾讯地图小程序成功');
    18. },
    19. fail(res) {
    20. console.log('打开腾讯地图小程序失败', res.errMsg);
    21. }
    22. });
    23. }

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

    1.如何获取高精地址 

    1. wx.getLocation({
    2. type: 'wgs84',
    3. success: function(res) {
    4. var latitude = res.latitude; // 使用 res.latitude 获取经度值
    5. var longitude = res.longitude; // 使用 res.longitude 获取纬度值
    6. console.log('Latitude:', latitude);
    7. console.log('Longitude:', longitude);
    8. var location = latitude + ',' + longitude; // 构建经纬度字符串
    9. wx.request({
    10. url: 'https://apis.map.qq.com/ws/geocoder/v1/',
    11. data: {
    12. location: location, // 使用经纬度字符串作为参数
    13. key: 'OH6BZ-MKJHQ-2565Z-B7IP2-JD5N6-TYB54',
    14. get_poi: 0
    15. },
    16. success: function(res) {
    17. console.log('Geocoding API response:', res);
    18. var address = res.data.result.address;
    19. console.log('Address:', address);
    20. that.setData({
    21. address: address,
    22. kmnum: options.km
    23. });
    24. }
    25. });
    26. }
    27. });
    • 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

    这里是跳转传参的方法: 

    1. shops(e){
    2. console.log(e);
    3. console.log(e.currentTarget.dataset.id);
    4. console.log(e.currentTarget.dataset.km);
    5. wx.navigateTo({
    6. url: '/pages/countrystore/countrystore?id=' + e.currentTarget.dataset.id + '&km=' + e.currentTarget.dataset.km,
    7. })
    8. },

    2.如何调起地图 

    1. navigateToDestination: function() {
    2. let that = this
    3. var latitude = parseFloat(that.data.latitude);
    4. var longitude = parseFloat(that.data.longitude);
    5. var address = that.data.address;
    6. wx.openLocation({
    7. latitude: latitude,
    8. longitude: longitude,
    9. name: that.data.address, // 替换为实际的目的地名称
    10. address: address // 替换为实际的目的地地址
    11. });
    12. },
    13. //let that = this:将当前上下文对象保存到变量that中,以便在后续代码中使用。
    14. var latitude = parseFloat(that.data.latitude);:从that.data中获取latitude属性的值,并通过parseFloat()函数将其转换为浮点数类型。这里假设latitude是一个经度值。
    15. var longitude = parseFloat(that.data.longitude);:从that.data中获取longitude属性的值,并通过parseFloat()函数将其转换为浮点数类型。这里假设longitude是一个纬度值。
    16. var address = that.data.address;:从that.data中获取address属性的值,并将其保存到address变量中。这里假设address是目的地的地址信息。
    17. wx.openLocation():调用微信小程序的openLocation方法打开地图页面,并显示目标位置。
    18. latitude和longitude:指定目标位置的纬度和经度。
    19. name: that.data.address:设置目标位置的名称,即目的地的名称。
    20. address: address:设置目标位置的详细地址。
    21. 该函数通过调用wx.openLocation()方法实现了跳转到地图页面,并自动定位到指定的目的地位置。用户可以在地图页面查看目的地的位置信息,并进行导航操作。

    3.实现效果 

    QQ视频20231027215659

  • 相关阅读:
    SkyEye:助力飞行器状态控制系统仿真
    计算机毕业设计(附源码)python疫情期间的校园防控管理系统
    go语言基础---8
    如何快速安装JDK 1.8 以及配置环境变量
    BlackBerry 软件全球现已部署超过2.15亿辆汽车
    【动画进阶】神奇的 3D 磨砂玻璃透视效果
    右值引用&移动构造函数
    读书笔记——C++高性能编程(一至三)
    Java环境搭建、IDEA、Java语言
    SD NAND(贴片式TF卡)坏块管理技术问答
  • 原文地址:https://blog.csdn.net/m0_71966801/article/details/134084525