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; 
      } 
    }
    	
    

    注意事项

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

  • 相关阅读:
    EMF介绍系列(一、EMF与MDA)
    EMF介绍系列(四、枚举类型、自定义类型和Map)
    使用osgi.util.NLS简化资源文件访问
    2012 定制化产品探讨(周金根).pdf
    敏捷个人理念与模型PPT及今年唯一一次的公开线上课堂
    生活:父与子三亚行
    与北邮学子交流成长,敏捷个人总体介绍 PPT
    敏捷个人教你如何制作2012生活看板
    敏捷个人架构图 V1.3
    敏捷个人微刊封面及敏捷个人使命和加入社区方式
  • 原文地址:https://www.cnblogs.com/chenwan1218/p/14297098.html
Copyright © 2011-2022 走看看