精华内容
下载资源
问答
  • 百度地图定位不准的问题
    千次阅读
    2020-06-01 20:17:05

    百度地图定位不准

    问题描述

    在使用百度定位服务时,无论室内还是室外,位置总是不准。在回调处打印日志发现百度地图定位一直在用基站定位,可我配置的是高精度定位。

    原因

    最后找到原因,我在使用百度地图定位时只想获取单次定位,用完之后立马关闭定位想节省资源。而gps定位连接卫星需要几秒钟的时间(看手机好坏),在这期间百度地图定位会给你基站定位,于是我不断的mLocationClient.start(); mLocationClient.stop();,一直获取基站定位导致不准。

    解决方法

    调用mLocationClient.start(); 后用 mLocationClient.requestLocation();获取后面的定位,这样虽然会导致gps常开导致电量消耗极快,但是为了准确的定位木有办法。鱼和熊掌不可兼得。

    更多相关内容
  • 高德地图的集成还是比较简单的,而且用法都有Demo,下面我就说一说定位不准确的原因吧1.获取SHA1值出错,这个很重要,如果SHA1值不对的话,高德SDK是不会告诉你的,而且最可恶的是还能运行,位置就会不准确甚至偏差很...

    高德地图的集成还是比较简单的,而且用法都有Demo,下面我就说一说定位不准确的原因吧

    1.获取SHA1值出错,这个很重要,如果SHA1值不对的话,高德SDK是不会告诉你的,而且最可恶的是还能运行,位置就会不准确甚至偏差很大。

    因为你获取的sha1值可能是默认的debug.keystore,而高德要求的是你打包签名后的自定义的SHA1值(JKS文件),如何查看keystore文件路径:AndroidStudio-->Build-->Generate Signed APK-->Key Stroe path就是签名打包后的路径,用它才行。也就是说,你的应用先签名打包,然后才能获取相匹配的SHA1值,进而获取准确的位置。

    获取SHA1值

    首先,绝大多数App在调试时使用的签名文件(debug keystore)和最终App发布使用的签名文件(自定义的keystore)是不同的,不同签名文件的SHA1值也是不同的。下面提供几种获取SHA1值的方式:

    通过Android Studio编译器获取SHA1第一步、打开Android Studio的Terminal工具

    第二步、输入命令:keytool -v -list -keystore keystore文件路径(AndroidStudio-->Build-->Generate Signed APK-->Key Stroe path就是签名打包后的路径)第三步、输入Keystore密码

    SHA1 fingerprint使用 keytool(jdk自带工具)获取SHA1,按照如下步骤进行操作

    1.运行进入控制台。开始-搜索里面输入cmd按回车

    2.在弹出的控制台窗口中输入 cd .android定位到

    3.继续在控制台输入命令。

    debug.keystore(默认):命令为:keytool -list -v -keystore debug.keystore自定义的 keystore:命令为:keytool -list -v -keystore apk的keystore(AndroidStudio-->Build-->Generate Signed APK-->Key Stroe path就是签名打包后的路径)如下所示:

    继续在控制台输入命令

    提示输入密钥库密码,编译器提供的debug keystore默认密码是 android,自定义签名文件的密码请自行填写。输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取 SHA1值,如下图所示:

    Sha1值

    说明:keystore文件为 Android签名证书文件。

    2.第二种原因:未开启高精度模式

    在开始定位的方法里开启高精度模式

    option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);2.第二种原因:导包错误,忘记添加依赖

    ok之后,到官网下载高德SDK(http://lbs.amap.com/api/android-sdk/download/),我这边全部都下载了,解压后,得到一个 AMap3DMap_xxxxx(版本号).jar文件和一个 armeabi文件夹,之后,(一)将jar包拷贝到你项目的libs目录下.(二)在 main目录下创建文件夹 jniLibs (如果有就不需要创建了),将armeabi文件夹复制到这个目录下,如果已经有这个目录,将下载的 so库复制到这个目录即可.Studio配置工程

    别忘了添加File依赖:3.第三种原因:忘记申请权限或权限不全,参照demo把权限全都加上就可以了

    最后别忘了在清单文件中配置key:最后祝写代码愉快!

    展开全文
  • 确保你的运行环境正常(直接使用百度地图定位是否准确)以及代码没有基本逻辑错误使用百度坐标拾取器拾取你的目标位置,同时输出你代码里获取的坐标,两相比较排查错误考虑使用BMap.Convertor()进行坐标转换(参见下文...

    请按照如下步骤排查你的代码:确保你的运行环境正常(直接使用百度地图看定位是否准确)以及代码没有基本逻辑错误

    使用百度坐标拾取器拾取你的目标位置,同时输出你代码里获取的坐标,两相比较排查错误

    考虑使用BMap.Convertor()进行坐标转换(参见下文第一种方式)

    下面是关于这个问题的一些延伸

    设备获取坐标转换到map后不准确的原因:首先由于国家的保密政策,真实地理坐标是无法获取的,你所能得到的坐标都是经过加密插件(国家要求)出来的,国内的这套加密后的坐标系统被称为火星坐标系

    然后我们需要明白的是,这个火星坐标在调用第三方地图进行绘制的时候是需要进行坐标转换的,这是因为不同的地图服务提供方有着其自己的坐标解析方式甚至是自己的坐标系,所以通过GPS设备获取的坐标需要经过所使用地图服务的转换才能正确定位

    如此我们就能得到解决思路:第一种方式为调用浏览器自身接口(NavigatorGeolocation.geolocation)后,再调用第三方map服务(百度地图等)提供的转换接口Convertor()转换坐标,最后进行绘制

    第二种方式为使用第三方map服务提供的经过封装的定位API,一般都能做到获取位置后直接进行绘制(注意需要设置偏移量进行偏移校准,官网示例都有的)

    相关案例关键代码:

    我一般在项目里使用高德地图和百度地图,以此为例:第一种方式+百度地图:

    //绘制

    initBMap(BMap,position) {

    let coords = position.coords;

    let ggPoint = new BMap.Point(coords.longitude,coords.latitude);

    //地图初始化

    let bm = new BMap.Map("map");

    bm.centerAndZoom(ggPoint, 18);

    bm.addControl(new BMap.NavigationControl());

    setTimeout(()=>{

    let convertor = new BMap.Convertor();

    let pointArr = [];

    pointArr.push(ggPoint);

    convertor.translate(pointArr, 1, 5, data => {

    if(data.status === 0) {

    let marker = new BMap.Marker(data.points[0]);

    bm.addOverlay(marker);

    let label = new BMap.Label("您的位置",{offset:new BMap.Size(20,-10)});

    marker.setLabel(label); //添加百度label

    bm.setCenter(data.points[0]);

    }

    })

    }, 1000);

    }第二种方式+高德地图:

    //解析定位结果

    onComplete(data) {

    var str=['定位成功'];

    str.push('经度:' + data.position.getLng());

    str.push('纬度:' + data.position.getLat());

    if(data.accuracy){

    str.push('精度:' + data.accuracy + ' 米');

    }//如为IP精确定位结果则没有精度信息

    str.push('是否经过偏移:' + (data.isConverted ? '是' : '否'));

    document.getElementById('tip').innerHTML = str.join('');

    }

    //解析定位错误信息

    onError(data) {

    document.getElementById('tip').innerHTML = '定位失败';

    }

    initAMap(AMap) {

    let amap = new AMap.Map('map', {

    resizeEnable: true,

    });

    amap.plugin(["AMap.ToolBar"],()=>{

    amap.addControl(new AMap.ToolBar());

    });

    amap.plugin('AMap.Geolocation',()=>{

    let geolocation = new AMap.Geolocation({

    enableHighAccuracy: true,//是否使用高精度定位,默认:true

    timeout: 10000,          //超过10秒后停止定位,默认:无穷大

    buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)

    zoomToAccuracy: true,      //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false

    buttonPosition:'RB'

    });

    amap.addControl(geolocation);

    geolocation.getCurrentPosition();

    AMap.event.addListener(geolocation, 'complete', this.onComplete);//返回定位信息

    AMap.event.addListener(geolocation, 'error', this.onError);      //返回定位出错信息

    });

    }

    补充说明:

    上面的代码仅仅提供解决思路,请勿直接copy,善用API:关于坐标系加密的官方解释:百度地图--使用须知、高德地图常见问题--坐标转换

    第三方地图封装后的地理位置获取API:百度地图、高德地图

    原生坐标转换为第三方地图坐标示例接口:百度地图、高德地图

    That's all...

    展开全文
  • 之前项目要用在线地图展示一些数据,...可是后来客户说定位不准,于是就开始了测试排查之路 经过测试发现地图缩放级别到最大的时候的定位展示是较为准确的,随着缩放级别的变小,标记的定位点也越来越跑偏了,这我.

    之前项目要用在线地图展示一些数据,无非就是加个mark或者加个点击mark展示infoWindow数据这些,按照官方文档比葫芦画瓢就做完了

    后来又要加个定位,找了找文档:https://lbs.qq.com/webApi/component/componentGuide/componentGeolocation 发现这个貌似可以,于是就加上了。可是后来客户说定位不准,于是就开始了测试排查之路

    经过测试发现地图缩放级别到最大的时候的定位展示是较为准确的,随着缩放级别的变小,标记的定位点也越来越跑偏了,这我怎么解决啊,这是人家的api啊,没办法,只能询问大佬了

    经过大佬的一顿排查,发现是vue项目中的text-align属性设置为center的缘故,于是将app.vue中的text-align去掉之后就准确了

    展开全文
  • android 百度地图定位不准问题

    千次阅读 2020-01-08 17:40:25
    近日在学习Android开发时,《第一行代码》第十一章基于位置服务内容非常详尽,但是最后运行程序时发现实际位置与地图中标识位置存在较大误差,搜索发现因为使用的坐标偏移标准不同: WGS-84:是国际标准,GPS坐标...
  • 百度地图定位不准

    千次阅读 2017-03-21 22:07:33
    在android的百度地图开发中,有一个很奇怪的现象,定位功能可以实现,可就是与实际位置有偏差,但是此时你通过调试信息发现,定位的输出信息与实际位置基本吻合,而显示在地图上的却是另外一个地址,想知原因看下方...
  • 将js引用地址中的key替换,如果是PC端,请允许浏览器定位
  • 更改默认坐标系“gcj02”为”bd0911” option.setCoorType("bd0911"); ...初始化位置源代码: ...private void initLocation(){ ... LocationClientOption option = new ...//发起定位请...
  • 所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)[内容] 在APP端重复调用getlocation函数,手机都没动,每隔3s获取一起位置,经纬度都一样。...
  • 百度地图js定位不准

    2021-06-04 06:58:42
    浏览器H5定位即navigator.geolocation,通过IP或者域名的形式,如:http://172.21.3.82:8080 和http://b.cunzhang.com进行访问时,调用navigator.geolocation.getCurrentPosition,打开控制台,你会发现有以下错误...
  • 在小程序中使用map组件,可以调用腾讯地图的API,将一些固定的点标记到地图界面上,点的经纬度获取是通过android端百度地图API获取的,所以此时将这个位置点信息直接设置上去会出现偏差,而且偏差还比较大 ...
  • APP调起地图导航出现偏差 是什么问题造成的呢 一:可能是模糊定位造成的 二:也有可能 改变了经纬度的数据 解决思路如下 先了解一下调起高德APP的各个参数是什么 百度地图 参数如下: 参数名称 描述 是否必选 ...
  • uniapp h5 uni.getLocation地图定位不准

    千次阅读 热门讨论 2020-02-14 13:16:41
    只需要将type换成gcj02就可以了,wgs84 h5上定位不精确 uni.getLocation({ type: 'gcj02', altitude: true,
  • 今天大叔又给我讲百度地图定位不准。我查了一下api,用了官方给出的这样一组函数。1 //创建查询对象2 var geolocation = newBMap.Geolocation();34 //调用getCurrentPosition函数5 geolocation.getCurrentPosition...
  • vue环境下使用百度地图定位发现,地图定位不准确,有偏差,带红叉的是我们赋值的没有转换坐标的定位,对号是我们转换了坐标以后的定位,相对来说转换的坐标是符合我们的定位要求的,为什么会出现这样的差别呢,那先...
  • 纠正高德地图定位位置偏差案例,只需要自己在高德开发中心申请的key替换到我的key,一运行就会弹出alert(经纬度)
  • 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码。 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什么吗?用第一种或者第...
  • 最近在做Vue项目中定位时,发现定位总有偏差,查阅资料后发现用navigator.geolocation.getCurrentPosition取到的经纬度属于WGS84坐标,并能直接用在百度地图的 构建map的point中,需要做转换。 转换前代码(贴上...
  • 高德地图定位JS API不准确问题

    千次阅读 2020-12-24 15:13:54
    到网上找了个解决高德偏移量的代码https://blog.csdn.net/woshimu...我的是ip定位 转换过的定位准确了this.map.plugin('AMap.Geolocation', function () {geolocation = new AMap.Geolocation({enableHighAccuracy...
  • 完全免费,下载直接可以运行使用,本人亲测,完美解决定位和高德地图调用问题
  • 微信端H5使用百度地图定位获取当前位置安卓定位不准的问题解决如下:使用微信端定位,签名方法看微信接口文档:`传入坐标实现公交导航function getMap(pointLng,pointLat,site) {wx.getLocation({type: 'wgs84',...
  • 求怎么解决 定位的经纬度有误差 而且还挺大的 怎么解决 求指导
  • 利用腾讯定位获取自己当前的位置
  • ios 百度地图定位

    2018-10-16 16:26:50
    该项目从申请百度秘钥,到百度sdk集成 实现定位 反地理编码功能
  • 问题:微信服务号使用百度地图sdk获取用户实时定位时,出现Android用户定位不准确,与实际定位偏差较大,ios用户定位正常 let geolocation = new BMap.Geolocation(); geolocation.enableSDKLocation(); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,550
精华内容 8,620
关键字:

地图定位不准