小程序唤起地图导航

小程序唤起地图导航

场景描述:小程序中使用webview内嵌h5页面,h5页面中会获取目的地经纬度调起手机自带的导航APP,那么问题来了,h5唤起手机导航打开的是网页版的,似乎小程序自带的方法就挺好用哈
代码:
首先在h5中调用微信小程序的方法,h5跳转到小程序

方法如果调用失败,检查是否引用sdk,package.json文件中是否配置
import wx from ‘weixin-js-sdk’
“weixin-js-sdk”: “^1.4.0-test”,
“weixin-jsapi”: “^1.1.0”

wx.miniProgram.navigateTo({
            url: '/pages/index/containerMap?lng=' + lng + "&lat=" + lat + "&address=" + address,
            success: function() {
              console.log('打开地图成功')
            },
            fail: function() {
              that.showPlugin("打开地图失败了~");
              return;
            },
            complete: function() {
            }
          });

接下来就是小程序对应的页面js里面
pages/index/containerMap.js

Page({
  data: {

  },

  onLoad: function (options) {
    console.log('---------------------------')
    console.log(options)
    let longitude = options.lng;
    let latitude = options.lat;
    let address = options.address;
    longitude = parseFloat(longitude);
    latitude = parseFloat(latitude);
    wx.openLocation({
      latitude: latitude,
      longitude: longitude,
      address: address,
      scale: 15
    })
  },
  
})

OK,完美打开,但是还有一个小坑没有填,导航返回到当前页面要想返回主页,需要点击两次返回键,点一次页面空白,这个后续解决,有答案的大家可以留言帮助一下可怜的孩子~

---------------------------------------------2020-07-30----------------------------------------------------------------------------------------------------
经过大佬的评论,当时匆忙没有仔细研究wx.openLocation方法,在这里再次感谢大佬的指导,结合最近编写小程序,我总结一下处理方法:
1.wx.miniProgram.navigateTo进入小程序页面时,onload函数中设置一个标志,比如 flag默认为false,设置成true,接着打开地图,返回时在该页面onshow方法中进行判断,如果为true,直接返回到首页(利用onload只执行一次,onshow每次打开页面都执行机制,navigate to跳转页面并未销毁当前页面,只是隐藏了)

// pages/index/map.js
Page({
  data: {
    flag:false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      flag:true
    })
    wx.openLocation({
      latitude: 39,
      longitude: 117,
      address: 'test',
      scale: 15
    })
  },
  onShow: function () {
    if(this.data.flag){
      const pages = getCurrentPages();
    if (pages.length >= 2) {
      wx.navigateBack({
        delta: 2
      });
    } else {
      //返回tab页面使用
      wx.switchTab({
        url: '/pages/index/index'
      });
    }
    }
  }
})

不断学习,不断进步~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值