美文网首页
小程序的定位问题

小程序的定位问题

作者: CRJ997 | 来源:发表于2019-03-09 10:14 被阅读0次

    小程序首次进入时定位到北京的问题:
    写小程序时发现,在onready函数中就算使用了moveToLocation函数,但是还是出现没有定位的情况,因此看了一下,貌似是因为onready函数不保证节点一定会渲染完成的问题。所以就试了一下下面的方法:
    使用setInterval函数进行小程序内部dom节点的轮询,代码如下:

    let that=this;
        let timer = setInterval(function (){
          console.log("正在检测");
            let test = query.select("#mainContainer").boundingClientRect(function(rect){
                if(rect!==null){
                  console.log("检测到已经渲染完成");
                  that.data.mapCtx = wx.createMapContext('mapView')
                  that.data.mapCtx.moveToLocation();
                  that.setData({
                    scale: 17
                  });
                  clearInterval(timer);
                }
            }).exec();
        },200);
    

    这样子当检测到dom节点渲染完成的时候,就可以进行定位了。
    但是有个问题
    小程序在已经定位到当前位置的情况下,短时间内重新使用moveToLocation函数,会出现离开当前位置,到map组件默认的开始位置的情况。而setInterval由于是定时的在处理队列中加入处理函数,所以会触发多次调用moveToLocation函数。
    附带一个参考链接setinterval函数和setTimeout函数详解
    导致最终定位结果还是在北京,觉得很尴尬....如果在onload函数中进行设置,又稍微有点延迟。

    后来发现还是getLocation这个接口比较好用,直接通过这个接口的回调值的latitude和longitude值设置map组件的longitude和latitude值,就可以进行定位了,不过Map组件需要设置show-location属性为true

    相关文章

      网友评论

          本文标题:小程序的定位问题

          本文链接:https://www.haomeiwen.com/subject/ticddqtx.html