zoukankan      html  css  js  c++  java
  • 关于百度地图js api的getCurrentPosition定位不准确的解决方法

    百度地图官方获取当前位置

    var geolocation = new BMap.Geolocation();
    geolocation.getCurrentPosition(function(r) {
      if (this.getStatus() == BMAP_STATUS_SUCCESS) {
        //位置经纬度
        nowPointLng = r.point.lng;
        nowPointLat = r.point.lat;
        point = new BMap.Point(r.point.lng, r.point.lat);
          ......   } else {      alert('failed' + this.getStatus());   } }, {   enableHighAccuracy: true })

    解决方法

    使用H5的api获取GPS坐标,把得到的结果用百度的转换坐标的api去转换一下

    代码

    getLocation();	
    // H5获取当前位置
    function getLocation(){ 
      if (navigator.geolocation){ 
        navigator.geolocation.getCurrentPosition(showPosition,showError); 
      }else{ 
        alert("浏览器不支持地理定位。"); 
      } 
    }
    // 获取用户经纬度
    function showPosition(position){
      //GPS经纬度
      let x = position.coords.latitude;
      let y = position.coords.longitude;
      var gpsPoint = new BMap.Point(y, x);
    
      setTimeout(function(){
        var convertor = new BMap.Convertor();
        var pointArr = [];
        pointArr.push(gpsPoint);
        convertor.translate(pointArr, 1, 5, translateCallback)
      }, 1000); 
    }
    // 将GPD经纬度转为百度地图经纬度
    function translateCallback(data){
      point = data.points[0];
      nowPointLng = data.points[0].lng;
      nowPointLat = data.points[0].lat;
      initMap();
    }
    // 报错信息
    function showError(error){ 
      switch(error.code) { 
        case error.PERMISSION_DENIED: 
          alert("定位失败,用户拒绝请求地理定位"); 
          break; 
        case error.POSITION_UNAVAILABLE: 
          alert("定位失败,位置信息是不可用"); 
          break; 
        case error.TIMEOUT: 
          alert("定位失败,请求获取用户位置超时"); 
          break; 
        case error.UNKNOWN_ERROR: 
          alert("定位失败,定位系统失效"); 
          break; 
      } 
    }
    	
    

    注意事项

    转换的方法不能立即执行需延迟加载

  • 相关阅读:
    Python(八)进程、线程、协程篇
    Python(七)Socket编程、IO多路复用、SocketServer
    Python(六)面向对象、异常处理、反射、单例模式
    Python并发编程之多进程
    ORM框架SQLAlchemy
    Python并发编程之IO模型
    Python并发编程之同步异步and阻塞非阻塞
    二分查找
    插入排序
    单向链表
  • 原文地址:https://www.cnblogs.com/chenwan1218/p/14297098.html
Copyright © 2011-2022 走看看