手机微信微信公众号开发设计的地方图精准定位

有关自然环境:手机微信微信公众号+百度搜索地形图

要求:必须在网页页面上完成,点一下落图按键 》精准定位当今部位(获得经伟度) 》根据百度搜索地形图显示信息

內容:

做这一作用以前,仍未触碰过百度搜索地形图也有手机微信微信公众号开发设计这类的,因此就算突袭学习培训了一下,都不太掌握。

1.手机微信插口精准定位+百度搜索地形图显示信息部位(取得成功)

刚开始做的情况下,因为手机微信仅仅刚触碰,尽管了解手机微信有精准定位的插口,可是還是先去试着了百度搜索地形图的精准定位和h5的精准定位,結果自然是不成功(后边会小结一下不成功的工作经验),最终试着的应用手机微信微信公众号精准定位插口获得当今座标+百度搜索地形图显示信息部位的方法才取得成功拿下,

 //这便是手机微信获得自然地理部位的插口,官方网文本文档,百度搜索材料一大堆

    function getwxlocal(){

        wx.getLocation({

            success: function (res) {

                var point=new BMap.Point(res.longitude , res.latitude);

                //应用百度搜索插口对h5精准定位座标开展座标变换0-》4

                BMap.Convertor.translate(point,0,translateCallback);

                //alert( 获得自然地理部位取得成功,经伟数为:( + res.latitude + , + res.longitude + ) );

                //alert(JSON.stringify(res));

            },

            cancel: function (res) {

              $.alert( 客户回绝受权获得自然地理部位 , 提醒

            } 

         });

    }

//座标变换完以后的回调函数涵数方式

    function translateCallback(point) {

        initMap(point.lng,point.lat);//用到到的经伟度原始化地形图

  }

2.百度搜索地形图的api开展即时精准定位(不成功)

    检测碰到了一些难题:

  (1)精准定位部位偏位比较严重(房间内偏位-一切正常)

   尽管不太掌握地形图,可是一见到作用要求的情况下,就想起了应用百度搜索地形图的api开展精准定位,第一次点一下按键,垮。。。取得成功了,能够精准定位,可是偏的好几百米,偏了好几百米,觉得挺比较严重的,拼了命科学研究各种各样方式,甚么百度搜索的纠偏插口,纠偏优化算法,一点用都没有。

     咋办啊,愁去世了,跟一个朋友谈起的情况下,回答竟然是一切正常的,手机上的精准定位的根据通讯卫星也有通信基站的甚么的(掌握很少),因此在房间内开展检测的情况下,偏位是很一切正常的,行吧,尽管很烦闷,可是了解缘故了。之后在户外检测的确一切正常,这一难题算作处理了。

(2)没法开展第二次精准定位(app才有即时精准定位),(可是假如开启手机上上的地形图app,后台管理运作,微信公众号内的即时精准定位就彻底一切正常了)

  一刚开始精准定位完,没发觉难题,可是在回家了的道上,我开着手机微信,开启网页页面,按键那麼一按,难题出去了,咋還是企业的部位,一直刷一直刷,沒有用還是企业的部位,没法,舍弃了,准备回企业再看一下状况,已过好多个钟头,心力月经来潮,精准定位按键一按,取得成功了。要喷血啊,它是咋件事情,刚开始瘋狂搜集资料,百度搜索没寻找,Google没寻找,每一次精准定位完,必须好长时间才能够再精准定位一次,这显而易见不是行的。找来找去,在片言只语中发觉,一句话,百度搜索地形图只适用在app程序中完成即时精准定位,在网页页面上只有是过好长时间才可以精准定位一次(自然现在我都不了解确实假的?),总之我是完成不上,暂且当他是确实。那应用百度搜索地形图完成即时精准定位的方式,就沒有用了。(本方式宣布不成功)

百度搜索精准定位编码 (精准定位一次后,很久才可以精准定位一次)//百度搜索精准定位当今部位 --与h5精准定位相近(依据h5精准定位做的)

    var geolocation = new BMap.Geolocation();

    function getLocal(){

        geolocation.getCurrentPosition(function(r){

            if(this.getStatus() == BMAP_STATUS_SUCCESS){

                initMap(r.point.lng,r.point.lat);//精准定位完获得经伟度,原始化地形图

            } else {

                alert( failed +this.getStatus());

            }       

        },{uracy: true})

    } 

3.h5精准定位完成即时精准定位(不成功)

百度搜索地形图即时精准定位的方式不成功后,就刚开始找别的方式了,百度搜索了一下,h5精准定位的方式事例一大堆,开心了一下,还认为有处理计划方案了,可是最后還是心寒了。

因为h5的精准定位和百度搜索精准定位很类似(在网上是说百度搜索精准定位是依据h5精准定位做的),总之是不成功了,与百度搜索精准定位一样过好长时间才可以完成一次精准定位,(一样也是开启手机上上的地形图app,即时精准定位便可以完成)

//h5精准定位编码

function getLocation() {

if (navigator.geolocation) {

navigator.geolocation.getCurrentPosition(showPosition, showError);

} else {

       str= Geolocation is not supported by this browser. //访问器不兼容精准定位

}   }

function showPosition(position) {

      str = Latitude: + position.coords.latitude+ br / Longitude: + position.coords.longitude;//经伟度

}

function showError(error) {

switch (error.code) {

case error.PERMISSION_DENIED:

    str= User denied the request for Geolocation. //客户不容许自然地理精准定位

    break;

case error.POSITION_UNAVAILABLE:

    str= rmation is unavailable. //没法获得当今部位

    break;

case error.TIMEOUT:

    str= The request to get user location timed out. //实际操作请求超时

    break;

case error.UNKNOWN_ERROR:

    str= An unknown error occurred. //不明不正确

    break;

}   }

4.h5追踪精准定位完成即时精准定位(试着不成功,凑合可一用)

  百度搜索和h5精准定位不成功后,突发性奇想应用h5的追踪精准定位完成,追踪精准定位大约每过几十秒全自动精准定位一次,可是我想的作用是点一下按键采用精准定位,因此想根据追踪精准定位看能否完成,大约想想好多个计划方案:

(1)点一下精准定位按键,删掉当今追踪精准定位,再次建一个,随后精准定位,可是跟一般精准定位一样不成功了,還是只有几十秒精准定位一次

(2)追踪精准定位在后台管理运作,每精准定位一次,把座标存到一个自变量里边,点一下精准定位按键的情况下,立即去取座标,随后精准定位显示信息到百度搜索地形图上,自然这类方式尽管還是几十秒才可以精准定位一次,可是在必须的情况下去取座标,且几十秒的時间,人大约也移动不上多远,考虑基本的要求是充足了,可是想想還是清除,觉得用在即时精准定位上還是很不符合适。

//h5追踪精准定位编码

    function getLocal(){

        if(loc!=null){  loc=null;  }

        loc=window.navigator.geolocation;

        if (loc) {

            if(watchID!=null){ watchID=null; }

            watchID=loc.watchPosition(showPosition,showError);//h5追踪精准定位

             if(currentID!=null){ currentID==null;   }

            //h5当今部位精准定位

            currentID=loc.getCurrentPosition(showPosition,showError,{provider: baidu  

        }else {

            alert( 该访问器不兼容精准定位。

        } 

    }