vue 微信H5页面打开内置地图的指定位置和获取当前位置(转载收藏)

转载地址

1. 根据经纬度打开地图

首先,装一下微信sdk:

css 复制代码
npm i weixin-js-sdk -S

页面:按钮点击之后打开地图(demo演示)

xml 复制代码
<template>
  <div class="map box clmcenter">
    <button @click="openMap">打开地图</button>
  </div>
</template>

js部分:

1.导入weixin-js-sdk

2.在openMap方法中获取签名之后调用wx.openLocation打开地图

javascript 复制代码
import { Toast } from "vant";
import wx from "weixin-js-sdk";
export default {
  methods: {
    openMap() {
      var url = encodeURIComponent(window.location.href.split("#")[0]);
      this.$http
        .post("后台地址", { url })
        .then((res) => {
          let data = res.data;
          wx.config({
            debug: false,
            appId: data.appId,
            timestamp: data.timestamp,
            nonceStr: data.nonceStr,
            signature: data.signature,
            jsApiList: ["checkJsApi", "openLocation"],
            success(res) {
              //   Toast(res);
            },
          });
        });
      wx.ready(() => {
        wx.checkJsApi({
          jsApiList: ["openLocation"],
          success: (rest) => {
            // Toast("ready*****",rest);
            //打开指定位置
            wx.openLocation({
              latitude: 31.232795315128442, // 纬度,浮点数,范围为90 ~ -90
              longitude: 121.47511024687574, // 经度,浮点数,范围为180 ~ -180。
              name: "人民广场", // 位置名
              address: "", // 地址详情说明
              scale: 18, // 地图缩放级别,整型值,范围从1~28。默认为最大
              infoUrl: "", // 在查看位置界面底部显示的超链接,可点击跳转
            });
          },
        });
      });
    },
  },
};

注意:经纬度的值是浮点数!经纬度的值是浮点数!!经纬度的值是浮点数!!!

只要签名中的配置都能正常拿到,IOS和安卓端都可以正常打开地图,调试的时候也可以把debug改为true,方便查看错误信息。

  1. 获取当前位置后打开地图 获取当前地址用到的是wx.getLocation这个接口,具体使用在微信开发者文档中也有说明。

注意 :

  • 在jsApiList中添加getLocation配置,ready()中对应也要添加。
  • wx.getLocation的type值改为 'gcj02' 火星坐标值。
javascript 复制代码
openMap() {
      var url = encodeURIComponent(window.location.href.split("#")[0]);
      this.$http
        .post("https://www.mahelei.com/index.php/Gm/Wechat/share", { url })
        .then((res) => {
          let data = res.data;
          wx.config({
            debug: false,
            appId: data.appId,
            timestamp: data.timestamp,
            nonceStr: data.nonceStr,
            signature: data.signature,
            jsApiList: ["checkJsApi", "getLocation", "openLocation"],
            success(res) {
              //   Toast(res);
            },
          });
        });
      wx.ready(() => {
        wx.checkJsApi({
          jsApiList: ["getLocation", "openLocation"],
          success: (rest) => {
            // Toast("ready*****",rest);
            //获取当前位置
            wx.getLocation({
              type: "gcj02", // 默认为wgs84的 gps 坐标,如果要返回直接给 openLocation 用的火星坐标,可传入'gcj02'
              success: function (res) {
                //打开指定位置
                wx.openLocation({
                  latitude: res.latitude, // 纬度,浮点数,范围为90 ~ -90
                  longitude: res.longitude, // 经度,浮点数,范围为180 ~ -180。
                  name: "我的位置", // 位置名
                  address: "", // 地址详情说明
                  scale: 18, // 地图缩放级别,整型值,范围从1~28。默认为最大
                  infoUrl: "", // 在查看位置界面底部显示的超链接,可点击跳转
                });
              },
            });
          },
        });
      });
    },
相关推荐
毕设源码-朱学姐5 小时前
【开题答辩全过程】以 工厂能耗分析平台的设计与实现为例,包含答辩的问题和答案
java·vue.js
老前端的功夫6 小时前
Vue 3 性能深度解析:从架构革新到运行时的全面优化
javascript·vue.js·架构
前端小端长9 小时前
Vue 中 keep-alive 组件的原理与实践详解
前端·vue.js·spring
小胖霞10 小时前
企业级全栈项目(14) winston记录所有日志
vue.js·前端框架·node.js
OpenTiny社区10 小时前
TinyEngine2.9版本发布:更智能,更灵活,更开放!
前端·vue.js·低代码
老华带你飞11 小时前
列车售票|基于springboot 列车售票系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
幸运小圣11 小时前
深入理解ref、reactive【Vue3工程级指南】
前端·javascript·vue.js
狗哥哥11 小时前
🚀 拒绝重复造轮子!在 Vue3 项目中打造一套企业级“统一上传服务”(支持分片、秒传、断点续传)
vue.js·架构
汝生淮南吾在北11 小时前
SpringBoot+Vue在线考试系统
vue.js·spring boot·后端·毕业设计·毕设
幸运小圣11 小时前
【Vue3】 中 ref 与 reactive:状态与模型的深入理解
前端·javascript·vue.js