微信公众号打开微信内置地图(thinkphp5+jq)

h5或微信公众号打开微信内置地图,选择高德,百度等导航

第一步,去后台请求签名数据

this.$http
        .get(
          后端地址:获取下面所需要的的数据
        )
        .then(data => {
          // 记录token
          if (data.body.returnCode == "000000") {
            wx.config({
              // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
              debug: false,
              // 必填,公众号的唯一标识
              appId: data.body.doc.appid,
              // 必填,生成签名的时间戳
              timestamp: "" + data.body.doc.timestamp,
              // 必填,生成签名的随机串
              nonceStr: data.body.doc.nonce,
              // 必填,签名,见附录1
              signature: data.body.doc.signature,
              // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
              jsApiList: ["checkJsApi", "openLocation"],
              success(res){
                console.log('sdddd',res)
              }
            });
          } else {
            this.$vux.toast.text(data.body.msg);
          }
        });


第二步,调用微信内置地图
 

wx.ready(function() {
            wx.checkJsApi({
              jsApiList: ["openLocation"],
              success: function(res) {
                wx.openLocation({
                  latitude: latitude, // 纬度,浮点数,范围为90 ~ -90
                  longitude: longitude, // 经度,浮点数,范围为180 ~ -180。
                  name: , // 位置名
                  address: , // 地址详情说明
                  scale: 15, // 地图缩放级别,整形值,范围从1~28。默认为最大
                  success(res){
                    console.log('成功了吗',res)
                  },
                });
              }
            });
          });

后端代码:

public function getSignPackage($url = '')
    {
        $ticket = $this->getTicket();
        if ($ticket === false) {
            return false;
        }

        // 注意 URL 一定要动态获取,不能 hardcode.
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = $url ?: $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        $timestamp = time();
        $nonceStr = $this->createNonceStr();

        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
        $string = "jsapi_ticket=$ticket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
        $signature = sha1($string);

        $signPackage = [
            "appId" => $this->config['appid'],
            "nonceStr" => $nonceStr,
            "timestamp" => $timestamp,
            "url" => $url,
            "rawString" => $string,
            "signature" => $signature
        ];
        return $signPackage;
    }

private function createNonceStr($length = 16)
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值