本地调试首先配置测试号以及重定向链接详情见juejin.cn/post/726741…
公众平台配置项
测试号配置:
- JS接口安全域名配置为项目访问额域名或ip,这里是本地启动项目的ip
线上版也要在微信后台配置下
- 对话服务->用户管理->开启获取用户地理位置
使用微信API获取定位
- 公众号H5页面需要引入JS-SDK,以vue为例:
安装:npm i weixin-js-sdk 引入:import wx from 'weixin-js-sdk'
JS-SDK说明文档developers.weixin.qq.com/doc/offiacc…
- 通过config接口注入权限验证配置
//签名等参数听过后台接口返回
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: ['getLocation'] // 必填,需要使用的JS接口列表,这里是要调用获取地理位置的api
});
- 微信ready后调用获取地理位置接口
wx.ready(function () {
wx.getLocation({
type: 'wgs84',
highAccuracyExpireTime: 4000,
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
},
fail: function (error) {
// window.alert('微信地址错误'+error)
},
});
})
- 通过wx.getLocation获取到经纬度获取当前行政区划编码(高德天气接口需要穿行政区划)
高德地图获取天气需要根据行政区划查询,可以用高德地图 JS API中 逆向地理编码获取对应的地址信息,详情移步lbs.amap.com/api/javascr…
AMap.plugin('AMap.Geocoder', function() {
var geocoder = new AMap.Geocoder({
// city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
city: '010'
})
var lnglat = [116.396574, 39.992706]
geocoder.getAddress(lnglat, function(status, result) {
if (status === 'complete' && result.info === 'OK') {
// result为对应的地理位置详细信息
}
})
})
- 进去高德开放平台配置相关信息
- 在我的应用里面申请key console.amap.com/dev/key/app
- 根据city和key调用高德地图天气接口
https://restapi.amap.com/v3/weather/weatherInfo?city=110101&key=<用户key>,详情移步高德文档lbs.amap.com/api/webserv…
备注: 高德地图鱼也提供了一种ip定位的接口,根据当前ip获取位置信息,可用于网页端定位,详情移步文档 lbs.amap.com/api/webserv…