这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 JavaScript 微信定位功能实现方法, 将定位到的经纬度转换为百度地图对应的经纬度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
分享下微信是如何定位的:
本文主要讲解如何利用微信定位,如何将定位到的经纬度转换为百度地图对应的经纬度,以及处理定位失败、取消及错误时的默认做法。
- //获取地理位置信息start
- //封装成一个函数
- function getPosition() {
- //用ajax请求
- $.ajax({
- url: "/wechat/jssdk",
- //请求地址
- type: 'post',
- //post请求
- dataType: 'json',
- contentType: "application/x-www-form-urlencoded; charset=utf-8",
- data: {
- 'url': location.href.split('#')[0] //将第一个#号前的地址传递
- },
- //请求成功的函数
- success: function(data) {
- wx.config({
- // debug: true,
- appId: data.data.appId,
- timestamp: data.data.timestamp,
- nonceStr: data.data.nonceStr,
- signature: data.data.signature,
- jsApiList: ['checkJsApi', 'getLocation']
- });
- wx.ready(function() {
- wx.getLocation({
- //获得定位成功
- success: function(res) {
- //这是微信返回的真正经纬度
- var oldLat = res.latitude; // 纬度,浮点数,范围为90 ~ -90
- var oldLng = res.longitude; // 经度,浮点数,范围为180 ~ -180。
- /*下面是为了将获得的真正经纬度转换为对应的百度经纬度,因为是利用百度地图的经纬度去查询数据的,数据库中存的也是百度的经纬度*/
- //创建一个百度地图的点
- var customerPoint = new BMap.Point(oldLng, oldLat);
- //
- var convertor = new BMap.Convertor();
- var pointArr = []; //创建一个数组
- pointArr.push(customerPoint); //将刚才的点放进去
- convertor.translate(pointArr, 1, 5, initMap); //转换坐标
- function initMap(data) {
- if (data.status === 0) { //转换成功
- var point = data.points[0]; //得到后的点
- var lng = point.lng; //获得转换后的经度
- var lat = point.lat; //获得转换后的纬度
- toDoFunction(lng, lat); //将经纬度传入到要运用的函数中
- } else {
- //下面两行是默认定位到西湖的经纬度
- lng = 120.141375;
- lat = 30.257806;
- toDoFunction(lng, lat); //将经纬度传入到要运用的函数中
- }
- }
- },
- //取消定位
- cancel: function() {
- //下面两行是默认定位到西湖的经纬度
- var lng = 120.141375;
- var lat = 30.257806;
- toDoFunction(lng, lat); //将经纬度传入到要运用的函数中
- },
- //定位失败
- fail: function() {
- //下面两行是默认定位到西湖的经纬度
- var lng = 120.141375;
- var lat = 30.257806;
- toDoFunction(lng, lat); //将经纬度传入到要运用的函数中
- }
- });
- //定位发生错误
- wx.error(function() {
- //下面两行是默认定位到西湖的经纬度
- var lng = 120.141375;
- var lat = 30.257806;
- toDoFunction(lng, lat); //将经纬度传入到要运用的函数中
- });
- });
- }
- });
- }
以上代码,如果可以定位到就用定位到的真正的经纬度,再转换成百度地图对应的经纬度,如果定位失败或者是点击取消或者发生错误,则默认定位到西湖的经纬度。
来源: http://www.phperz.com/article/17/0519/330075.html