微信jssdk接口--wx.getLocation接口的使用时踩的坑

首先微信jssdk接口的使用过程都需要正确的配置,否则无法成功调用的。配置过程,改天再总结,现在只说说地理位置的接口。

具体接口调用代码

wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});

参数type:当我们需要使用第三方地图服务时就需要正确配置这个参数了。先来看这个参数的可选值:wgs84和gcj02,百度一下这两个类型,不难理解,它其实就是实际地理位置的经纬度通过这两种类型的转换算法得到一个新的经纬度,这个经纬度就被用来公开显示。

        我们在网上或者gps等获取到的地理位置都是一个经纬度值,这个经纬度值与真实地理位置的经纬度是不一样的。这两种经纬度之间的换算就是用了某种算法。比如火星坐标指的就是实际坐标经过GCJ02算法得到的坐标,而百度坐标则是BD09,还有WGS84坐标,同理。这些算法肯定是不公开的。

我踩的第一个大坑就是这个类型设置错了!!!

这个接口最后返回的结果是一个包含了经纬度的对象,这个经纬度也就是我们的目标,获取到经纬度以后就需要通过地图服务提供的地址解析接口来获取地址。一开始选用了腾讯地理位置服务的JavaScript API中提供的qq.maps.Geocoder 类 里getAddress()接口,产生了问题:在电脑上调试可以得到精确的地址,在手机上则是死活无法显示街道巷号门牌号的具体信息。了解后知道了,这个API主要用于网页地图的开发,针对手机客户端的地理位置服务需要使用WebService API里的地址解析接口。具体用法可以在WebService API查阅。在用这个解决方案的时候也遇到了问题,就是调用这个接口会返回errMsg“不支持该方法的使用”之类的具体不太记得了,如果遇到这个问题,那就是数据类型的问题,这个接口返回的是jsonp类型,但是文档上写的又是默认json格式,反复尝试只有设置为jsonp才能请求成功,当我们设置了dataType:'jsonp',请求的参数里就要显示设置output='jsonp'了.至于为什么我也不清楚,只能是给大家提供一种解决方案。

这是第二个大坑了,地理位置服务的选用以及请求参数和返回格式的设置。

小结:

当遇到该接口的调用失败问题,按以下步骤检测:

(1)wx.config配置成功没有

(2)type类型与后面选用的第三方地理位置服务的坐标系是否一致。比如type='WGS84',得到的坐标放进以BD09为坐标系的百度地图中去处理,那得到的结果肯定是不对的

(3)你所选用的API是否针对应用的平台,网页端的产品用到移动端肯定不精准的。

你可能感兴趣的:(微信jssdk)