H5,JS中使用微信、高德获取定位

目的:

        --:展示游戏玩家彼此之间的距离,防止棋牌游戏中用户作弊

经过:

              1:在微信公众号,配置对应的JS域名,IP地址白名单

              2:在JS页面中,调用微信的JS-SDK,来使用微信的getLocation接口,实时获取玩家的   longitude,latitude经纬度。

             3:在页面中使用高德地图的JS-API,将经纬坐标点转换为实时的地理位置。

                    http://lbs.amap.com/api/javascript-api/summary

                    代码如下:引入高德的JS-API:

使用其中的geocoder类,获得经纬度和地理位置之间的转换。

/**根据经纬度--逆向获取玩家地址详情**/

function getUserAddress(pointAry, backFun,thisObj,returnFun) {

// function regeocoder() {

        //逆地理编码

        var geocoder = new AMap.Geocoder({

        radius: 1000,

        extensions: "base"

        });

geocoder.getAddress(pointAry, (status, result) => {

    if (status === 'complete' && result.info === 'OK')

  {

     var address = result.regeocode.formattedAddress; //返回地址描述

      if (backFun) {

                backFun.apply(thisObj,[address,returnFun]);

       }

   } else {

alert("获得地址失败")

}

});

}


3.1:成功获取到加载的地理位置


            4:通过2个经纬点,计算2个经纬度点之间的距离。---千米

                https://www.cnblogs.com/softfair/p/distance_of_two_latitude_and_longitude_points.html


问题记录:

 --:如图1,报错:Permission denied--》权限不足

图1

                原因:jsApiList里若没配置openLocation和getLocation的接口权限

--:如图2,获取数据超时:

图2

原因:在使用getLocation接口的时候,用户没有开启:GPS---导致请求超时。


--:在微信权限注入成功之后,分享好友,朋友圈,调用微信先关接口失败,无法加载配置的分享信息,分享后仍然是非定制的信息。

原因之一:


检查公众平台的接口权限,发现分享接口未获得权限。




拓展:

GPS: Global Position System

WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。

GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系

BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。


--:新的问题、困难。意味新的收获和进步!证明自己能力的步骤

--:明白陌生代码的实际意义。才能通过它进行分析和推理,继续使用它,来解决遇到的问题,...拓展.

--:关于回调函数的使用,apply,call

你可能感兴趣的:(H5,JS中使用微信、高德获取定位)