百度地图API 定位服务的一些问题

本地项目正常启动(http)

浏览器浏览器定位 getCurrentPositionIP定位 LocalCityH5浏览器定位
谷歌浏览器精确度不够,只能定位到市正常,精确到市无法使用
搜狗浏览器精确度不够,只能定位到市正常,精确到市无法使用
火狐浏览器http IP地址下无法使用正常,精确到市localhost下正常

谷歌和搜狗浏览器
在这里插入图片描述
H5浏览器定位
用IP地址访问
在这里插入图片描述

在这里插入图片描述

用localhost访问
在这里插入图片描述
在这里插入图片描述

火狐浏览器
在这里插入图片描述
H5浏览器定位
用IP地址访问
在这里插入图片描述
在这里插入图片描述
用localhost访问
在这里插入图片描述

本地项目以https启动,不用证书

如何以https启动?

creat-react-app项目

修改pakage.json文件
需要安装 cross-env yarn add cross-env
同下
在这里插入图片描述

umi项目

修改配置文件,.umirc.ts或者config.js
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

浏览器百度地图浏览器定位 getCurrentPosition百度地图IP定位 LocalCityH5浏览器定位
谷歌浏览器精确度不够,只能定位到市正常,精确到市访问不了
搜狗浏览器精确度不够,只能定位到市正常,精确到市访问不了
火狐浏览器正常,精确到门牌号正常,精确到市正常,精确到市门牌号

谷歌和搜狗浏览器
在这里插入图片描述
谷歌浏览器
在这里插入图片描述
搜狗浏览器
在这里插入图片描述

火狐浏览器
在这里插入图片描述
在这里插入图片描述

本地项目https启动,用本地自签名CA证书认证

怎么用本地自签名CA证书认证 ?
window umi react项目使用mkcert自签名证书实现本地https访问

浏览器百度地图浏览器定位 getCurrentPosition百度地图IP定位 LocalCityH5浏览器定位
谷歌浏览器精确度不够,只能定位到市正常,精确到市访问不了
搜狗浏览器精确度不够,只能定位到市正常,精确到市访问不了

谷歌和搜狗浏览器
在这里插入图片描述

在这里插入图片描述
火狐浏览器不支持本地自签CA证书
在这里插入图片描述

代码

  // 原生浏览器定位,得到GPS坐标,原始的GPS WGS-84系坐标
  const handelBrowserLocation = () => {

    const option = {
      enableHighAccuracy: true, //设置提升定位的精准度
      maximumAge: 0,  //禁用缓存
      timeout: 30000  //开始获取定位信息30秒后超时
    };

    const showPosition = (position) => {
      var lat = position.coords.latitude;  //获取纬度
      var lng = position.coords.longitude;  //获取经度
      console.log(position);
      console.log("您的经度是:" + lng + ",纬度是:" + lat);

      gpsToBMap(lng, lat);
    };

    const showError = (error) => {
      console.log(error);
      switch (error.code) {
        case error.PERMISSION_DENIED:
          alert("您拒绝了地理定位服务");
          break;
        case error.POSITION_UNAVAILABLE:
          alert("无法获取您的位置");
          break;
        case error.TIMEOUT:
          alert("超时");
          break;
      }
    };

    if (navigator.geolocation) {  //判断是否支持Geolocation API
      navigator.geolocation.getCurrentPosition(showPosition, showError, option)
    }
  };


  // GPS坐标 => 百度坐标
  const gpsToBMap = (lng, lat) => {

    const BMapPoint = new BMap.Point(lng, lat);

    //坐标转换完之后的回调函数
    const translateCallback = function (data){
      if(data.status === 0) {
        // handleDistance(data.points[0])
      }
    };

    var convertor = new BMap.Convertor();
    var pointArr = [];
    pointArr.push(BMapPoint);
    convertor.translate(pointArr, 1, 5, translateCallback)
  };


  // 百度地图浏览器定位
  const handelBdBrowserLocation = () => {
    const Geo = new BMap.Geolocation(); // 创建地址解析器实例

    const successCallback = function(res) { // 会弹窗获取定位权限
      if(this.getStatus() === BMAP_STATUS_SUCCESS){
        console.log('百度地图浏览器定位');
        console.log(res);
        // handleDistance(res.point);
      }
      else {
        console.log('百度地图IP定位');
        handelIpLocation();
      }
    };

    const options = {
      enableHighAccuracy: true, // 是否要求浏览器获取最佳效果
      timeout: 5000,            // 超时事件,单位为毫秒。默认为10秒
      maximumAge: 0,            // 允许返回指定事件内的缓存结果,单位为毫秒。如果为0,则每次请求都获取最新的定位结果。默认为10分钟
    };

    Geo.getCurrentPosition(successCallback, options);
  };


  // IP定位,城市级别定位
  const handelIpLocation = () => {

    function myFun(result){
      console.log(result);
      const cityName = result.name;
      // addressToPoint(cityName);
    }

    const myCity = new BMap.LocalCity();
    myCity.get(myFun);
  };
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值